ФорумПрограммированиеPHP для идиотов → проблема с выпадающими списками из запроса в таблицы

проблема с выпадающими списками из запроса в таблицы

  • novi4ek

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 27 января 2008 г. 2:52

    У меня вопрос, перерыл инфу по работе с выпадающими списками. В основном с использованием скриптов. В общем код такой:

    <?php
    // Устанавливаем соединение с базой данных
    require_once("config.php");

    // Начало HTML-формы
    echo "<form method=post>";

    // Формируем первый выпадающий список
    $query = "SELECT * FROM catalogs";
    $cat = mysql_query($query);
    if(!$cat) exit(mysql_error());
    // Если имеется хотя бы одна запись
    // формируем выпадающий список
    if(mysql_num_rows($cat) > 0)
    {
    echo "<select name=id_catalog onchange='this.form.submit()'>";
    echo "<option value=0>Не имеет значения</option>";
    while($catalog = mysql_fetch_array($cat))
    {
    if($catalog['id_catalog'] == $catalog['id_catalog']) $selected = "selected";
    else $selected = "";
    echo "<option value=$catalog[id_catalog] $selected>$catalog[name]</option>";
    }
    echo "</select>";
    }

    // Проверяем является ли параметр id_catalog числом
    if(preg_match("|^[\d]+$|",$_POST['id_catalog']));
    {
    // Формируем второй выпадающий список
    $query = "SELECT * FROM products
    WHERE id_catalog = $catalog[id_catalog]";
    // ORDER BY name";
    $prd = mysql_query($query);
    if(!$prd) exit(mysql_error());
    // Если в текущем каталоге имеется хотя бы
    // одна товарная позиция формируем выпадающий список
    if(mysql_num_rows($prd) > 0)
    {
    echo "<select name=id_product onchange='this.form.submit()'>";
    while($product = mysql_fetch_array($prd))
    {
    echo "<option value=$product[id_product]>$product[name]</option>";
    }
    echo "</select>";
    }
    }

    // Конец HTML-формы
    echo "</form>";
    ?>
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 27 января 2008 г. 4:38, спустя 1 час 46 минут 3 секунды

    Чего спросить-то хотел?
  • novi4ek

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 28 января 2008 г. 2:28, спустя 21 час 50 минут 33 секунды

    Ошибка:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

    понятно, что ошибку дает где то здесь
    $query = "SELECT * FROM products
    WHERE id_catalog =$catalog[id_catalog]

    if(preg_match("|^[\d]+$|",$_POST['id_catalog']));
    проверяет является ли параметр id_catalog числом
    я пробовал так везде вместо $catalog[id_catalog] ставил $_POST['id_catalog']
    и наоборот.

    то есть вместо запроса
    $query = "SELECT * FROM products
    WHERE id_catalog =$catalog[id_catalog]
    ставил
    $query = "SELECT * FROM products
    WHERE id_catalog =$_POST['id_catalog']

    тогда он ругается на синтаксис, блин.

    я к вечеру вывешу структуру таблицы
    попробуйте кто-нибудь прогнать этот код. А то я вроде бы попробовал много разных вариантов. И кажется в конец запутался.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 28 января 2008 г. 2:43, спустя 14 минут 35 секунд

    Так выведите этот синтаксис и посмотрите, что там получилось:
    $query = "SELECT * FROM products WHERE id_catalog =$catalog[id_catalog]";
    print $query;
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 28 января 2008 г. 3:00, спустя 17 минут 13 секунд

    Ну уж если на то пошло то наверное писать надо так
    WHERE id_catalog =".$_POST['id_catalog']."
    from TRIAL with LOVE
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 28 января 2008 г. 5:09, спустя 2 часа 8 минут 48 секунд

    "SELECT * FROM products WHERE id_catalog={$catalog[id_catalog]}"
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 28 января 2008 г. 5:11, спустя 1 минуту 58 секунд


    А то я вроде бы попробовал много разных вариантов. И кажется в конец запутался.
    А не надо пробовать. Надо выучить правила работы со строками, а не пытаться решить задачу методом тыка.Тогда все распутается …
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 28 января 2008 г. 5:35, спустя 24 минуты 8 секунд


    "SELECT * FROM products WHERE id_catalog={$catalog[id_catalog]}"


    не забывайте ключи в кавычки заключать:
    "SELECT * FROM products WHERE id_catalog={$catalog['id_catalog']}"
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!