我有一个非常简单的形式:
<!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 :(得分:1)
你可以这样做
<?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;
}
}
?>
答案 1 :(得分:1)
您正在检查是否已发布“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”然后再清空。
另一件事:输入不应该在标签内,所以你应该:
<label for="myfield">My field :</label>
<input name="myfield" ... />
答案 2 :(得分:0)
你根本不应该使用elseif,因为它只传递其中一个语句,第一个实际上是你注意到的。请改用...
编辑:请参阅naincy gupta的答案,其中显示了我的意思: - )