Я пытаюсь написать меню выбора из 3-х частей. Второй раскрывающийся список зависит от данных из первого списка, а третий раскрывающийся список зависит от данных из второго. Я попытался использовать post для этого, но каждый раз, когда форма отправляется, она удаляет данные из предыдущего нижнего ящика, и если я пытаюсь использовать переменную сеанса для хранения данных, она также сбрасывается при отправке формы.
вот мой код:
//get a list of course subjects from the database
$subjects = mysqli_query($con,"SELECT subject FROM db.course;");
echo "<select name='getSubject' onchange='this.form.submit()'>";
echo '<option value="" style="display:none;" ></option>';
while ($row=mysqli_fetch_array($subjects) )
{
echo "<option value='" . $row['subject'] . "' >". $row['subject'] ."</option>"; //creates drop down list of subjects
}
echo "</select> ";
$selectedSubject = $_POST['getSubject'];
echo $selectedSubject;
//get a list of course titles from the database, based on subject chosen
$courses = mysqli_query($con,"SELECT title FROM db.course WHERE subject = '$selectedSubject';");
echo "<select name = 'getTitle' style='width:500px;' onchange='this.form.submit()'>";
echo '<option value="" style="display:none;"></option>';
while ($row=mysqli_fetch_array($courses) )
{
echo "<option value='" . $row['title'] . "' >". $row['title'] ."</option>"; //creates a drop down list of course titles
}
echo "</select> ";
$selectedTitle = $_POST['getTitle'];
echo "$selectedTitle";//get a list of section numbers from the database, based on course chosen
$sections = mysqli_query($con,"SELECT section FROM db.course WHERE title = '$selectedTitle';");
echo "<select name = 'getSection' style='width:200px;' onchange='this.form.submit()'>";
echo '<option value="" style="display:none;"></option>';
while ($row=mysqli_fetch_array($sections) )
{
echo "<option value='" . $row['section'] . "' >". $row['section'] ."</option>"; //creates drop down list of course sections
}
echo "</select>";
$selectedSection = $_POST['getSection'];$course = mysqli_query($con,"SELECT title, subject, section FROM db.course WHERE subject = '$selectedSubject';");?>
Как я могу сохранить данные из getSubject нетронутыми после выбора из getTitle и getSection? после того, как выбрано последнее выпадающее меню, я бы хотел напечатать все три варианта под меню. Я боролся с этим уже несколько часов и не уверен, сколько еще ошибок может принести моя клавиатура.
Заранее благодарю за любую помощь.
Добавьте условие в цикл, где вы печатаете параметры, которые используют selected
аргумент, если это опция, выбранная при отправке.
while ($row=mysqli_fetch_array($subjects)) {
if($_POST['getSubject'] == $row['subject']) $s = " selected"; else $s = "";
echo "<option value='{$row['subject']}'$s>{$row['subject']}</option>";
}
while ($row=mysqli_fetch_array($courses)) {
if($_POST['getTitle'] == $row['title']) $s = " selected"; else $s = "";
echo "<option value='{$row['title']}'$s>{$row['title']}</option>";
}
while ($row=mysqli_fetch_array($sections)) {
if($_POST['getSection'] == $row['section']) $s = " selected"; else $s = "";
echo "<option value='{$row['section']}'$s>{$row['section']}</option>";
}
Надеюсь это поможет.
Других решений пока нет …