我正在为辅导中心创建一个学生登录网站。学生登录导师后可以看到学生信息,导师也可以提交学生信息和导师姓名。我的问题是,无论我选择导师名称,它总是插入最后一个导师名称。我正在使用PDO进行数据库连接。请有人能给我一个想法,我该如何解决这个问题。谢谢..
这是我的html表单代码:
<form action="" method="post">
<table border="1">
<tr>
<th>Student Name</th>
<th>course</th>
<th>Tutor</th>
<th>Actions</th>
</tr>
<?php
//select all users from database
$rows = $database->selectFromOnline();
foreach($rows as $row){
$time = $row['time_out'];
?>
<tr>
<td> <?php echo $row['user_name'] ?></td>
<td> <?php echo $row['course'] ?> </td>
<td>
<select name='tutor'>
<?php
//select all instructor from instructor table
$sqls = $database->selectFromTutor();
foreach($sqls as $sql){
echo"<option value='$sql[tutor_ln]'> $sql[tutor_ln] </option>";
}
?>
</select>
</td>
<?php
echo" <td> <a href='tutor.php?user_name=$row[user_name]&&course=$row[course]&&tutor=$sql[tutor_ln]'>Delete</a></td>";
?>
</tr>
<?php
}
?>
</table>
</form>
这是我的插入代码:
if(isset($_GET['user_name'])){
$user_name = $_GET['user_name'];
$course = $_GET['course'];
// if i use $_POST['tutor'] it gives me undefined variable error
$tutor = $_GET['tutor'];
//insert into report database table
$database->insetIntoReport($user_name, $course, $tutor);
//Redirect to current page
header('Location: tutor.php');
exit;
}
?>
答案 0 :(得分:2)
您在表单中输出多个<select name='tutor'>
。每次执行内部->selectFromTutor()
时都会选择一个。因此,您将获得导师选择的MULTIPLE实例,并且只有最后一个实例将与表单的其余部分一起提交。
答案 1 :(得分:1)
您的表单显示<form action="" method="post">
您应该在代码中使用$ _POST变量。
答案 2 :(得分:1)
如果您在表单上使用method="post"
,则应使用$_POST[]
答案 3 :(得分:1)
除了其他答案之外,如果您不想打扰,表格是通过POST还是GET发送,您还可以使用$_REQUEST
。
答案 4 :(得分:0)
我猜你不愿意使用post然后你应该写一个像
这样的javascript函数<script type="text/javascript">
function DeleteTutor(name,course){
var tutor=document.getElementById('tutor').value;
window.location.href = 'tutor.php?username='+name+'&course='+course+'&tutor='+tutor;
}
</script>
捕获变量$name
和$course
中的名称和课程,并将删除链接修改为
<?php echo"<td> <a onclick=\"DeleteTutor('$name', '$course')\">Delete</a></td>"; ?>
不要忘记添加id以供选择以使其正常工作
<select name='tutor' id="tutor">