【发布时间】:2018-03-15 12:19:08
【问题描述】:
我正在尝试创建一个表单,用户可以在其中使用多个过滤器搜索数据库。我有两个问题:如何使用多个数组查询数据库,因为每个过滤器将作为结果页面上的数组存储在一个变量中。第二个是:我如何确保如果用户将过滤器留空,则过滤器不会进入查询?也不需要用户在前两个文本条目中输入任何内容。谢谢。
<form action="results.php" method="post">
<table id="name-inputs">
<tr>
<td>Common Name:</td>
<td><input type="text" name="commonName" class="text-input" maxlength="100"></td>
</tr>
<tr>
<td>Latin Name:</td>
<td><input type="text" name="latinName" class="text-input" maxlength="100"></td>
</tr>
</table>
<div id="plantType-container">
<ul>
<li class="listing-heading">Plant Type</li>
<li class="listing"><input type="checkbox" name="plantType[]" value="Perennial"> Perennial</li>
<li class="listing"><input type="checkbox" name="plantType[]" value="Annual"> Annual</li>
<li class="listing"><input type="checkbox" name="plantType[]" value="Tree"> Tree</li>
<li class="listing"><input type="checkbox" name="plantType[]" value="Shrub"> Shrub</li>
<li class="listing"><input type="checkbox" name="plantType[]" value="Herb"> Herb</li>
</ul>
</div>
<div id="lighting-container">
<ul>
<li class="listing-heading">Lighting</li>
<li class="listing"><input type="checkbox" name="lighting[]" value="Sun"> Sun</li>
<li class="listing"><input type="checkbox" name="lighting[]" value="Sun/Part-Sun"> Sun/Part-Sun</li>
<li class="listing"><input type="checkbox" name="lighting[]" value="Part-Sun/Shade"> Part-Sun/Shade</li>
<li class="listing"><input type="checkbox" name="lighting[]" value="Shade"> Shade</li>
</ul>
</div>
<div id="water-container">
<ul>
<li class="listing-heading">Water</li>
<li class="listing"><input type="checkbox" name="water[]" value="Average"> Dry</li>
<li class="listing"><input type="checkbox" name="water[]" value="Dry/Average"> Dry/Average</li>
<li class="listing"><input type="checkbox" name="water[]" value="Average"> Average</li>
<li class="listing"><input type="checkbox" name="water[]" value="Wet/Average"> Wet/Average</li>
<li class="listing"><input type="checkbox" name="water[]" value="Wet"> Wet</li>
</ul>
</div>
<div id="foilage-container">
<ul>
<li class="listing-heading">Foilage</li>
<li class="listing"><input type="checkbox" name="foilage[]" value="Decidous"> Decidous</li>
<li class="listing"><input type="checkbox" name="foilage[]" value="Evergreen"> Evergreen</li>
</ul>
<ul>
<li class="listing-heading">Deer Resistant</li>
<li class="listing"><input type="checkbox" name="deer-res[]" value="Yes"> Yes</li>
<li class="listing"><input type="checkbox" name="deer-res[]" value="No"> No</li>
</ul>
</div>
<div id="attracts-container">
<ul>
<li class="listing-heading">Attracts</li>
<li class="listing"><input type="checkbox" name="butter/birds[]" value="Butterflies"> Butterflies</li>
<li class="listing"><input type="checkbox" name="butter/birds[]" value="Hummingbirds"> Hummingbirds</li>
<li class="listing"><input type="checkbox" name="butter/birds[]" value="Butterflies/Hummingbirds"> Butterflies/Hummingbirds</li>
</ul>
</div>
<div id="height-container">
<ul>
<li class="listing-heading">Height</li>
<li class="listing"><input type="checkbox" name="height[]" value='1-2"'> 1-2"</li>
<li class="listing"><input type="checkbox" name="height[]" value='3-5"'> 3-5"</li>
<li class="listing"><input type="checkbox" name="height[]" value='5-10"'> 5-10"</li>
<li class="listing"><input type="checkbox" name="height[]" value='10-20"'> 10-20"</li>
<li class="listing"><input type="checkbox" name="height[]" value="20'"> 20' +</li>
</ul>
</div>
<div id="color-container">
<ul>
<li class="listing-heading">Flower Color</li>
<li class="listing"><input type="checkbox" name="color[]" value="White"> White</li>
<li class="listing"><input type="checkbox" name="color[]" value="Pink"> Pink</li>
<li class="listing"><input type="checkbox" name="color[]" value="Red"> Red</li>
<li class="listing"><input type="checkbox" name="color[]" value="Blue"> Blue</li>
<li class="listing"><input type="checkbox" name="color[]" value="Orange"> Orange</li>
<li class="listing"><input type="checkbox" name="color[]" value="Yellow"> Yellow</li>
<li class="listing"><input type="checkbox" name="color[]" value="Purple"> Purple</li>
</ul>
</div>
<button type="submit" id="sButton">Submit</button>
</form>
<?php
$commonName = $_POST['commonName'];
$latinName = $_POST['latinName'];
$plantType = $_POST['plantType'];
$lighting = $_POST['lighting'];
$water = $_POST['water'];
$foilage = $_POST['foilage'];
$attracts = $_POST['attracts'];
$height = $_POST['height'];
$color = $_POST['color'];
?>
<?php
$con = new mysqli("localhost", "root", "root", "Plants");
if($con->connect_error()) {
echo "Connection Error: " . $con->connect_error();
} else {
$sql = "SELECT * FROM plants where plantType like '%$plantType%' AND lighting like '%$lighting%' AND water like '%$water%' AND foilage like '%$foilage%' AND attracts like '%$attracts%' AND height like '%$height%' AND color like '%$color%'";
$res=$con->query($sql);
echo "<table id='result-table'>";
while ($res = $con->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['commonName'] . "</td>";
echo "<td>" . $row['latinName'] . "</td>";
echo "<td>" . $row['plantType'] . "</td>";
echo "<td>" . $row['lighting'] . "</td>";
echo "<td>" . $row['water'] . "</td>";
echo "<td>" . $row['foilage'] . "</td>";
echo "<td>" . $row['attracts'] . "</td>";
echo "<td>" . $row['height'] . "</td>";
echo "<td>" . $row['color'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
【问题讨论】:
-
你知道你应该接受答案吗?