【问题标题】:Deleting Mysql rows with checkbox用复选框删除Mysql行
【发布时间】:2015-08-29 05:45:02
【问题描述】:

我有一个页面,我在其中使用 PHP 和 HTML 从 Mysql 呈现值表。

我想在单击删除按钮时删除用复选框选中的行。不幸的是,单击按钮时没有任何反应,我完全不知道该去哪里看。

代码如下(数据库连接已被省略,但它可以工作)。

<body>

<?php
$delete = $_POST['checkbox'];
$query = "SELECT * FROM Cards";
$result = mysql_query($query);

echo "<table>";
echo "<tr><td>Name</td><td>Quantity</td><td>Color</td><td>Type</td></tr>";
while ($row = mysql_fetch_array($result)){
    echo "<tr><td><input type='checkbox' name='checkbox[]" . $row['id'] . "]'></td>";
    echo "<td>" . $row['Name'] . "</td>";
    echo "<td>" . $row['Quantity'] . "</td>";
    echo "<td>" . $row['Color'] . "</td>";
    echo "<td>" . $row['CardType'] . "</td></tr>";
}
mysql_free_result($result);
echo "</table>";
?>

</body>
<tr>
<td colspan="5" align="center"><input name="delete" type="SUBMIT" id="delete" value="delete" action="POST"></td>
</tr>

<?php
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 Cards WHERE id = $id");
        }
    }
}
?>

<?php include "../footer.htm";?>

【问题讨论】:

标签: php mysql checkbox sql-delete


【解决方案1】:

试试这个:

<body>

<?php

$connect=mysqli_connect("Host","Username","Password","Database"); /* REPLACE NECESSARY DATA */

if(mysqli_connect_errno()){

echo "Error".mysqli_connect_error();
}

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

    for($i=0;$i<$count;$i++){

        if(!empty($checkbox[$i])){ /* CHECK IF CHECKBOX IS CLICKED OR NOT */

        $id = mysqli_real_escape_string($connect,$checkbox[$i]); /* ESCAPE STRINGS */
        mysqli_query($connect,"DELETE FROM Cards WHERE id = '$id'"); /* EXECUTE QUERY AND USE ' ' (apostrophe) IN YOUR VARIABLE */

        } /* END OF IF NOT EMPTY CHECKBOX */

    } /* END OF FOR LOOP */

} /* END OF ISSET DELETE */

$query = "SELECT * FROM Cards"; /* SELECT FROM Cards TABLE */
$result = mysqli_query($connect,$query); /* EXECUTE QUERY */

echo "<form action='' method='POST'>"; /* SUBMIT PAGE ON ITSELF */

echo "<table>";
echo "<tr><td>Name</td><td>Quantity</td><td>Color</td><td>Type</td></tr>";
while ($row = mysqli_fetch_array($result)){ /* FETCH ARRAY */
    $id=mysqli_real_escape_string($connect,$row['id']);
    echo "<tr><td><input type='checkbox' name='checkbox[]' value='$id'></td>";
    echo "<td>" . $row['Name'] . "</td>";
    echo "<td>" . $row['Quantity'] . "</td>";
    echo "<td>" . $row['Color'] . "</td>";
    echo "<td>" . $row['CardType'] . "</td></tr>";
}
mysqli_free_result($result);
echo "</table>";
?>

<tr>
<td colspan="5" align="center"><input name="delete" type="SUBMIT" id="delete" value="delete" action="POST"></td>
</tr>
</form>

<?php include "../footer.htm";?>
</body>
  • 我已将您的代码从已弃用的 MySQL 转换为 MySQLi
  • 并使用 empty() 函数确定选中的复选框。
  • 您忘记为您的 html 设置 &lt;form&gt; 函数。
  • 还忘记为您的复选框使用值标签。

我已将 /* */ 中引用的解释放入我提供的代码中。

【讨论】:

  • 嘿,谢谢!看起来很棒。不幸的是,单击“删除”按钮时没有任何反应。知道为什么吗?
  • 你试过我更新的答案了吗?尝试再次使用它,然后返回给我结果
  • 是的,完全按照所写的方式使用它(替换我的数据库连接信息),没有任何反应。选中一两个框并单击删除会刷新页面,但不会删除。
  • 再次更新。我看到您的输入类型复选框没有值标签。再试一次。
  • 太棒了!完美运行!非常感谢您的帮助。
【解决方案2】:

试试这个:

<body>

<?php
$delete = $_POST['checkbox'];
$query = "SELECT * FROM Cards";
$result = mysql_query($query);

echo "<form method=post action=''>";
echo "<table>";
echo "<tr><td>Name</td>
          <td>Quantity</td>
          <td>Color</td>
          <td>Type</td></tr>";
while ($row = mysql_fetch_array($result)){

        $content .= <<< END
    <tr>
        <td><input type="checkbox" name="checkbox" value="{$row['id']}"></td>
        <td>{$row['Name']}</td>
        <td>{$row['Quantity']}</td>
        <td>{$row['Color']}</td>
        <td>{$row['CardType']}</td>
    </tr>
END;
}
echo $content;
mysql_free_result($result);
?>
<tr>
<td colspan="5" align="center"><input name="delete" type="SUBMIT" id="delete" value="delete"></td>
</tr>
</table></form>
</body>

<?php
if (isset($_POST['delete'])) {
    $checkbox = $_POST['checkbox'];

    foreach($checkbox as $id) {

        $id = (int) $id;

        mysql_query("DELETE FROM Cards WHERE id = $id");


    }

}
?>

<?php include "../footer.htm";?>

【讨论】:

  • 尝试使用mysqli_*函数。 mysql_* 函数将被弃用。
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
相关资源
最近更新 更多