Проблема
У меня возникают проблемы с фильтрацией моей таблицы, никаких ошибок не возникает, поэтому я не уверен, почему она не работает. Я задаюсь вопросом, связано ли это с размещением кода SQL или неправильной кодировкой кнопки отправки... Или даже если ив запрограммировал все это неправильно, ха-ха.
Ожидаемый результат
То, что я ожидаю увидеть, когда пресса представляет для таблицы, изменится на то, что когда-либо было представлено. Например, в раскрывающемся списке есть вариант для "консервированной" еды, если бы я хотел нажать на нее, я ожидал увидеть изменение таблицы, показывая только консервы.
Каков фактический результат
Кажется, ничего не происходит, и без ошибок я совершенно не уверен, почему.
Код
Выпадающий код окна
<p>Sort by Category</p>
<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>
<input type="submit" name="submit" value="Search"/>
</select>
Код таблицы:
<div id="tablebox">
<?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 должны фильтровать таблицу, по одному для каждого из раскрывающихся опций
Вопрос
Любой шанс, что любой из вас мог бы быстро просмотреть мой код, чтобы увидеть, есть ли какие-либо очевидные ошибки, это будет очень признательно!
Изменить:
$res = pg_query($conn, "SELECT Foodtype, Manufacturer, Description, Price
FROM food $where
ORDER BY Category ASC");
в
$res = pg_query($conn, "SELECT Foodtype, Manufacturer, Description, Price
FROM food " .
$where .
" ORDER BY Category ASC");
$res = pg_query
...FROM food $where ORDER BY...
- >>>...FROM food " . $where . " ORDER BY...
$res = pg_query
...FROM food " . $where . " ORDER BY...