【问题标题】:Delete form with checkbox doesn't work使用复选框删除表单不起作用
【发布时间】:2014-11-14 10:07:30
【问题描述】:

我正在尝试获取一个复选框表单以从数据库/ftp 服务器中删除条目,但我无法获取删除按钮来删除某些内容。可能是因为我错过了一些东西,因为错误报告一直告诉变量 delete 未确定,但我找不到它为什么这么说。

这是我的代码,

<?php error_reporting(E_ALL); ini_set('display_errors', 1);
// Get our database connector
require("includes/conn.php");
?>
<?php
$sql="SELECT * FROM people ORDER BY ID";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
?>

<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4" bgcolor="#FFFFFF"><strong>Selecteer welke auto('s) verkocht zijn</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Foto</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Merkt/Type</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Beschrijving</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){

echo "<div class=\"picture\">";
                    echo "<p>";
?>

<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo "<img src=\"content/uploads/" . $rows['filename'] . "\" alt=\"\" height=\"125\" width=\"200\" /><br />" . "<br />"; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['fname']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['lname']; ?></td>
</tr>

<?php 
					echo "</p>";
                    echo "</div>";
}
?>

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

<?php

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

</table>
</form>
</td>
</tr>
</table>

我在使用该代码时遇到的另一个问题是我希望它也从 FTP 中删除图像,而不仅仅是数据库中的文件名条目。

附注我知道 MySQL 已被弃用,我将在脚本像我想要的那样工作后对其进行编辑。还没来得及看 PDO 和 MySQLi。

【问题讨论】:

    标签: php mysql forms checkbox


    【解决方案1】:

    试试这个:

    <?php
    if(isset($_POST['delete'])){ // Check delete button is clicked
      foreach($_POST['checkbox'] as $del_id){ // loop only checked items and delete
       $sql = "DELETE FROM people WHERE id='$del_id'"; 
       $result = mysql_query($sql);
      }
    }
    ?>
    

    以及您为删除编写的任何逻辑都移至页面顶部,位于所需输出的 ​​html 代码之前。

    【讨论】:

    • 给了我一个不断刷新但仍然是未定义索引的页面:从错误报告中删除消息
    • delete 函数有效,现在未定义的索引没有问题,但它仍然保持刷新,有没有办法让它只刷新一次而不是保持刷新?
    • 删除行 echo "";并在 html 代码之前移动页面顶部的删除代码
    • 抱歉移动了选择查询前的删除代码!
    【解决方案2】:

    您正在尝试使用变量 delete,尽管它没有声明。

    试试

    <?php
    
        // Check if delete button active, start this 
        if($_POST['delete']){
           // Delete the record
        }
    ?>
    
    <form action="" method="post">
    <input name="delete" type="submit" id="delete" value="Delete">
    </form>
    

    【讨论】:

    • 我用你的代码编辑了这个结果: "; } } mysql_close(); ?> 但仍然是相同的结果: 注意:未定义的索引:删除 /sites/mianautoservice.nl/www/delete_multiple.php 第 55 行
    • 您需要将 包裹在表单中以使用 post 方法
    猜你喜欢
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2022-08-15
    • 2012-07-04
    • 2020-04-27
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多