从HTML表

时间:2017-09-16 17:26:05

标签: php mysql

我有一些这样的样本数据,它是从数据库生成的 sample data

我想通过相应行中的Assign按钮插入单行值 例如。通过单击第一行分配按钮我要插入'CSE412','人工智能','3' 我的问题是当我点击任何一个分配按钮时,从数据库生成的所有数据都插入到数据库中。 我的尝试是

<?php
    $stmt = $conn->prepare("SELECT * FROM tbl_course");
    $stmt->execute();
    $i = 0;
    while($row = $stmt->fetch()) {
      $student_id = $_GET['id'];
      $course_id  = $row['id'];
?>
<form class="" action="" method="post">
<tr style="border-top: 1px solid #32383e;">
  <td><?php echo ++$i; ?></td>
  <td><?php echo $row['course_code']; ?></td>
  <td><?php echo $row['course_title']; ?></td>
  <td><?php echo $row['credit']; ?></td>
  <td>
    <?php
      if ($_SERVER["REQUEST_METHOD"]=="POST"){
        $sql = "INSERT INTO tbl_course_enroll (student_id, course_id) VALUES ('$student_id', '$course_id')";
        $conn->exec($sql);
      }
    ?>
        <input type="submit" name="" value="Assign" class="btn btn-primary">
    </form>
  </td>
</tr>
<?php
  }
  $conn = null;
?>

1 个答案:

答案 0 :(得分:1)

首先,将if ($_SERVER["REQUEST_METHOD"]=="POST"){ ... }块置于while()循环之外,因为它会导致重复INSERT操作。现在的问题是,如何在单击相应的分配按钮后插入特定的行数据?这是解决方案:

  • 按以下方式更改表单的action属性,

    <form ... action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" ...>
    
  • 分配按钮的name属性中指定一个值。

    <input type="submit" name="assign" value="Assign" class="btn btn-primary">
    
  • 当用户点击 Assign 按钮时,按以下方式存储相应的行详细信息,

    if (isset($_POST['assign'])){
        $stmt = $conn->prepare("INSERT INTO tbl_course_enroll (student_id, course_id) VALUES (?,?)");
        $stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
        $stmt->bindParam(2, $_GET['cid'], PDO::PARAM_STR, 12);
        if($stmt->execute()){
            // INSERT operation successful
        }
    }
    

这是完整的代码,

<?php
    if (isset($_POST['assign'])){
        $stmt = $conn->prepare("INSERT INTO tbl_course_enroll (student_id, course_id) VALUES (?,?)");
        $stmt->bindParam(1, $_GET['id'], PDO::PARAM_INT);
        $stmt->bindParam(2, $_GET['cid'], PDO::PARAM_STR, 12);
        if($stmt->execute()){
            // INSERT operation successful
        }
    }

    $stmt = $conn->prepare("SELECT * FROM tbl_course");
    $stmt->execute();
    $i = 0;
    while($row = $stmt->fetch()) {
        $student_id = $_GET['id'];
        $course_id  = $row['id'];
?>
    <form class="" action="?id=<?php echo $student_id; ?>&cid=<?php echo $course_id; ?>" method="post">
        <tr style="border-top: 1px solid #32383e;">
            <td><?php echo ++$i; ?></td>
            <td><?php echo $row['course_code']; ?></td>
            <td><?php echo $row['course_title']; ?></td>
            <td><?php echo $row['credit']; ?></td>
            <td>
                <input type="submit" name="assign" value="Assign" class="btn btn-primary">
            </td>
        </tr>
    </form>
<?php
    }
  $conn = null;
?>