【问题标题】:Can't delete multiple rows from database with checkbox PHP无法使用复选框 PHP 从数据库中删除多行
【发布时间】:2016-12-05 15:16:02
【问题描述】:

我正在学习php,现在我正在尝试使用数据库等东西。我的代码(如下)似乎不起作用,我无法解决原因。它看起来不错,但在推动“删除”之后仍然没有任何反应。也许你能帮助我。提前致谢。

<?php
$host="localhost";
$username="root";
$password="";
$db_name="zurnalas";
$tbl_name="zurnalas";

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

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

$count=mysql_num_rows($result);
?>
<form name="form1" method="post" action="">
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="4" bgcolor="#FFFFFF"><strong>Žurnalų trinimas iš duomenų bazės</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Pavadinimas</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Kiekis</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Leidykla</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Metai</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Kaina</strong></td>
</tr>

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

<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['id']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['pavadinimas']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['kiekis']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['leidykla']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['metai']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['kaina']; ?></td>
</tr>

<?php
}
?>

<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($_POST['delete']){
$checkbox[] = $_POST['checkbox[]'];
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=trinti.php\">";
}
}
mysql_close();
?>

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

【问题讨论】:

  • 开启错误报告,不要隐藏消息。 $delete 看起来是未定义的,除非您排除部分代码。
  • 不,这是完整的代码。按下“Delete”按钮后如何设置?
  • 由于您的表单方法是post,并且您的输入名称是delete,PHP 将在$_POST['delete'] 提供。
  • 你没有为它分配一个 POST 数组,所以你现在拥有的东西在你这样做之前不会起作用。
  • @Devon 哦...我在发布之前尝试过。它没有帮助我......我已经编辑了代码。

标签: php html mysql


【解决方案1】:

您表单的操作字段为空。您必须使用 php "$checkbox = $_POST['checkbox']" 从表单中获取字段。在你可以像你一样做之后,或者你可以编写其他mysql查询“ DELETE FROM YOUR_TABLE WHERE id in (1,2,3,4) ”。

【讨论】:

  • 表单上的空操作仅意味着它在同一页面上重定向。
  • 请尝试不带 ' 的 '$del_id' 。试试 $del_id
  • 从 $_POST[' checkbox[] '] 和 $checkbox[] 中删除 []。 $checkbox = $_POST['checkbox'];
猜你喜欢
  • 2017-08-19
  • 2014-07-18
  • 2015-03-18
  • 2018-03-09
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多