Поскольку у меня есть только одно значение в первом раскрывающемся списке, я пытаюсь создать каскадное раскрывающееся меню в PHP, которое заполняет второе раскрывающееся меню при загрузке страницы.
В моей базе данных есть таблица под названием «ночей» с полями: «город», «имя» и «день».
Чтобы заполнить мой первый ящик, я использую города SELECT DISTINCT cities from nights
т. Д., Которые отлично работали.
Чтобы заполнить второй блок, мне нужно что-то в строках SELECT name WHERE city = $city
– моя проблема в том, что я не уверен, как установить $city
(имя <select>
). Я не могу использовать $_POST['city']
потому что форма не была отправлена в этот момент.
Есть идеи?
Если вы хотите, чтобы это было динамическим (т.е. после изменения пользователем раскрывающегося списка), вам придется использовать javascript для первого запроса страницы PHP (возможно, с помощью jQuery get ), а затем соответствующим образом настройте выпадающие списки. В Интернете есть много учебников для этого.
Если вы просто хотите, чтобы данные начальной страницы были заполнены, вы можете выбрать первый город из своего запроса и установить этот параметр в качестве выбранного, а затем использовать этот город в следующем запросе.
Что-то вроде:
$first = True; while($row = mysql_fetch_array($result)) { echo "<option" . (($first) ? " selected" : "") . ">" . $row['city'] . "</option>"; if($first) { $first = !$first; $city = $row['city']; } } //now do stuff with with $city
<? $CITIES = query_result("SELECT DISTINCT cities FROM nights;"); if (isset($_POST["city"])) { $NAMES = query_result("SELECT name FROM nights WHERE city = '{$_POST[city]}'"); if (isset($_POST["day"]) $DAYS = query_result("SELECT day FROM nights WHERE city='{$_POST[city]}'". " AND name = '{$_POST[name]}'"); else $DAYS = array(); } else $NAMES = array(); /* now output the <select> markup for $CITIES, $NAMES and $DAYS */ ?>
Примечание: вам нужно определить функцию query_result
самостоятельно (я просто использовал ее для упрощения кода).
Вы можете использовать AJAX для этого.
В случае изменения события вызовите функцию javascript-ajax, которая вызывает скрипт php, который делает вам второй dropdown-код.
Вам нужно будет использовать ajax для загрузки параметров из php-скрипта. Вот пример того, как вы можете это сделать с помощью jquery и ajax: Autopopulate Выберите Dropdown Box с помощью jQuery