非submit类型按钮的PHP点击状态判断及if条件写法咨询
非submit按钮的PHP点击判断方案
非submit类型的按钮不会自动触发表单提交,没法直接通过$_POST/$_GET获取点击状态,要在同一页面判断按钮点击,常用以下两种方案:
方案1:通过URL参数传递状态
修改按钮的跳转逻辑,在URL里加标识参数,PHP通过$_GET读取参数判断。
优化后的前端代码
$id = $row['Todo_id']; // 给跳转URL添加action参数,标记按钮类型 $update_url = "/dashboard/SAM/Ass3_update_page.php?id=$id&action=update"; $delete_url = "/dashboard/SAM/Ass3_todo_page.php?id=$id&action=delete"; echo "<tr>"; echo "<td>{$row['Todo_id']}</td>"; echo "<td>{$row['Todo_managername']}</td>"; echo "<td>{$row['Todo_workassign']}</td>"; echo "<td>{$row['Todo_workdesc']}</td>"; echo "<td>{$row['Todo_date']}</td>"; // 去掉冗余的a标签,按钮直接通过onclick跳转 echo "<td><button type='button' onclick=\"location.href='$update_url'\">Update</button></td>"; echo "<td><button type='button' onclick=\"location.href='$delete_url'\">Delete</button></td>"; echo "</tr>";
PHP判断逻辑(页面顶部)
// 判断Update按钮是否被点击 if(isset($_GET['action']) && $_GET['action'] === 'update') { $todo_id = $_GET['id']; // 这里写Update对应的业务逻辑 echo "Update按钮已点击,待办ID:{$todo_id}"; } // 判断Delete按钮是否被点击 if(isset($_GET['action']) && $_GET['action'] === 'delete') { $todo_id = $_GET['id']; // 这里写Delete对应的业务逻辑 echo "Delete按钮已点击,待办ID:{$todo_id}"; }
方案2:用表单+隐藏字段提交状态
把按钮放进表单,点击时提交表单,通过隐藏字段传递按钮标识,PHP用$_POST判断。
优化后的前端代码
$id = $row['Todo_id']; echo "<tr>"; echo "<td>{$row['Todo_id']}</td>"; echo "<td>{$row['Todo_managername']}</td>"; echo "<td>{$row['Todo_workassign']}</td>"; echo "<td>{$row['Todo_workdesc']}</td>"; echo "<td>{$row['Todo_date']}</td>"; // Update按钮对应的表单 echo "<td>"; echo "<form method='post' action=''>"; echo "<input type='hidden' name='action' value='update'>"; echo "<input type='hidden' name='todo_id' value='{$id}'>"; echo "<button type='submit'>Update</button>"; echo "</form>"; echo "</td>"; // Delete按钮对应的表单 echo "<td>"; echo "<form method='post' action=''>"; echo "<input type='hidden' name='action' value='delete'>"; echo "<input type='hidden' name='todo_id' value='{$id}'>"; echo "<button type='submit'>Delete</button>"; echo "</form>"; echo "</td>"; echo "</tr>";
PHP判断逻辑(页面顶部)
if($_SERVER['REQUEST_METHOD'] === 'POST') { $todo_id = $_POST['todo_id']; // 判断Update按钮点击 if(isset($_POST['action']) && $_POST['action'] === 'update') { // 执行Update业务逻辑 echo "Update按钮已点击,待办ID:{$todo_id}"; } // 判断Delete按钮点击 if(isset($_POST['action']) && $_POST['action'] === 'delete') { // 执行Delete业务逻辑 echo "Delete按钮已点击,待办ID:{$todo_id}"; } }
原代码优化提示
- 按钮里嵌套
<a>标签是冗余的,onclick跳转和<a>的href功能重复,保留一个就行 - 字符串拼接可以用双引号简化写法,比如
"{$row['Todo_id']}"比".$row['Todo_id']."更简洁
内容的提问来源于stack exchange,提问作者sahil bhatt
相关产品推荐
相关产品推荐

