问题
我无法过滤我的桌子,没有错误出现,所以我不确定为什么它不起作用。我想知道它是否与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语句应该过滤表,每个下拉选项都会有一个
答案 0 :(得分:1)
由于对评论的讨论导致了解决方案,我在此处添加:
您的问题是您定义了一个没有方法的表单,这意味着它将默认为GET
,并且在您的代码中,您尝试获取POST
个变量,因此请将表单更改为:
<form action="database.php" method="post">