2014-09-23 52 views
0

工作,我有一個非常簡單的形式:PHP與後場

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<form method="post" action=""> 
<label>Filter By Zip Code: 
<input maxlength="5" name="zipcode" size="6" type="text" /></label> 
<label>Filter By Products: 
<select name="products"> 
    <option value="">Select Product</option> 
    <option value="jewelry">Jewelry</option> 
    <option value="homedecor">Home Decor</option> 
    <option value="kitchen">Kitchen</option> 
</select> </label> 
    <label>Filter By Materials: 
<select name="materials"> 
    <option value="">Select Material</option> 
    <option value="abs">ABS</option> 
    <option value="gold">Gold</option> 
    <option value="silver">Silver</option> 
</select> </label> 
<br> 
<input name="submit" type="submit" value="Submit" /> 
<input name="clear" type="submit" value="Clear" /> 
</form> 
<?php 
if (!isset($_POST['submit'])){ 
     echo "Nothing Selected"; 
} 
elseif(isset($_POST['zipcode']) && ($_POST['zipcode'] != "")) { 
$zip = $_POST['zipcode']; 
     echo "Zip data " . $zip; 
} 

elseif(isset($_POST['products']) && ($_POST['products'] != "")) { 
$products = $_POST['products']; 
     echo "Products data " . $products; 
} 
elseif(isset($_POST['materials']) && ($_POST['materials'] != "")) { 
$materials = $_POST['materials']; 
     echo "Materials data " . $materials; 
} 
?> 

當我發佈的數據,那麼只需要選擇的第一個項目的價值。

我試圖分手if ... elseif和做一些真正的多餘的陳述。

即:

elseif(isset($_POST['materials']) && ($_POST['materials'] != "") || ($_POST['products']) && ($_POST['products'] != "") || $_POST['zipcode']) && ($_POST['zipcode'] != "")) { 

這似乎真的複雜,我不能相信沒有一個簡單的方法。

我已經嘗試使用開關...案件,但是獲得相同的結果。

如果選擇兩個過濾器,我在尋找什麼?

如果所有三個選擇?

如何正確發佈數據?

+0

作爲你的代碼,用戶不能選擇多個過濾器。你的意思是使用選擇多個? – 2014-09-23 19:31:14

回答

1

如果「郵政編碼」張貼你檢查和如果不是,如果「產品「張貼,等等

你應該改變你的 」否則,如果「 s到 」當!「:

<?php 
if (!isset($_POST['submit'])) 
{ 
    echo "Nothing Selected"; 
} 
else 
{ 
    if(isset($_POST['zipcode']) && ($_POST['zipcode'] != "")) 
    { 
     $zip = $_POST['zipcode']; 
     echo "Zip data " . $zip; 
    } 
    if(isset($_POST['products']) && ($_POST['products'] != "")) 
    { 
     $products = $_POST['products']; 
     echo "Products data " . $products; 
    } 
    if(isset($_POST['materials']) && ($_POST['materials'] != "")) 
    { 
     $materials = $_POST['materials']; 
     echo "Materials data " . $materials; 
    } 
} 
?> 

順便說一句,你可以使用」 如果(空($ _ POST [」 myfield']))「而不是檢查」isset「,然後例如清空。

另一件事:輸入不應該在標籤裏面,所以你應該有:

<label for="myfield">My field :</label> 
<input name="myfield" ... /> 
4

你可以不喜歡它

<?php 
if (!isset($_POST['submit'])){ 
     echo "Nothing Selected"; 
} 
else { 
     if(isset($_POST['zipcode']) && ($_POST['zipcode'] != "")) { 
      $zip = $_POST['zipcode']; 
      echo "Zip data " . $zip; 
     } 

     if(isset($_POST['products']) && ($_POST['products'] != "")) { 
      $products = $_POST['products']; 
      echo "Products data " . $products; 
     } 
     if(isset($_POST['materials']) && ($_POST['materials'] != "")) { 
      $materials = $_POST['materials']; 
      echo "Materials data " . $materials; 
     } 
} 
?> 
+0

請注意,根據您打算如何處理這些數據,這可能是一個很大的安全漏洞。如果您計劃將其插入數據庫,請務必謹慎。在這種情況下你可能想閱讀關於SQL注入的內容。 – 2014-09-23 19:34:41

+0

您還應該使用empty()來檢查發佈的值是否爲空。 – 2014-09-23 19:36:15

0

你根本不應該使用ELSEIF的,因爲它只能在這些語句之一通過,第一居然你注意到。如果使用的,而不是...

編輯:見naincy Gupta的回答這說明正是我的意思:-)