简体   繁体   English

未选择下拉选项

[英]Drop Down Option not being selected

I have the following code that builds two drop down menus that are populated by values from a database. 我有以下代码构建两个下拉菜单,这些下拉菜单由数据库中的值填充。 The first drop down menu prints the user selection but the second doesn't. 第一个下拉菜单打印用户选择,但第二个不打印。 How can I fix this? 我怎样才能解决这个问题? PS I do not want to use AJAX 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;

The major challenge you faced is trying to print in a select tag. 您面临的主要挑战是尝试在选择标签中打印。 If you take a look at the first drop down that prints, your echo statement is after closing the select tag. 如果您查看打印的第一个下拉列表,则您的echo语句是在关闭select标记之后。 You can only print or echo in a select tag as an option value or label, and not as a text to be displayed on the page. 您只能在select标记中打印或回显作为选项值或标签,而不能作为要在页面上显示的文本。

Another thing to look at is the name you give here <select name = "Time selected:"> which does not correlate with $_POST["time_list"]; 要看的另一件事是您在此处<select name = "Time selected:">$_POST["time_list"];不相关$_POST["time_list"];

That should solve the problem. 那应该解决问题。

Make that adjustment and enjoy yourself!!! 进行调整,尽情享受!!!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM