PHP后期处理字段


PHP Post Working with Fields

我有一个非常简单的表单:

<!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;
}
?>

当我发布数据时,它只会取第一个选定项目的值。

我试着打破如果。。。elseif和做一些非常多余的陈述。

即:

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

这看起来真的很复杂,我不敢相信没有更简单的方法了。

我试过用开关。。。然而,案例得到了相同的结果。

我想要的是如果选择了两个过滤器会怎样?

如果三个都选了怎么办?

我如何才能正确地发布数据。

您正在检查是否张贴了"邮政编码",如果没有,是否张贴"产品"等…

您应该将"else-if"更改为"if":

<?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;
    }
}
?>

顺便说一句,您可以使用"if(!empty($_POST['myfield'])",而不是选中"isset"然后egal为空。

另一件事:输入不应该在标签内,所以你应该有:

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

你可以像一样完成

<?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;
        }
 }
?>

您根本不应该使用elseif,因为它只会传入其中一个语句,实际上是您注意到的第一个语句。请改用if。。。

编辑:参见naincy gupta的答案,它准确地表明了我的意思:-)