使用PHP通过HTML表单选项选择器过滤MYSQL结果


filtering MYSQL results with HTML form option selector using PHP

所以我试图为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并检查它是否正常工作。