Фильтрация моей таблицы postgreSQL

1

Проблема

У меня возникают проблемы с фильтрацией моей таблицы, никаких ошибок не возникает, поэтому я не уверен, почему она не работает. Я задаюсь вопросом, связано ли это с размещением кода 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 должны фильтровать таблицу, по одному для каждого из раскрывающихся опций

Вопрос

Любой шанс, что любой из вас мог бы быстро просмотреть мой код, чтобы увидеть, есть ли какие-либо очевидные ошибки, это будет очень признательно!

  • 1
    В $res = pg_query ...FROM food $where ORDER BY... - >>> ...FROM food " . $where . " ORDER BY... $res = pg_query ...FROM food " . $where . " ORDER BY...
  • 2
    Также: Вы поместите свой элемент ввода для отправки в избранное. Сначала завершите выбор, затем сумбит.
Показать ещё 3 комментария
Теги:

1 ответ

1

Изменить:

$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");
  • 0
    Я изменил это, а также изменил отправку после окончания выбора, но ничего не изменилось и не появилось никаких «полезных» ошибок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню