Php 当重定向回起始页时,如何显示在下拉菜单中选择的原始名称?
我想返回到我的原始索引页面,让下拉菜单显示最初选择的名称。然后,我想选择另一个学生并再次执行任务 目前,我能够:Php 当重定向回起始页时,如何显示在下拉菜单中选择的原始名称?,php,html,Php,Html,我想返回到我的原始索引页面,让下拉菜单显示最初选择的名称。然后,我想选择另一个学生并再次执行任务 目前,我能够: 从下拉菜单中选择学生并将所选学生提交到另一页 更新学生的特征并重定向回原始页面 我可以在下拉菜单中显示学生姓名,但当我选择一个新学生时,我选择的正上方的学生将被选中 第1页代码,带下拉菜单 <div> <?php if (session_status() == PHP_SESSION_NONE || session_id() == '') {
<div>
<?php
if (session_status() == PHP_SESSION_NONE || session_id() == '') {
session_start();
$pid = $_SESSION['stu_name_id_select'];
echo $pid;
}
?>
<form name = "test" method="POST" action = "">
<?php
$select_student= $db->prepare("SELECT stu_name_id FROM students WHERE active = 'Yes' order by stu_name_id"); //sql select query
$select_student->execute();
echo "<select name='stu_name_id_select' onChange ='this.form.submit()'><option>Select</option>";
while ($result1=$select_student->fetch(PDO::FETCH_ASSOC)){
echo "<option value = '".$pid."'";
//echo "<option value = '".$result1['stu_name_id']."'";
if (isset($_POST['stu_name_id_select']) && $_POST['stu_name_id_select'] == $result1['stu_name_id']) echo 'selected="selected"';
echo ">".$result1['stu_name_id']."</option>";
$pid = $resule1['stu_name_id'];
}
echo "</select>";
?>
<input type="submit" value="Add/Edit Records" onclick="test.action='edit_records.php'; return true;" />
<input type="submit" value="Add/Edit Accommodations" onclick="test.action='accommodations.php'; return true;" />
</form>
</div>
您将在循环的末尾而不是开始处重新分配
$pid
,因此每个学生实际上都有上一个学生的pid
只需移动$pid=$result1['stu_name_id']
作为while
循环启动后的第一条指令
while ($result1=$select_student->fetch(PDO::FETCH_ASSOC)){
$pid = $resule1['stu_name_id'];
echo "<option value = '".$pid."'";
if (isset($_POST['stu_name_id_select']) && $_POST['stu_name_id_select'] == $result1['stu_name_id']) echo 'selected="selected"';
echo ">".$result1['stu_name_id']."</option>";
}
while($result1=$select\u student->fetch(PDO::fetch\u ASSOC)){
$pid=$result1['stu_name_id'];
回显“$result1['stu_name_id'”;
}
我通过更改此代码解决了此问题
while ($result1=$select_student->fetch(PDO::FETCH_ASSOC)){
echo "<option value = '".$pid."'";
if (isset($_POST['stu_name_id_select']) && $_POST['stu_name_id_select'] == $result1['stu_name_id']) echo 'selected="selected"';
echo ">".$result1['stu_name_id']."</option>";
$pid = $result1['stu_name_id'];
}
while($result1=$select\u student->fetch(PDO::fetch\u ASSOC)){
回显“$result1['stu_name_id'”;
$pid=$result1['stu_name_id'];
}
到
foreach($result1作为$row){
如果(isset($\u会话['stu\u name\u id\u select'])和&$\u会话['stu\u name\u id\u select']=$row['stu\u name\u id']))
{
回显“$”会话['stu\u name\u id\u select'];
$\u POST['stu\u name\u id\u select']=$\u会话['stu\u name\u id\u select'];
取消设置($_会话['stu\u name\u id\u select'];)
否则{
回显“$row['stu_name_id']。”;}
}
必须首先将会话启动
功能发送到浏览器,否则它将无法正常工作。你的不是第一件事…@Kinglish回声$pid显示的是正确的名称,所以我认为这部分工作正常。如果我删除这一行,$pid=$result1['stu_name_id'];下拉菜单显示正确的名称,但由于$pid未更新,因此我无法选择新学生。当我移动$pid=$Result1['stu_name_id'];我可以从下拉窗口中选择学生的姓名,在我的选择上方选择学生的问题不会发生,但当我返回到索引页时,所选学生的姓名不再显示在下拉窗口中,现在显示select。
while ($result1=$select_student->fetch(PDO::FETCH_ASSOC)){
echo "<option value = '".$pid."'";
if (isset($_POST['stu_name_id_select']) && $_POST['stu_name_id_select'] == $result1['stu_name_id']) echo 'selected="selected"';
echo ">".$result1['stu_name_id']."</option>";
$pid = $result1['stu_name_id'];
}
foreach ($result1 as $row){
if(isset($_SESSION['stu_name_id_select']) && $_SESSION['stu_name_id_select'] == $row['stu_name_id'])
{
echo "<option selected = 'selected' value=\"".$_SESSION['stu_name_id_select']."\">".$_SESSION['stu_name_id_select']."</option>";
$_POST['stu_name_id_select'] = $_SESSION['stu_name_id_select'];
unset($_SESSION['stu_name_id_select']);}
else{
echo "<option value = '".$row['stu_name_id']."'";
if (isset($_POST['stu_name_id_select']) && $_POST['stu_name_id_select'] == $row['stu_name_id']) echo 'selected="selected"';
echo ">".$row['stu_name_id']."</option>";}
}