簡體   English   中英

PHP驗證:4 x 3可選下拉菜單

[英]PHP validation: 4 x 3 optional drop-downs

因此,我必須為以下情況編寫一個錯誤檢查解決方案:

  • 用戶有四個機會從三個下拉菜單中進行選擇:
    • 下拉菜單1:最多15個選項,外加空白(零)
    • 下拉菜單2:最多8個選項,外加空白(零)
    • 下拉菜單3:一律是3個選項,外加空白(零)
  • 所有這四個都是可選的,但是如果選擇了三個之一,則另兩個不能空白
  • 下拉選項的值是所有數字,(空白)為零
  • 下拉菜單1和下拉菜單2在其他三個組中均不能再次使用(即,如果用戶選擇輸入所有四個組,則必須有8個唯一值),但是在其他三個組中可以重復使用第三個選項團體

什么是最有效的方法

  • (a)檢查如果G1的DD1> 0,那么G1的DD2和DD3也> 0
  • (b)檢查如果G1的DD1 = 0,那么G1的DD2和DD3也= 0
  • (c)所有下拉菜單和上述各項的組合
  • (d)對於正確數量的選定組(即2、4、6或8),請檢查我最多有8個唯一數字,但忽略零,如果僅完成兩個組,則將有四個零。 )。

我知道elseif,但是我認為做上述(a)和(b)點的唯一方法是:

if($dd1g1>0 && ($dd2g1>0 && $dd3g1>0))
{
 echo "DD1 of G1 is not blank, and DD2 and DD3 are also not blank.";
 // allowed
}
else
{
 echo "DD1 of G1 is not blank, but DD2 and DD3 are blank";
 // fail
}

為了滿足兩個規則,我將不得不重復3 ^ 4(= 81)次。 有沒有更簡單的方法可以做到這一點?

這就是我最終得到的結果(出於簡潔和安全性進行編輯-是的,我確實在真實代碼中設置了注入安全性):

if($dd1g1==0 && $dd2g1==0 && $dd3g1==0)
{
 // Group 1 are all zero, so clear
 $sql = "UPDATE blah SET dd1g1='0', dd2g1='0', dd3g1='0' WHERE id='".$blah."'";
}
else
{
 // Something is not zero in Group 1, so check they are all NOT zero
 if($dd1g1>0 && $dd2g1>0 && $dd3g1>0)
 {
  // Group 1 are all complete, so check there are no dupes
  if($dd1g1==$dd1g2 || $dd1g1==$dd1g3 || $dd1g1==$dd1g4 || $dd2g1==$dd2g2 || $dd2g1==$dd2g3 || $dd2g1==$dd2g3)
  {
   // There is a duplicate
   echo "Duplicates detected";
   die();
  }
  else
  {
   // No duplicates, so update
   $sql = "UPDATE blah SET dd1g1='".$dd1g1."', dd2g1='".$dd2g1."', dd3g1='".$dd3g1."' WHERE id='".$blah."'";
  }
 }
 else
 {
  // Group 1 is incomplete
  echo "Incomplete selection";
  die();
 }
}

[然后針對第2、3和4組重復]

任何人都可以發現的孔?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM