Как я могу получить значение выпадающего меню, все еще выбранное после отправки формы?

#php #mysql #input #drop-down-menu

#php #mysql #ввод #выпадающее меню

Вопрос:

Когда я ввожу данные в текстовое поле и отправляю форму, данные по-прежнему сохраняются в текстовом поле, которое отлично подходит для примера, который я использовал. Что я хочу сделать сейчас, так это то, что когда значение выбирается из выпадающего меню и форма отправляется, я хочу, чтобы выбранное значение по-прежнему отображалось как выбранное значение в выпадающем списке, но мне не удается это сделать. Есть идеи?

Ниже приведен код:

   <!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>
  

Спасибо, и любая помощь будет для меня большой помощью.

Комментарии:

1. Все это в одном файле? И если да, то это весь файл?

2. Все это в одном файле, но это не весь файл, это всего лишь часть файла, которая, как я думал, будет иметь отношение к этому вопросу. Вам нужен весь файл?

3. Возможно, нет, мне просто интересно, действительно ли этот HTML отображается над PHP, потому что, если это так, мы могли бы увидеть PHP, который отображается над HTML, который присваивает значения $sessionid $moduleid и т.д. В частности, мне интересно, какое значение $orderfield имеет HTML.

4. Я опубликую его снова с целым кодом, я помещу его в тот же заголовок, но рядом с заголовком поставлю номер 2. Я отправлю его через 10 минут

5. Пожалуйста, не создавайте 2 вопроса для одного и того же вопроса — просто отредактируйте этот, и я / мы будем рады помочь. То, чего вы пытаетесь достичь, не сложно — вам просто нужно указать соответствующий <option> selected="selected" атрибут a, но вам не помешало бы просмотреть больше кода, чтобы помочь вам найти лучший способ сделать это.

Ответ №1:

Вот что я бы сделал. Это не гламурно и не идеально, но работает на удивление хорошо. Вы просто устанавливаете переменную для добавления выбранного атрибута к вашим тегам опций, ЕСЛИ значение, полученное из формы отправки, совпадает. Затем выводите выбранный атрибут, только если эта переменная соответствует этому параметру. Это может быть намного сложнее, но это работает и просто для понимания.

Добавление значения к самому выбору ничего не делает для вас на самом деле. Оно должно быть добавлено к конкретной опции, которую вы хотите автоматически выбрать.

 <?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>