【问题标题】:Keep a value from a dropdown list after posting发布后保留下拉列表中的值
【发布时间】:2014-11-29 02:22:27
【问题描述】:

我正在尝试编写一个由 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> &nbsp;";

$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> &nbsp;";

$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';");


?>

从 getTitle 和 getSection 进行选择后,如何保持 getSubject 中的数据完整无缺?选择最后一个下拉框后,我希望它打印菜单下方的所有三个选项。我已经为此苦苦挣扎了几个小时,不确定我的键盘还能承受多少滥用。

提前感谢您的帮助。

【问题讨论】:

    标签: php session post drop-down-menu


    【解决方案1】:

    在您打印选项的循环内添加一个条件,该条件使用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>";
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 2016-09-24
      相关资源
      最近更新 更多