0

によって選択されたときにテーブルからレコードを削除するために、コード(以下に貼り付けられています)を使用していますcheckbox。動作していますが、テーブルからレコードが削除されておらず、echo「レコードが正常に削除されました」と表示されているだけです。

私のコードを見て、いくつかの変更を提案してください。

<?php
echo "Hiiiiiiiiii";
include("conn.php");
$sql="select * from test ";

$res=mysql_query($sql) or die(mysql_error());
?>

<form name="form1" method="POST" action="">
    <table width="578" border="1" align="center" id="menu">
    <tr>
    <th></th>
    <th>id</th>
    <th>Name</th>
    <th>email</th>
    <th>phno</th>
 </tr>

<?php
 while($row=mysql_fetch_array($res))
 {
?>

 <tr>

    <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td>
    <td><?php echo $row['id'];?></td>

    <td><?php echo $row['name'];?></td>
    <td><?php echo $row['emailid'];?></td>

    <td><?php echo $row['phno'];?></td>
    <?php
    echo"<td><a href='update.php?id=".$row['id']."'>Update</a></td>";
    ?>
 <?php
  }
 ?>  
 <tr><td><input type="submit" name="delete" value="Delete" id="delete"></td></tr></tr></table>

 <?php
// Check if delete button active, start this
$count = mysql_num_rows($res);
echo "$count";

if(isset($_POST['delete']))
    {
         $delete_id = $_POST['checkbox'];
         $id = count($delete_id );
         if (count($id) > 0)
          {
             foreach ($delete_id as $id_d)
             {
                $sql = "DELETE FROM `test` WHERE id='$id_d'";
                $delete = mysql_query($sql);
            }
        }
        if($delete)
        {
            echo $id." Records deleted Successfully.";
        }
    }
>?
4

8 に答える 8

2

error_reporting(E_ALL);ファイルの先頭に追加します。これで、すべてのエラーを確認できるようになります。 http://php.net/manual/en/function.error-reporting.php

また、var_dump()変数に実際に何が含まれているかを確認するために使用します。実行var_dump($_POST);すると、投稿に実際に何が含まれているかを明確に確認できます。 http://php.net/manual/en/function.var-dump.php

于 2012-09-19T07:25:47.910 に答える
1
if(isset($_POST['delete'])){
    $delete = false;
    $ids = array();
    foreach($_POST['checkbox'] as $val){
        $ids[] = (int) $val;
    }
    $ids = implode("','", $ids);
    $sql = "DELETE FROM `test` WHERE id IN ('".$ids."')";
    $delete = mysql_query($sql);
    $id = mysql_affected_rows();
    if($delete){
        echo $id." Records deleted Successfully.";
    }
}

また、チェックボックスには次のものが必要です。

<input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $row['id']; ?>">
于 2012-09-19T07:19:33.160 に答える
1

レコードを選択する前に削除コードを入力すると、DBで使用可能な実際のレコードを表示できるのはあなただけです。

    <?php
    echo "Hiiiiiiiiii";
    include("conn.php");

    if(isset($_POST['delete']))
        {
             $delete_id = $_POST['checkbox'];
             $id = count($delete_id );
             if (count($id) > 0)
              {
                 foreach ($delete_id as $id_d)
                 {
                    $sql = "DELETE FROM `test` WHERE id='$id_d'";
                    $delete = mysql_query($sql);
                }
            }
            if($delete)
            {
                echo $id." Records deleted Successfully.";
            }
        }


    $sql="select * from test ";

    $res=mysql_query($sql) or die(mysql_error());
    ?>
    <form name="form1" method="POST" action="">
        <table width="578" border="1" align="center" id="menu">
        <tr>
        <th></th>
        <th>id</th>
        <th>Name</th>
        <th>email</th>
        <th>phno</th>
     </tr>

<?php
 while($row=mysql_fetch_array($res))
 {
?>

 <tr>

    <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td>
    <td><?php echo $row['id'];?></td>

    <td><?php echo $row['name'];?></td>
    <td><?php echo $row['emailid'];?></td>

    <td><?php echo $row['phno'];?></td>
    <?php
    echo"<td><a href='update.php?id=".$row['id']."'>Update</a></td>";
    ?>
 <?php
  }
 ?> 
 <tr><td><input type="submit" name="delete" value="Delete" id="delete"></td></tr></tr></table>

 <?php
// Check if delete button active, start this
$count = mysql_num_rows($res);
echo "$count";
>?
于 2012-09-19T07:22:16.957 に答える
0

IDを出力するコードにタイプミスがあります。

... value="<? echo $rows['id']; ?>">

そのはず

... value="<? echo $row['id']; ?>">

コードはSQLインジェクション攻撃に対しても脆弱であることに注意してください。POSTリクエストのIDが本当に整数であるかどうかを確認する必要があります。

于 2012-09-19T07:19:28.720 に答える
0
<? echo $rows['id']; ?>

ここには$rowsはありません。

<? echo $row['id']; ?>
于 2012-09-19T07:20:11.480 に答える
0

チェックボックスには次のような名前を付ける必要があります

name="checkbox[<?php echo $row['id'] ?>]"

そして、あなたが削除しようとしているとき

foreach ($_POST['checkbox'] as $id => $delete) {
    // delete id
}

カウントでIDを選択する方法はかなり厄介です。また、削除するのは1行だけです。これは、カウントがIDではないため、明らかに存在しません。また、チェックボックスの値は、チェックボックスがオンになっているかどうかを示すインジケーターであり、通常は値を保持していません。通常の方法は、チェックボックスの実際の意味を名前に保持させることです。

于 2012-09-19T07:21:38.620 に答える
0

このコードをコード内の以下に移動する必要がありinclude("conn.php");ます

if (isset($_POST['delete'])) {
    $delete_id = $_POST['checkbox'];
    $id        = count($delete_id);
    if (count($id) > 0) {
        foreach ($delete_id as $id_d) {
            $sql    = "DELETE FROM `test` WHERE id='$id_d'";
            $delete = mysql_query($sql);
        }
    }
    if ($delete) {
        echo $id . " Records deleted Successfully.";
    }
}
于 2012-09-19T07:55:17.593 に答える
0
<td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id'];?>"></td>
<td><?php echo $row['id'];?></td>

完全に機能させるには、以下のように変更する必要があります。

<td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="**<?php** echo $rows['id']; ?>"></td>
于 2013-08-06T16:21:55.193 に答える