Как получить второе значение в раскрывающемся списке на основе выбранного в первом раскрывающемся списке

Я написал следующий код в PHP, чтобы создать два раскрывающихся списка на одной странице.

Первый раскрывающийся список получает значение из таблицы MySQL. Этот блок dropdpwn содержит несколько идентификаторов пользователей. Второй раскрывающийся список содержит некоторые даты, которые должны быть основаны на UserID, который выбран в первом раскрывающемся списке. Я заполнил второй раскрывающийся список со всеми датами в таблице MySQL, но его следует отфильтровать с помощью UserID, который выбран в первом раскрывающемся списке.

Чтобы сообщить, с этими двумя значениями из этих двух раскрывающихся списков на этой странице PHP, я разместил их, нажав кнопку отправки на другую страницу PHP для обработки другой работы.

Я был бы признателен, если вы можете помочь мне заполнить второй dropbox только на основе UserID, выбранного в первом Dropbox. Вот код, который я написал для отображения и заполнения этих выпадающих списков. Не могли бы вы сообщить мне, какую часть кода я должен изменить, и я был бы признателен, если вы также можете показать мне код модификации. Я новичок в PHP, поэтому я прошу помощи на уровне кода.

Мой код:

<html> <head> <title> Search Alert DB </title> <body> <br /> <?php> $con = mysql_connect("localhost","root","root"); // (host, user,pwd) if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("mysql", $con); echo "<p> Search Alert database </p>"; echo "<br />"; $result = mysql_query("SELECT distinct(UserID) FROM tblAlertLogSpecificUsersDayStatusFinal_1"); $options=""; echo "<form action='Search_AlertDB_process.php' method='POST'>\n"; //echo "Please choose a user: "; echo "Please choose a user: <select name = userid>"; echo "<option>-Select-"; while ($row = mysql_fetch_array($result)) { $userid=$row["UserID"]; $options ="<option value = \"$userid\">$userid </option>"; echo "$options"; } echo "</select>"; echo "<br />"; echo "<br />"; $dayresult = mysql_query("SELECT distinct(Occurred_date) FROM tblAlertLogSpecificUsersDayStatusFinal_1"); $dayoptions=""; echo "Please pick a date:<select name = day>"; echo "<option>-Select-"; while ($row=mysql_fetch_array($dayresult)) { $day=$row["Occurred_date"]; $dayoptions ="<option value = \"$day\">$day </option>"; echo "$dayoptions"; //$options.="<OPTION VALUE=\"$id\">".$day; } echo "</select>"; echo "<br />"; mysql_close($con); ?> <br /> <input type="submit" name="Submit" value="Search" /> <br /> <br /> </form> </body> </html> 

Вам понадобятся 3 вещи

  1. Начальная страница с полями выбора
    • Первое поле выбора предварительно заполнено идентификаторами пользователя
    • Второе поле не содержит параметров и отключено
  2. Отдельная конечная точка / страница, которая принимает идентификатор пользователя в качестве параметра для возврата соответствующих дат
    • Вероятно, он должен вернуть JSON / XML (или что-то подобное), или вы можете вернуть даты, предварительно отображенные в тегах <option /> (на самом деле это не так, но было бы быстрее взломать это вместе)
  3. Обратный вызов Javascript срабатывает при выборе опции в первом выпадающем списке. Обратный вызов должен отправить запрос AJAX на отдельную конечную точку и заполнить второй выпадающий результат.

Мне было бы легче написать все для вас, чем [попытаться] объяснить это, но это не совсем так. Просто попытка установить все это (все будет, относительно просто) научит вас целому множеству вещей о Javascript, AJAX и веб-сервисах.

Если вы решите вернуть JSON / XML из своего веб-сервиса (отдельная конечная точка / страница), и, надеюсь, вы это сделаете, вы также можете увидеть преимущество разделения логики от презентации, что сделает мир различий как для вашего понимания и доставка кода.

Ну, мы не будем писать код для вас. В противном случае вы станете новичком на всю жизнь 🙂

Что вам нужно здесь, называется AJAX. Самый простой способ реализовать его – это, вероятно, функция jQuery ajax . Если вы не знаете jQuery – изучите основы, это не займет больше часа или около того. Это стоит того 🙂