Выброс каскадов на стороне сервера в PHP

Поскольку у меня есть только одно значение в первом раскрывающемся списке, я пытаюсь создать каскадное раскрывающееся меню в 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