php - 如何使用产生正确产品的选择选项过滤 MySQL 查询

标签 php mysql

当然,我正在开发基于数据库的 CMS。 数据库结构如下(语言为荷兰语):

id, artikelnummer_fabrikant, breedte, diepte, hoogte, extrainfo, afmeting, kleur, merk, serie, producttype, omschrijving, prijsfinal, levertijd

在下一段代码中,我从数据库中获取所有信息并将其放入表中:

(抱歉,我没有使用 < 和 > 来创建标签,这个文本编辑器将它视为标签而不是文本,我不知道如何使这项工作正确,欢迎任何关于此的提示!)

function get_content() {

echo "<p>";
echo "<table>";
echo "<tr>";
echo "<td> id </td>";
echo "<td> artikelnummer frabrikant </td>"
and so on
echo "</tr>";

$sql = "SELECT * FROM products";
$res = mysql_query($sql) or die (mysql_error());

if (mysql_num_rows($res) != 0) :
while ($row = mysql_fetch_assoc($res)) :
echo "<tr>";
echo "<td> . $row['id'] . </td>";
echo "<td> . $row['artikelnummer_fabrikant'] . </td>";
and so on
echo "</tr>";
endwhile;

echo "</table>";
echo "</p>";

endif;

现在我想使用标签 select 和 option 在此基础上构建一个过滤器,这样当我选择选项 brand(merk) 'windsor' 时,它将显示品牌为 'windsor' 的所有产品以及所有信息,例如breedte、hoogte、diepte(宽度、高度、深度)。

我得到了一段代码,它在选项菜单中为我提供了所有品牌 (merk):

function category_filter() {

echo "Merk: ";
echo "<select onchange=window.location = this.value>;";
$sql = "SELECT merk FROM products";
$res = mysql_query($sql) or die (mysql_error());

if (mysql_num_rows($res) !=0 ) :
while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) :
echo "<option> . $row['merk'] . </option>";
endwhile;
endif;
echo "</select>";

当然,对于数据库中的每个项目,我都有 1 个。

我接下来要做的是以某种方式组合这两个代码,当我在选项菜单品牌(merk)中选择品牌(merk)“Windsor”时,它将显示品牌为“Windsor”的所有产品+ 该产品的所有其他信息。

我努力了一个星期试图让这件事发生,但我无法让它按照我想要的方式进行:(。

我怎样才能让它工作?

最佳答案

好的,所以我通过编写以下代码找到了如何做到这一点:

    echo    "<form class='merk' action='index.php'>";
        echo        "<select name=merk>";
        echo            "<option value=''>Kies een merk</option>";

        while ($row_merk    =   mysqli_fetch_array($merk_query_selected)) :

        $filter =   $row_merk['merk'];

            if($filter == $merk) :
                echo    "<option value=" . urlencode($filter) . " selected='selected'>" . $filter . "</option>";
            else :
                echo    "<option value=" . urlencode($filter) . ">" . $filter . "</option>";
            endif;

        endwhile;

        echo        "</select>";        
        echo        "<input class='input-merk' type='submit' value='Filter op merk'>";
        echo    "</form><br />";

$('form').each(function() {
        var that = $(this);
        $.post(that.attr('action'), that.serialize());
    });</script>

解码:

$merk                                       =   urldecode($_GET["merk"]);

然后通过运行此 while 循环获取内容:

while ($row_merk    =   mysqli_fetch_array($merk_query_all)) :
            echo    $table_row;
            echo        $table_cell, $row_merk['id'] . $table_div_end;
            echo        $table_cell, $row_merk['artikelnummer_fabrikant'] . $table_div_end;
            echo        $table_cell, $row_merk['breedte'] . $table_div_end;
            echo        $table_cell, $row_merk['diepte'] . $table_div_end;
            echo        $table_cell, $row_merk['hoogte'] . $table_div_end;
            echo        $table_cell, $row_merk['extrainfo'] . $table_div_end;
            echo        $table_cell, $row_merk['afmeting'] . $table_div_end;
            echo        $table_cell, $row_merk['kleur'] . $table_div_end;
            echo        $table_cell, $row_merk['merk'] . $table_div_end;
            echo        $table_cell, $row_merk['serie'] . $table_div_end;
            echo        $table_cell, $row_merk['producttype'] . $table_div_end;
            echo        $table_cell, $row_merk['omschrijving'] . $table_div_end;
            echo        $table_cell, $row_merk['prijsfinal'] . $table_div_end;
            echo        $table_cellEnd, $row_merk['levertijd'] . $table_div_end;
            echo    $table_row_end;
        endwhile;

现在我想做的是让它动态化,这样它就可以同时过滤多个选择。

尽我所能,欢迎任何帮助!

[编辑] 了解它是如何工作的,但它仍然不是动态的。但是这个问题已经回答了,我会去网上看看如何使这个动态化。

关于php - 如何使用产生正确产品的选择选项过滤 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480766/

相关文章:

php - checkdnsrr 在 Windows 上总是返回 false

mysql - 如何在 Laravel 中运行此 SQL 查询?

c# - 如何通过 Internet 托管 ASP.Net Web 服务

php - 对象关系映射与数据库抽象层

php - 无法从存储引擎读取自动增量值

PHP/MySQL 检索图像路径

php - SQL - 添加列值单表

php - 文件获取内容(): stream does not support seeking / When was PHP behavior about this changed?

php - PDO:prepare() 是否会转义所有数据,即使未绑定(bind)?

php - 请求后运行 PHP