0

我正在为辅导中心创建一个学生登录网站。学生登录后,导师可以看到学生信息,导师也可以连同导师姓名一起提交学生信息。我的问题是无论我选择导师姓名,它总是插入最后一个导师姓名。我正在使用 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;
}
?>
4

5 回答 5

2

<select name='tutor'>在表单中输出多个。每次执行内部时选择一次->selectFromTutor()。因此,您将获得导师选择的多个实例,并且只有最后一个实例将与表格的其余部分一起提交。

于 2013-07-02T15:14:09.563 回答
1

您的表单说<form action="" method="post">您应该在代码中使用 $_POST 变量。

于 2013-07-02T15:13:13.287 回答
1

如果您method="post"在表单上使用,则应使用$_POST[]

于 2013-07-02T15:13:25.123 回答
1

除了其他答案之外,$_REQUEST如果不想打扰,您还可以使用表单是通过 POST 还是 GET 发送的。

于 2013-07-02T15:14:34.847 回答
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">
于 2013-07-02T15:56:39.763 回答