我正在尝试从包含从MySQL表生成的数据的表中删除一行。我看了看这两个问题: How to delete rows of database results using checkbox和 Deleting multiple rows using checkboxes, PHP and MySQL。我理解这两个答案,但我遇到了一个问题。每个问题的复选框设置如下:
<input name="checkbox[<?php echo $row['id']?>]"
和
<input name="checkbox[]" type="checkbox" value="<?php echo $row['topic_id'];?>">
我无法在我的代码中使用其中任何一个,因为我的表是在php中生成的,并且在我的代码中使用括号和引号(复选框名称或值属性,确切地说)会在Sublime中引发语法错误。我想知道是否有任何解决方法吗?
这是我桌子的一大块:
<tbody>
<?php
$query = mysqli_query($db, "SELECT * FROM SOISInventoryList WHERE numInStock = 0 ORDER BY itemName");
if(!$query){
echo "Could not grab query.";
}
else{
while($row = mysqli_fetch_assoc($query)){
echo "<tr>";
echo "<td class='strikeOut'>" . $row['itemName'] . "</td>";
echo "<td class='strikeOut'>" . $row['numInStock'] . "</td>";
echo "<td class='strikeOut'>" . "$" . $row['pricePerUnit'] . "</td>";
echo "<td class='delete'>" . "<input type='checkbox' name='delete'>";
echo "</tr>";
}
}
?>
</tbody>
感谢任何形式的帮助或建议。
答案 0 :(得分:0)
您不必依赖于您在那里使用的确切语法。您可以轻松地将整个数组传递给JavaScript,并将其呈现在页面上。最后,每个复选框中您真正需要的是“它是否经过检查”,如果是,“分配给它的ID是什么?”。
然后,当您将其发回PHP时,您可以确定如何处理该信息。比方说,删除具有该ID的行。
答案 1 :(得分:0)
您的语法问题(简而言之)来自于您使用echo命令单独打印每行HTML。对于您尝试执行的任务类型,请尝试alternative syntax
<?php while($row = mysqli_fetch_assoc($query)) : ?>
<tr>
<td class='strikeOut'> <?= $row['itemName'] ?> </td>
(other TDs)
<td class='delete'><input type='checkbox' name='delete[<?= $row['id']?>]'></td>
</tr>
<?php endwhile ?>
以这种方式打印HTML可以省去很多麻烦(看起来更好)!