2011-10-24 11 views
0

チェックボックスがあるHTMLフォームから入力を取得しようとしています。チェックボックスは、データベースのstudent_idで作成されます。そうですね:チェックボックスのステータスに基づいてデータベース内の項目を削除します

私がしたいのは、「生徒」テーブルをステップ実行し、チェックボックスがチェックされているすべてのエントリをチェックすることです。私はチェックボックスでチェックされているデータベースからエントリを削除したいと思います。

8 $query = "SELECT STUDENT_ID From Students"; 
    9 $result = mysql_query($query) or die(mysql_error()); 
10 while($row=mysql_fetch_array($result)){ 
11 $checkname=$row['STUDENT_ID']; 
12 foreach($_POST[$checkname] as $student_id =>val) 
13 { 
14 if($val == 'YES' 
15  { 
16  echo $_POST['STUDENT_ID']; 
17  $query = "DELETE FROM Students WHERE STUDENT_ID" . mysql_real_escape_string($STUDENT_ID); 
18  } 
19 echo $query; 
20 $result = mysql_query($query) or die(mysql_error()); 
21 //echo $POST['STUDENT_ID']; 
22 } 
23 } 

答えて

1

は、チェックボックスの配列を作成します。

$studentID = $_POST['studentID']; 

    foreach($studentID as $ID){ 
     echo $ID.'<br />'."\n"; 
    } 

EDIT: わからないが、私はこれが正しい方法だと思う:

$studentID = $_POST['studentID']; 

    $i=0; 
    foreach($studentID as $ID){ 
     $i++; 
     echo $_POST['studentID'][$i].'<br />'."\n"; 
    } 
+0

おかげで、これは私を助けました。 –

0

フォームのためにこれを試してみてください:

<input type="checkbox" name="STUDENT_ID[<?php echo $row['STUDENT_ID'] ?>]" value="YES" /> 

とこれをあなたのPHPのループのために:PHPから

<input type="checkbox" name="studentID[]" value="{$row['STUDENT_ID']}" /> 

foreach ($_POST['STUDENT_ID'] as $student_id => $val) { 
    if ($val == 'YES') { 
     $query = "DELETE FROM Students WHERE STUDENT_ID=" . mysql_real_escape_string($student_id); 
     $result = mysql_query($query) or die(mysql_error()); 
    } 
} 
0

これを行うには良い方法が提出され、その後、実行は上の削除されたあなたのチェックボックスからの学生IDを取ることですそれら。

HTML

<input type="checkbox" name="students_to_delete[]" value="{$row['STUDENT_ID']}" /> 

PHP

$students_to_delete = $_POST['students_to_delete']; 
if(is_array($students_to_delete) && count($students_to_delete) > 0) { 
    $query = "DELETE FROM Students WHERE STUDENT_ID IN (" . implode(",", $students_to_delete) . ")"; 
    $result = mysql_query($query) or die(mysql_error()); 
} 
0

上記のコードは、SQLインジェクションに対して脆弱です。誰かがサーバに投稿した値が0 OR STUDENT_ID!=0の場合、Studentsテーブルのすべての行が削除されます。

あなたのコードもすべて非効率です。すべての生徒を戻してから、各生徒を繰り返して削除する必要があるかどうかを確認します。

あなたのマークアップで使用する方が良いでしょう:PHPで

<input type="checkbox" name="STUDENT_TO_DELETE" value="$row['STUDENT_ID']" />

、その後:

foreach ($_POST['STUDENT_TO_DELETE'] as $student_id => $val) {
$sql = "DELETE FROM Students WHERE STUDENT_ID=" . mysql_real_escape_string($student_id); mysql_query($sql); } }

関連する問題