How can I get drop down menu value still selected

2019-02-26 02:56发布

问题:

When I type in data in a text box and submit the form, the data is still stored in the text box which is great For example I used . What I want to do now is that when a value is selected from a drop down menu and the form is submitted, I want the value chosen to still be shown as the selected value on the drop down list but I cannot manage to do this. Any ideas?

Below is the code:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>Exam Interface</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<?php

$username="xxx";
$password="xxx";
$database="mobile_app";

mysql_connect('localhost',$username,$password);

@mysql_select_db($database) or die("Unable to select database");



$sessionid = isset ($_POST['sessionid']) ? $_POST['sessionid'] : "";
$moduleid = isset ($_POST['moduleid']) ? $_POST['moduleid'] : "";
$teacherid = isset ($_POST['teacherid']) ? $_POST['teacherid'] : "";
$studentid = isset ($_POST['studentid']) ? $_POST['studentid'] : "";
$grade = isset ($_POST['grade']) ? $_POST['grade'] : "";
$orderfield = isset ($_POST['order']) ? $_POST['order'] : "";

$sessionid = mysql_real_escape_string($sessionid);
$moduleid = mysql_real_escape_string($moduleid);
$teacherid = mysql_real_escape_string($teacherid);
$studentid = mysql_real_escape_string($studentid);
$grade = mysql_real_escape_string($grade);

?>

<p><strong>NOTE: </strong>If a search box is left blank, then the form will search for all data under that specific field</p>

<form action="exam_interface.php" method="post" name="sessionform">        <!-- This will post the form to its own page"-->
<p>Session ID: <input type="text" name="sessionid" value="<?PHP print $sessionid ; ?>" /></p>      <!-- Enter Session Id here-->
<p>Module Number: <input type="text" name="moduleid" value="<?PHP print $moduleid ; ?>" /></p>      <!-- Enter Module Id here-->
<p>Teacher Username: <input type="text" name="teacherid" value="<?PHP print $teacherid ; ?>" /></p>      <!-- Enter Teacher here-->
<p>Student Username: <input type="text" name="studentid" value="<?PHP print $studentid ; ?>" /></p>      <!-- Enter User Id here-->
<p>Grade: <input type="text" name="grade" value="<?PHP print $grade ; ?>" /></p>      <!-- Enter Grade here-->
<p>Order Results By: <select name="order" value="<?PHP print $orderfield ; ?>">
<option value="ordersessionid">Session ID</option>
<option value="ordermoduleid">Module Number</option>
<option value="orderteacherid">Teacher Username</option>
<option value="orderstudentid">Student Username</option>
<option value="ordergrade">Grade</option>
</select>
<p><input type="submit" value="Submit" name="submit" /></p>
</form>

<?php

$username="u0867587";
$password="31may90";
$database="mobile_app";

mysql_connect('localhost',$username,$password);

@mysql_select_db($database) or die("Unable to select database");



$sessionid = isset ($_POST['sessionid']) ? $_POST['sessionid'] : "";
$moduleid = isset ($_POST['moduleid']) ? $_POST['moduleid'] : "";
$teacherid = isset ($_POST['teacherid']) ? $_POST['teacherid'] : "";
$studentid = isset ($_POST['studentid']) ? $_POST['studentid'] : "";
$grade = isset ($_POST['grade']) ? $_POST['grade'] : "";
$orderfield = isset ($_POST['order']) ? $_POST['order'] : "";

$sessionid = mysql_real_escape_string($sessionid);
$moduleid = mysql_real_escape_string($moduleid);
$teacherid = mysql_real_escape_string($teacherid);
$studentid = mysql_real_escape_string($studentid);
$grade = mysql_real_escape_string($grade);

if(isset($_POST['submit'])) {

switch ($orderfield) {
    case 'ordersessionid': $orderfield = 'gr.SessionId';
    break;
    case 'ordermoduleid': $orderfield = 'm.ModuleId'; 
    break;
    case 'orderteacherid': $orderfield = 's.TeacherId';
    break;
    case 'orderstudentid': $orderfield = 'gr.StudentId'; 
    break;
    case 'ordergrade': $orderfield = 'gr.Grade';
    break;
}

$result = mysql_query("SELECT * FROM Module m INNER JOIN Session s ON m.ModuleId = s.ModuleId JOIN Grade_Report gr ON s.SessionId = gr.SessionId JOIN Student st ON gr.StudentId = st.StudentId WHERE ('$sessionid' = '' OR gr.SessionId = '$sessionid') AND ('$moduleid' = '' OR m.ModuleId = '$moduleid') AND ('$teacherid' = '' OR s.TeacherId = '$teacherid') AND ('$studentid' = '' OR gr.StudentId = '$studentid') AND ('$grade' = '' OR gr.Grade = '$grade') ORDER BY $orderfield ASC");

$num=mysql_numrows($result);

echo "<p>Your Search: <strong>Session ID:</strong> "; if (empty($sessionid))echo "'All Sessions'"; else echo "'$sessionid'";echo ", <strong>Module ID:</strong> "; if (empty($moduleid))echo "'All Modules'"; else echo "'$moduleid'";echo ", <strong>Teacher Username:</strong> "; if (empty($teacherid))echo "'All Teachers'"; else echo "'$teacherid'";echo ", <strong>Student Username:</strong> "; if (empty($studentid))echo "'All Students'"; else echo "'$studentid'";echo ", <strong>Grade:</strong> "; if (empty($grade))echo "'All Grades'"; else echo "'$grade'"; echo ", <strong>Order Results By:</strong>";if ($orderfield == 'gr.SessionId') echo " 'Session ID'"; else if ($orderfield == 'm.ModuleId') echo " 'Module Number' "; else if ($orderfield == 's.TeacherId') echo " 'Teacher Username' "; else if ($orderfield == 'gr.StudentId') echo " 'Student Username' "; else if ($orderfield == 'gr.Grade') echo " 'Grade' ";"</p>";

echo "<p>Number of Records Shown in Result of the Search: <strong>$num</strong></p>";

echo "<table border='1'>
<tr>
<th>Student Id</th>
<th>Forename</th>
<th>Session Id</th>
<th>Grade</th>
<th>Mark</th>
<th>Module</th>
<th>Teacher</th>
</tr>";

while ($row = mysql_fetch_array($result)){

 echo "<tr>";
  echo "<td>" . $row['StudentId'] . "</td>";
  echo "<td>" . $row['Forename'] . "</td>";
  echo "<td>" . $row['SessionId'] . "</td>";
  echo "<td>" . $row['Grade'] . "</td>";
  echo "<td>" . $row['Mark'] . "</td>";
  echo "<td>" . $row['ModuleName'] . "</td>";
  echo "<td>" . $row['TeacherId'] . "</td>";
  echo "</tr>";
}

echo "</table>";

}

mysql_close();


 ?>

</body>
</html>

Thank you and any help will be a big help for me.

回答1:

Here is what I would do. It isn't glamourous or perfect, but it works amazingly well. You simply set a variable to add the selected attribute to your option tags IF the value coming from the form submit matches. Then output the selected attribute only if that variable matches that option. This can be way harder, but this works and is simple to understand.

Adding a value to the select itself doesn't do anything for you really. It has to be added on the particular option that you want to be auto-selected.

<?php if($orderfield=='ordersessionid'){$session = ' selected="selected"';} ?>
<?php if($orderfield=='ordermoduleid'){$module = ' selected="selected"';} ?>
<?php if($orderfield=='orderteacherid'){$teacher = ' selected="selected"';} ?>
<?php if($orderfield=='orderstudentid'){$student = ' selected="selected"';} ?>
<?php if($orderfield=='ordergrade'){$grade = ' selected="selected"';} ?>

<select name="order">
    <option value="ordersessionid" <?php echo $session; ?>>Session ID</option>
    <option value="ordermoduleid" <?php echo $module; ?>>Module Number</option>
    <option value="orderteacherid" <?php echo $teacher; ?>>Teacher Username</option>
    <option value="orderstudentid" <?php echo $student; ?>>Student Username</option>
    <option value="ordergrade" <?php echo $grade; ?>>Grade</option>
 </select>