我正在创建一个肉类包装搜索表单,用户可以使用多个表单和下拉框搜索不同的包。我有很多问题,但现在大部分问题已经排序,我只需要为下拉框创建一个“Any”搜索,并显示空文本框显示所有结果的问题。
目前,当用户发送搜索时,他们可能已输入其他一些文本框,但当其中一个表单为空时会自动显示所有结果。我想要它,所以当发送一个搜索并且一个框为空时,代码会忽略该表单,只检查那些内部有信息的表单。
这是我的测试代码(不是我当前的最终表单代码):
<body>
<?php
$con = mysql_connect("localhost", "root", "");
mysql_select_db("delyn_db", $con);
if (!$con)
{
die("Could not connect: " . mysql_error());
}
$descrip = mysql_real_escape_string($_POST['descrip']);
$sql = "SELECT * FROM delyn WHERE description LIKE '%" . $descrip . "%'";
$r_query = mysql_query($sql);
if ($descrip === "")
{
echo 'Null value';
}
while ($row = mysql_fetch_array($r_query))
{
echo '<br /> Description: ' . $row['description'];
}
?>
</body>
任何人对如何制止这个有任何想法?
编辑:对不起,这是我的HTML搜索框。上面的php就是值发送的地方。
<body>
<form action="form5null.php" method="post">
<label for="description">Description:</label> <input type="text" name="descrip">
<br>
<label for="trayheight">Trayheight:</label> <input type="text" name="height">
<br>
<label for="traywidth">Traywidth:</label> <input type="text" name="width">
<br>
<label for="traydepth">Traydepth:</label> <input type="text" name="depth">
<br>
<label for="trayrange">Trayrange:</label> <select name="trayrange">
<option value="BBQ">
BBQ
</option>
<option value="Dessert">
Dessert
</option>
<option value="Display">
Display
</option>
<option value="Meat">
Meat
</option>
<option value="Microwave">
Microwave
</option>
<option value="Party">
Party
</option>
<option value="Salad/Wet Pasta">
Salad/Wet Pasta
</option>
<option value="Snacks">
Snacks
</option>
<option value="Standard">
Standard
</option>
</select> <label for="traytype">Traytype:</label> <select name="traytype">
<option value="Open">
Open
</option>
<option value="Cavitised">
Cavitised
</option>
<option value="Lid">
Lid
</option>
<option value="Tray">
Tray
</option>
<option value="Coallition">
Coallition
</option>
<option value="Bowl">
Bowl
</option>
<option value="Hinge pack">
Open
</option>
<option value="Pot">
Pot
</option>
<option value="Base & Lid">
Base and Lid
</option>
<option value="Rectangular">
Rectangular
</option>
<option value="Specalist">
Specialist
</option>
</select>
<br>
<label for="trayshape">Trayshape:</label> <select name="trayshape">
<option value="Rectangular">
Rectangular
</option>
<option value="Oval">
Oval
</option>
<option value="Square">
Square
</option>
<option value="Insert">
Insert
</option>
<option value="Round">
Round
</option>
<option value="Open">
Open
</option>
</select>
<br />
<input type="submit" value="Submit">
</form>
</body>
答案 0 :(得分:0)
您是否尝试通过检查值是否为空/空(适用于哪个PHP)来限制SQL查询,如果没有填写任何内容则只运行查询?
e.g。 (伪代码)
if(box1.HasText || box2.HasText || box3.HasText)
{
RunTheSqlForForm1();
}
答案 1 :(得分:0)
将以下内容添加为所有下拉列表的第一个选项:
<option value="*">All</option>
然后使用我在重复问题中提供的SQL:
Make SQL ignore a specific search value if clicked in a dropdown?
Dirk Nachbar也给出了一个很好的答案。