За последние 24 часа нас посетили 34989 программистов и 1757 роботов. Сейчас ищут 726 программистов ...

php+зависимый селект+MySQL

Тема в разделе "JavaScript и AJAX", создана пользователем Basters, 25 ноя 2010.

  1. Basters

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

    С нами с:
    2 янв 2008
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Ростов на Дону
    Никак не могу построить такую конструкцию.... Задача такая, есть 2 списка <select>. От значений первого изменяет свои значения и второй. Значения этих списков лежат в базе и должны тянуться оттуда. Поле выбора во втором SELECTe на странице должен вывестись SQL запрос включивший в себя параметры выбора. Перебрал не малую кучу скриптов

    PHP:
    1.  
    2. <?php include_once ('system/core.php');
    3. echo '<form name="modelform"> <td valign=top><select class=select onchange="modelform_rebuild(this.options[this.selectedIndex].value)"><option value="0">--- ';
    4.  
    5. $query = mysql_query("SELECT * from brand");
    6. while ($result = mysql_fetch_array($query))
    7. {
    8. echo "<option value='".$result['name']."'>".$result['name']."</option>";
    9.  
    10. }
    11. echo '</select>
    12. <select name="models_id" class=select><option value="0">---</select>
    13. ';
    14. echo "
    15. <script language='javascript'>
    16.  
    17. function modelform_rebuild(b){
    18. switch (b) {
    19. case '0':
    20. with (modelform.models_id) {
    21. options.length = 0;
    22. options[0] = new Option('---', '0');
    23. selectedIndex = 0;
    24. }; break;
    25. case '33': with (modelform.models_id) {
    26.    
    27.   options.length= 0;
    28.   options[0]= new Option('---','0');
    29.   options[1]= new Option('Allex','479');
    30.   options[2]= new Option('Allion','424');
    31.   options[3]= new Option('Alphard','489');
    32.   selectedIndex=0;
    33.      }; break;
    34. case '31': with (document.modelform.models_id) {
    35.   options.length= 0;
    36.   options[0]= new Option('---','0');
    37.   options[1]= new Option('180SX','630');
    38.   options[2]= new Option('Ad Wagon','637');
    39.   options[3]= new Option('Atlas','1033');
    40.   options[4]= new Option('Avenir','638');
    41.   options[5]= new Option('Bassara','607');
    42.   selectedIndex=0;
    43.      }; break;
    44. case '33': with (document.modelform.models_id) {
    45.   options.length= 0;
    46.   options[0]= new Option('---','0');
    47.   options[1]= new Option('Airtrek','862');
    48.   options[2]= new Option('Aspire','885');
    49.   options[3]= new Option('Bravo','855');
    50.  
    51.   selectedIndex=0;
    52.      }; break;
    53. case '34': with (document.modelform.models_id) {
    54.   options.length= 0;
    55.   options[0]= new Option('---','0');
    56.   options[1]= new Option('Accord','744');
    57.   options[2]= new Option('Accord Coupe','729');
    58.   options[3]= new Option('Accord Inspire','745');
    59.   selectedIndex=0;
    60.      }; break;
    61. case '35': with (document.modelform.models_id) {
    62.   options.length= 0;
    63.   options[0]= new Option('---','0');
    64.   options[1]= new Option('Atenza Sedan','822');
    65.   options[2]= new Option('Atenza Sport','823');
    66.   options[3]= new Option('Atenza Sport Wagon','821');
    67.   selectedIndex=0;
    68.      }; break;
    69. case '32': with (document.modelform.models_id) {
    70.   options.length= 0;
    71.   options[0]= new Option('---','0');
    72.   options[1]= new Option('Alcyone','573');
    73.   selectedIndex=0;
    74.      }; break;
    75. case '36': with (document.modelform.models_id) {
    76.   options.length= 0;
    77.   options[0]= new Option('---','0');
    78.   options[1]= new Option('Aerio Sedan','524');
    79.   options[2]= new Option('Aerio Wagon','533');
    80.   selectedIndex=0;
    81.      }; break;
    82. case '37': with (document.modelform.models_id) {
    83.   options.length= 0;
    84.   options[0]= new Option('---','0');
    85.   options[1]= new Option('Aska','758');
    86.   options[2]= new Option('Bighorn','766');
    87.   options[3]= new Option('Elf','951');
    88.  
    89.   selectedIndex=0;
    90.      }; break;
    91.  
    92.  
    93. }
    94. }
    95.  
    96. </script>
    97. ";
    98. ?>
    99.  
    дошел только чтобы заполнить первый select, но как сконструировать дальше?

    PHP:
    1. структура первой таблицы -
    2. id, name
    пример:
    Список1
    Вася
    Петя
    Миша
    вывелся запросом SELECT * FROM base1
    Если выбран Петя, то во втором списке из базы появляются запросом конкретные значения
    запрос примерно - SELECT name_br FROM base2 WHERE id_br='".$result['id']"'
    PHP:
    1. Структура 2й таблицы -
    2. id_br, name_br
    А после выбора во втором селекте пойдет финальный запрос в другую таблицу
    пусть будет SELECT * from base3 WHERE br="значение из первого селекта" AND md="значение второго селекта"

    Надеюсь обьяснил доступно. Прозьба либо дописать в моем коде, либо представте свои варианты как это проше сделать через JS желательно, не JQuery. И желательно с комментариями, т.к. учусь и буду разбирать...