所以我试图为sql查询应用一个过滤器,该查询显示基于所选制造商的磁轮。
到目前为止,它为html表单生成了一个下拉列表,并应该使用$_POST将其传递回,然后应用于sql查询以重新显示页面。我有一些类似的工作,但它使用了一个数组和复选框,而不是这个表单中使用的选项>框
目前,它没有应用任何过滤器,实际上打破了生成要显示的轮子的循环。。。
// Getting manufacturer to create the filter list.
$filterManu = "SELECT DISTINCT manufacturer FROM wheels";
$filterManuResult = mysqli_query($db, $filterManu) or die("Error in Selecting " . mysqli_error($db));
// Applying the filtering
if (isset($_POST['manu'])) {
$option = $_POST['manu'];
$featuredsql = "SELECT * FROM wheels WHERE manufacturer = " . $option . " ORDER BY diam";
}
$featured = $db->query($featuredsql);
生成要从中选择的制造商列表并从表单中提交帖子的表单。
<form name="manuFilter" method="POST">
<div class="form-group"></div>
<select name="manu">
<option selected disabled>Select a manufacturer</option>
<?php while($rowManu = mysqli_fetch_assoc($filterManuResult)) : ?>
<option name="manu" value="<?php echo $rowManu['manufacturer']; ?>"><?php echo $rowManu['manufacturer']; ?></option>
<?php endwhile; ?>
</select>
<div class="form-group"></div>
<button type="submit" name="filterOptions" value="displayManu" class="btn btn-default btn-sm btn-primary"><i class="fa fa-pencil"></i> Apply</button>
</form>
有两件事需要更新:
$featuredsql = "SELECT * FROM wheels WHERE manufacturer = '" . $option . "' ORDER BY diam";<br>
(我添加了一个"'")
和选项采用以下语法:
<option value="option_value">bla bla bla
其中bla-bla-bla是名称
选项不应该具有名称属性;这可能是post值中断的唯一原因,尤其是因为选项名称与select相同。
我认为您对$featuredsql有问题。显示查询$featuredsql并检查它是否正常工作。