PHP中isset无法检测到删除按钮点击的问题排查
问题分析与解决
核心问题1:提交按钮未包含在<form>标签内
submit类型的按钮必须放在<form>标签中才能触发HTTP请求,你的代码里直接在表格中添加submit按钮,未包裹form标签,点击时不会向服务器发送POST数据,导致isset($_POST['Delete'])永远不成立。
核心问题2:参数传递逻辑错误
- 你试图通过
$_GET['id']获取ID,但如果是POST提交,参数应通过POST传递; - 按钮的
id属性不会被提交到服务器,只有name和value会被携带。当前所有按钮的name都是"Delete",点击后只能拿到$_POST['Delete']的值为"Drop",无法区分是哪一行的按钮。
额外HTML语法错误
生成按钮的代码里多写了一个<tr>标签:
echo '<td><center><input type="submit" id='.$book_id.' name="Delete" value ="Drop"><center></td><tr>';
末尾的<tr>应为</tr>,会导致表格结构混乱。
修正后的代码示例
1. 包裹表单并传递ID
给每个按钮所在单元格单独包裹form,通过隐藏字段传递book_id:
if(mysqli_num_rows($result) > 0) { echo "<br><br>"; echo "<table border='1'>"; echo "<th>BOOK ID</th><th>BOOK NAME</th><th>PRICE</th><th>ACTION</th>"; while ($row = mysqli_fetch_assoc($result)) { $book_id = $row['book_id']; echo "<tr>"; echo "<td>" .$row['book_id']. "</td>"; echo "<td>" .$row['book_name']. "</td>"; echo "<td>" .$row['price']. "</td>"; echo '<td><center> <form method="post" action=""> <input type="hidden" name="book_id" value="'.$book_id.'"> <input type="submit" name="Delete" value="Drop"> </form> </center></td>'; echo "</tr>"; } echo "</table>"; }
2. 修正后端检测代码
通过POST获取传递的book_id:
if (isset($_POST['Delete'])) { $ID = $_POST['book_id']; echo $ID; // 此处可添加数据库删除逻辑 }
内容的提问来源于stack exchange,提问作者lakshitha dilhan
相关产品推荐
相关产品推荐

