如何将隐藏字段值与复选框一起插入到数据库中

时间:2011-08-11 23:38:21

标签: php

我是新来的,但我在将id和复选框的值插入我的数据库时遇到问题,这里是表单的代码:

  <?php

 include('db.php');

 $sql = "select * from sheet1 order by course_level asc";
 $r = mysqli_query($dbc,$sql) or die(mysqli_error($dbc));
$co = '';
while($row = mysqli_fetch_array($r)) {
$co .= '<tr><td>'.$row['course_level'].'</td><td><input name="courses[]"
  type= "checkbox"    value   =    "'.$row['course_code'].'">'.$row['course_code'].'
</td>       <td>'.$row['course_title'].'</td><td>'.$row['course_lecturer'].'
 </td><input   type=hidden    name=cid[] value="'.$row['cid'].'">
 </tr>';

  }

 ?>

这是行动代码:

    <?php
   include('db.php');
  if(isset($_POST['courses']))
   echo 'lie';
   else
  echo 'true';
  foreach($_POST['courses'] as $row=>$id){

  $courses=$id;
  $cid = $_POST['cid'][$row];
  $sql = "insert into selected_courses values ('','$courses','$cid')";
  $r = mysqli_query($dbc,$sql);
  }
  if($r)
  echo 'done';
  ?>

非常感谢。

1 个答案:

答案 0 :(得分:0)

这里有几个问题,主要问题是您试图将两个不同的参考值存储到course_code表中的同一行(cidselected_courses)。您应该只存储主键(cid?)。

我建议您从course_code表中删除selected_courses列,删除隐藏的输入并构建您的复选框

<input type="checkbox"
       name="courses[]"
       value="<?php echo htmlspecialchars($row['cid']) ?>">

然后您的INSERT查询就变成了

// Forget mysqli, move to PDO
$stmt = $dbc->prepare('INSERT INTO selected_courses (cid) VALUES (?)');
$stmt->bindParam(1, $cid);
foreach ($_POST['courses'] as $cid) {
    $stmt->execute();
}