Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用select选项过滤MySQL查询,从而生成正确的产品_Php_Mysql - Fatal编程技术网

Php 如何使用select选项过滤MySQL查询,从而生成正确的产品

Php 如何使用select选项过滤MySQL查询,从而生成正确的产品,php,mysql,Php,Mysql,我正在开发一个基于数据库的CMS。 数据库的结构如下所示,其语言为荷兰语: id、artikelnummer_fabrikant、breedte、diepte、hoogte、extrainfo、afmeting、kleur、merk、serie、producttype、omschrijving、prijsfinal、levertijd 在下一段代码中,我从数据库中获取所有信息,并将其放入表中: 很抱歉,我没有使用来创建标记,这个文本编辑器将它视为标记而不是文本,我不知道如何使这项工作正确,欢迎提

我正在开发一个基于数据库的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;
现在,我想用标签选择和选项在此基础上构建一个过滤器,这样当我选择brandmerk“windsor”选项时,它将显示所有品牌为“windsor”的产品,以及所有这些信息,如breedte、hoogte、diepte width、heigt、depth

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

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>";
当然,数据库中的每一项都有一个

我接下来要做的是以某种方式组合这两个代码,当我在选项菜单brandmerk中选择brandmerk“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>
然后通过运行以下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;
现在我想做的是让它动态,这样它可以同时过滤多个选择

竭尽所能,欢迎您的帮助

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;

[编辑]了解了它的工作原理,但它仍然不是动态的。但是这个问题已经解决了,我将在网上查看如何使其动态。

请使用“格式代码”按钮。。。我会这么做,但你添加了这么多html标签。。。。它们不再得到维护。看到了吗?相反,了解,并使用or-将帮助您决定使用哪个。为什么要编写所有HTML标记而不使用?Hello@AarolamaBluenk我确实听说了这一点,我真蠢,竟然仍然使用mysql。我要用mysqli来代替。michi我不知道如何在编辑器中使用它们,当我使用它们时,它们实际上被用作代码而不是文本。neal您将如何使用mysqli构建代码?@michi编辑th标记