0

chekboxで複数の行を削除しようとしています。以下は私のコードです

      <?php
$host="localhost"; // Host name 
$username="****"; // Mysql username 
$password="****"; // Mysql password 
$db_name="****"; // Database name 
$tbl_name="****"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$result = mysql_query("SELECT * FROM members WHERE dealer='Panzer Protection'");
?>
<form name="form1" method="post" action="">
      <?php
while($rows=mysql_fetch_array($result)){
?>
      <tr>
        <td bgcolor="#666666"><input name="checkbox[]" type="checkbox" id="checkbox[]"    
value="<? echo $rows['member_id']; ?>"></td>
        <td bgcolor="#666666"><? echo $rows['member_id']; ?></td>
        <td bgcolor="#666666"><center>
          <? echo $rows['member_msisdn']; ?></td>
        <td bgcolor="#666666"><center>
          <? echo $rows['member_name']; ?></td>
        <td bgcolor="#666666"><div align="center"><? echo $rows['dealer']; ?></div>   

 </td>
        <td align="center" bgcolor="#FFFFFF"><a href="control_clientinfo.php?member_id=   
<? echo $rows['member_id']; ?>" class="update">Look Up</a></td>
      </tr>
      <?php
}
?>

<tr>
<td colspan="6" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit"     
id="delete" value="Delete"></td>
</tr>

</form> //Forgot form close in past
<?php

// Check if delete button active, start this 
if($_POST['delete']){
for($i=0;$i<$count;$i++){
$i = 0;
while(list($key, $val) = each($_POST['checkbox'])) {
$sql = "DELETE FROM $tbl_name WHERE id='$val'";
mysql_query($sql);
$i += mysql_affected_rows();
}
}
// if successful redirect to 
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=control_clientlistdel.php\">";
}
}
mysql_close();
?>

それは私が呼ぶリストを私に示し、私はボックスにチェックを入れることができます。削除ボタンを押すと、画面が更新され、チェックしたものはまだそこにあります

4

2 に答える 2

2

まず最初に。mysql本当に古く、廃止されているため、使用することはお勧めできません。

次に、変数をどこに割り当てますか($delete$count

deleteのキーPOSTが設定されているかどうかを確認する必要があります。

if (isset($_POST['delete'])) { // Then the form has been submitted

$countこの後、変数を割り当てます

$checkbox = $_POST['checkbox'];
$count = count($checkbox);

そして、すべてが正常に機能する必要があります。

最終結果

if (isset($_POST['delete'])) {
    $checkbox = $_POST['checkbox'];
    $count = count($checkbox);

    for($i = 0; $i < $count; $i++) {
        $id = (int) $checkbox[$i]; // Parse your value to integer

        if ($id > 0) { // and check if it's bigger then 0
            mysql_query("DELETE FROM table WHERE member_id = $id");
        }
    }
}

データベースと対話するためのmysqliおよびPDOドライバーを確認してください。

于 2013-03-24T14:17:22.560 に答える
0

タイプミスかどうかはわかりませんが、投稿されたコードにfrom終了タグがありません。<table>

....
<td colspan="6" align="center" bgcolor="#FFFFFF">
<input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
</form> //here

そして、if条件で転記された値をチェックする必要があります。方法をposとして使用しているので、$delete正しい方法を使用することです。$_POSTmethod="post"

更新しました

 if(isset($_POST) && $_POST['delete']){ //here
     $count=count($_POST['checkbox']);
    for($i=0;$i<$count;$i++){
      $sql  = "DELETE FROM $tbl_name WHERE id='".$_POST['checkbox'][$i]."'";
      mysql_query($sql);

     }
}

header()を使用してphpでリダイレクトできます

 header( 'Location: http://www.yoursite.com/ontrol_clientlistdel.php' ) ;
于 2013-03-24T14:05:15.743 に答える