За последние 24 часа нас посетили 22123 программиста и 1687 роботов. Сейчас ищут 1497 программистов ...

Связанные списки с БД

Тема в разделе "PHP и базы данных", создана пользователем Anatoliy, 26 мар 2008.

  1. Anatoliy

    Anatoliy Активный пользователь

    С нами с:
    26 мар 2008
    Сообщения:
    2
    Симпатии:
    0
    Всем доброго времени суток.Мучаюсь уже много дней с этими списками,нашел вроде оптимальный вариант да только вот только не понимаю что нужно прописать на месте вопросительных знаков.Буду очень благодарен если кто поможет

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

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

    // Формируем первый выпадающий список

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

    echo "<option value=$marka[mark_id] $selected>$marka[mark]</option>";
    }
    echo "</select>";
    }

    // Формируем второй выпадающий список
    $query = "SELECT * FROM model WHERE mark_id='????????????????'";
    //
    $mod = mysql_query($query);
    if(!$mod) exit(mysql_error());

    if(mysql_num_rows($mod) > 0)
    {
    echo "<select name=model_id onchange='this.form.submit()'>";
    while($model = mysql_fetch_array($mod))
    {
    echo "<option value=$model[model_id]>$model[model_name]</option>";
    }
    echo "</select>";
    }


    // Конец HTML-формы
    echo "</form>";
    ?>
     
  2. Anatoliy

    Anatoliy Активный пользователь

    С нами с:
    26 мар 2008
    Сообщения:
    2
    Симпатии:
    0
    всем спасибо,после поста сразу же разобрался как надо было:
    $query = "SELECT * FROM model WHERE mark_id='{$_POST['mark_id']}'";
     
  3. Flip

    Flip Активный пользователь

    С нами с:
    9 мар 2008
    Сообщения:
    42
    Симпатии:
    0
    У меня подобное решение со списками, т.е. при выборе значения из первого списка, появляется второй с нужными данными...

    Но при добавлении атрибута ACTION списки перестают работать, т.е. появляется форма и как только я пытаюсь выбрать значение из первого списка, второй не появляется и страница подвисает...Убираю этот атрибут и всё работает...

    Никак не пойму что мешает.
     
  4. _LEON_

    _LEON_ Активный пользователь

    С нами с:
    11 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    Сделал в такой самой стилистике... но прикол в том что при выборе в первом селекте не остаётся выбранного поля.... а если убрать echo "<option value=0>=============</option>"; - эту строчку, то всегда будет первая запись выбрана в первом селекте... как обойти этот трабл не могу понять...
    также если на форме несколько таких участков(2 селекта или селекты и лейбы тоже динамика), то форма сабмититься и значения выбранные ранее обнуляются.... посоветуйте как обойти эту канитель....
     
  5. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
  6. _LEON_

    _LEON_ Активный пользователь

    С нами с:
    11 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    topas спасибо канечно, но я знаю что у опшена есть свойство селектед, но в данном случае список выводиться циклом из базы, в таком случае будет всегда будет активна первая запись тоесть селектед будет тру.... а при выборе значение передаёт норм, но селект сбивается на первый опшен при выборе.... :shock:
    PHP:
    1.  
    2.  echo "<select name=mark_id onchange='this.form.submit()'>";
    3. while($marka = mysql_fetch_array($m))
    4. {
    5.  
    6. echo "<option value=$marka[mark_id] $selected>$marka[mark]</option>";
    7. }
    8. echo "</select>";
    9. }
    10.  
    ЗЫ Придёться наверно с AJAX -ом повозится... :?
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    _LEON_

    Посмотрите влево, видите там красный переключатель с надписью "МОСК", если он находится в выключенном состоянии, включите.


    Извините за то, что не понял вопроса. Пожалуйста, переформулируйте вопрос, т.к. ответ Вам уже дал, и ничего нового по задаче сказать Вам не смогу
     
  8. _LEON_

    _LEON_ Активный пользователь

    С нами с:
    11 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    Как сохранить выбор селекта, после сабмита формы ? потому что
    PHP:
    1. onchange='this.form.submit()'
    Доганяете?
     
  9. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Доганяем, ловите, но прежде чем задавать подобные вопросы изучите ссылки "как правильно задавать вопросы" и на всякий случай "на танке".

    PHP:
    1.  
    2. <?php
    3. $country = array('Россия', 'Казахстан', 'Латвия');
    4. $default  = 'Россия';
    5. $default  = (isset($_POST['country'])) ? $_POST['country'] : $default;
    6. echo "<select name='country'>";
    7. foreach ($country as $value)
    8. {
    9.     $selected = ($value == $default) ? ' selected' : '';
    10.     echo "<option value='$value' $selected>$value</option>";
    11. }
    12. echo "</select>";
    13. assert( !is_blond('__LEON__') );
    14. ?>
     
  10. _LEON_

    _LEON_ Активный пользователь

    С нами с:
    11 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    topas, спасибо
    Но я уже на аяксе всё красиво сделал.
    ЗЫ: Советую всем использовать в такой ситуации эту технологию.