使用下拉框过滤我的postgreSQL表

时间:2015-11-24 18:43:07

标签: php postgresql

问题

我无法过滤我的桌子,没有错误出现,所以我不确定为什么它不起作用。我想知道它是否与SQL代码的放置有关,或者提交按钮是否未正确编码...或者即使是ive编程也都错了哈哈。

预期结果

我希望在按下提交时看到表格更改为提交的内容。例如,在下拉框中可以选择“Canned'食物,如果我要按这个,我希望看到桌子变化,只显示罐头食品。

实际结果是什么

似乎没有发生任何事情,没有错误,我完全不确定为什么。

以下是下拉框的代码

我不确定这是否是我正在尝试做的正确形式。我想留在同一页面,我只想影响表格。

<form action="database.php">
<select name="category" id="category">
    <option value="Alcoholic">Alcohol</option>
    <option value="Canned">Canned Food</option>
    <option value="Dairy">Dairy</option>
    <option value="Dessert">Dessert</option>
    <option value="Frozen">Frozen Food</option>
    <option value="Fruit">Fruit</option>
    <option value="Junk Food">Junk Food</option>  
</select>
<input  type="submit" name="submit" value="Search"/>
</form>

以下是表和SQL命令的代码

<?php
    $conn = pg_connect("host=db.dcs.aber.ac.uk port=5432
                                        dbname=teaching user=csguest password=********");
// Empty var that will be populated if the form is submitted
    $where = '';

    if (isset($_POST['submit'])) {

         if (!empty($_POST['category'])) {
             // Where conditional that will be used in the SQL query
             $where = " WHERE Category = '".pg_escape_string($_POST['category'])."'";
    }

}

$res = pg_query($conn, "SELECT Foodtype, Manufacturer, Description, Price 
                                    FROM food " . $where . " ORDER BY    Category ASC");
echo "<table id=\"myTable\" border='1'>";
while ($a = pg_fetch_row($res)) {
    echo "<tr>";
    for ($j = 0; $j < pg_num_fields($res); $j++) {
        echo "<td>" . $a[$j] . "</td>";
    }

    echo "<td><form id='cart' name='cart' method='POST' action='addToBasket.php'>
                                        <input type='submit' name='Select' id='Select' value='Add To Basket'>
                                        </form></td>";
    echo "</tr>\n";
}

echo "</table>\n";
$Alcoholic = pg_query("SELECT Foodtype, Manufacturer, 
                                    Description, Price FROM food WHERE Category = 'Alcoholic'");
$Canned = pg_query("SELECT Foodtype, Manufacturer, 
                                    Description, Price FROM food WHERE Category = 'Canned'");
?>

上面的最后两个SQL语句应该过滤表,每个下拉选项都会有一个

1 个答案:

答案 0 :(得分:1)

由于对评论的讨论导致了解决方案,我在此处添加:

您的问题是您定义了一个没有方法的表单,这意味着它将默认为GET,并且在您的代码中,您尝试获取POST个变量,因此请将表单更改为:

<form action="database.php" method="post">