2016-04-24 71 views
0

我試圖在這裏實現的是我假設有5個按鈕(不同的選項,它們使用jQuery和數據使用ajax發送一個接一個地顯示)。Php邏輯是否使用if if else條件或多態

<div id="div1"> 
<button value="1" class="div1button">1</button> 
<button value="2" class="div1button">2</button> 
<button value="3" class="div1button">3</button> 
<button value="4" class="div1button">4</button> 
</div> 
<div id="div2"> 
<button value="a" class="div2button">a</button> 
<button value="b" class="div2button">b</button> 
<button value="c" class="div2button">c</button> 
<button value="d" class="div2button">d</button> 
</div> 

現在,當用戶點擊該按鈕上DIV1 ... DIV2任何一個被顯示出來,點擊使用jQuery和SQL查詢傳遞使用AJAX執行按鍵值的2區是隱藏的.. 現在其執行查詢的PHP包含

$_GET['valDiv1'] 
$_GET['valDiv2'] 

其中VAL1定義的PHP檢查或不和2區的VAL後反之亦然獲得...問題是這裏....

我有5個div現在我需要檢查值的所有div的存在或只有1或2 ..等....如何解決這個問題? 若要檢查此我必須實現許多如果其他 LIKE :: 如果div1被定義...如果div1和div2被定義...做到這一點 ...做到這一點如果div1和div2和div3被定義... ...做點什麼 如果div2和div3和div5被定義爲

所以這就是我卡住的地方。

我是初學者請幫忙,有沒有更好的方法來實現我想要的?

解決

由於@Igor

$selected = array('val1' => null, 'val2' => null, ...); 
$selected['val1'] = $_GET['valDiv1']; 
$selected['val2'] = $_GET['valDiv2']; 
foreach($elements as $val => $key) { 
    if($val == 'val1' && $key == 'any') { 
     $sql = "SELECT * FROM details"; 
    } else { 
    if($key != null) { 
      if($key != 'any') { 
       if($i>0) { 
       $sql .= " AND $val='$key'"; 
       } else { 
       $sql = "SELECT * FROM details WHERE $val='$key'"; 
       $i++; 
       } 
      } 
     } 
    } 
} 
+0

如果你解釋你需要什麼這將有助於做而不是div1 div2 button1 button2。如果效果差異很小,則可以簡化所有內容,但如果每個按鈕都有一個非常具體的結果,那麼您將不得不使用一個案例或大量嵌套的if語句。 – Chris

+0

這裏不太清楚你的意思是多態。這是一個簡單的前提條件,在第2部分可被接受之前必須填寫第1部分的有效值之一?如果是這樣,你可能必須做每個步驟的查詢,如'SELECT ID FROM valid_values WHERE name IN(...)',其中最後一部分是值的列表。 – tadman

+0

@Chris ok謝謝,如果我使用很多嵌套,如果我的意思是15-20左右,會有問題嗎? –

回答

0

我相信有很多的方法來優化它。其中一人可能是不存儲所有的選擇在不同的變量,但在一個陣列,如:

$selected = array('val1' => null, 'val2' => null, ...); 
$selected['val1'] = $_GET['valDiv1']; 
$selected['val2'] = $_GET['valDiv2']; 
... 

而且檢查時,你可以做

if (array_search(null, $selected) === false) { 
    ... 
} 
+0

這就是我一直在想的!還有一個問題,如果我使用太多嵌套,如果其他問題會有什麼問題? –

+0

謝謝你的回答。這真的很有幫助! –