У меня есть следующий код, который создает два выпадающих меню, которые заполняются значениями из базы данных. Первое выпадающее меню печатает выбор пользователя, а второй - нет. Как я могу это исправить? PS Я не хочу использовать AJAX
//first drop down
echo<<<FORMSTART
<form name= "modules" method= "post">
<select name = "modules" onChange="document.topic_list.submit()">
<option value = "None">Choose module</option>
FORMSTART;
$stmt = $pdo->query("SELECT DISTINCT Module from timetable");
//populate drop down menu
while ($row = $stmt->fetch()){
echo "<option value= '" . $row['Moudle'] . "'>". $row['Module'] . "</option>";
}
//End of first form
echo<<<FORMEND
</select>
</form>
FORMEND;
$selected_module = $_POST["Module"];
echo "$selected_module Selected" ;
//second drop down
echo<<<FORMSTART
<form name= "time_list" method= "post">
<select name = "Time selected:">
<option value = "None">Select a Time</option>
FORMSTART;
$stmt = $pdo->query("SELECT Times FROM Timetable WHERE Module='" . $selected_module. "' AND capacity != 0");
//populate drop down menu
while ($row = $stmt->fetch()){
echo "<option value= '" . $row['Times'] . "'>". $row['Times'] . "</option>";
}
//End form for second drop down which wont print
$selected_time = $_POST["time_list"];
echo $selected_time; //this wont print, im guessing because it isnt stored
echo<<<FORMEND
</select>
</form>
FORMEND;
//first drop down
echo<<<FORMSTART
<form name= "modules" method= "post">
<select name = "modules" onChange="document.topic_list.submit()">
<option value = "None">Choose module</option>
FORMSTART;
$stmt = $pdo->query("SELECT DISTINCT Module from timetable");
//populate drop down menu
while ($row = $stmt->fetch()){
echo "<option value= '" . $row['Moudle'] . "'>". $row['Module'] . "</option>";
}
//End of first form
echo<<<FORMEND
</select>
</form>
FORMEND;
$selected_module = $_POST["Module"];
echo "$selected_module Selected" ;
//second drop down
echo<<<FORMSTART
<form name= "time_list" method= "post">
<select name = "time_list">
<option value = "None">Select a Time</option>
FORMSTART;
$stmt = $pdo->query("SELECT Times FROM Timetable WHERE Module='" . $selected_module. "' AND capacity != 0");
//populate drop down menu
while ($row = $stmt->fetch()){
echo "<option value= '" . $row['Times'] . "'>". $row['Times'] . "</option>";
}
//End form for second drop down which wont print
echo<<<FORMEND
</select>
$selected_time = $_POST["time_list"];
echo $selected_time; /*you need to ensure that you put this after </select> tag. It can also work if you put it after the closing form tag </form>*/
</form>
FORMEND;
Основная проблема, с которой вы столкнулись, заключается в попытке распечатать выбранный тег. Если вы посмотрите на первый снимок, который печатает, ваш echo-оператор после закрытия тега select. Вы можете печатать или эхо в теге select как значение параметра или метку, а не как текст, который будет отображаться на странице.
Еще одна вещь, на которую нужно обратить внимание - это имя, которое вы здесь $_POST["time_list"];
<select name = "Time selected:">
который не коррелирует с $_POST["time_list"];
Это должно решить проблему.
Сделайте эту настройку и наслаждайтесь !!!
$selected_time = $_POST["time_list"]; echo $selected_time;
@Horlarme