2011-08-11 14 views
-2

私はここに新しいですが、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'; 
    ?> 

おかげでたくさん。

+2

なっ隠し入力を削除して、この

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

のようなあなたのチェックボックスを構築、あなたのselected_coursesテーブルからcourse_code列をドロップすることをお勧めしたいです? – Dor

答えて

0

あなたはここにいくつかの問題、あなたはselected_courses表で同じ行(course_codecid)への2つの異なる基準値を格納しようとしているという主なものを持っています。実際にはプライマリキー(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(); 
} 
関連する問題