如何在PHP中实现「按钮值===元素ID」时修改对应元素?
问题解决方法
核心错误修正
你的PHP代码存在逻辑错误:isset($_POST['expand'])==='id'中,isset()返回的是布尔值(true/false),不能直接和字符串'id'比较。正确逻辑是先确认$_POST['expand']存在,再将它的值与当前循环的$row['id']做对比。
修正后的PHP代码
<?php // 初始化默认样式参数 $ariabool = "true"; $gridclass = "gridhidden"; // 检查是否有POST提交的expand参数 if(isset($_POST['expand'])) { // 需在遍历SQL结果的循环内执行此判断,匹配当前行的id $submitted_id = $_POST['expand']; if($submitted_id === $row['id']) { $gridclass = 'gridexpanded'; $ariabool = 'false'; } } ?>
关键注意事项
- 上述PHP代码必须放在遍历SQL查询结果的循环内部,才能逐个判断每个
$row['id']是否与提交的按钮value匹配。 - HTML中的PHP变量需要用
echo输出,否则变量无法被解析,修正后的HTML片段如下:
<div class='kagrid' > <div class='griddisplay'> <img src="<?php echo $row['img']; ?>" /> <h2><?php echo $row['name']; ?></h2> <div><?php echo $row['primpro']; ?></div> <a href="<?php echo $row['src']; ?>">Image Source</a> <!-- 按钮需包裹在form内才能触发POST提交 --> <form method="post" action=""> <button type='submit' class='expand' name='expand' value="<?php echo $row['id']; ?>"></button> </form> </div> <div id="<?php echo $row['id']; ?>" class='<?php echo $gridclass; ?>' aria-hidden='<?php echo $ariabool; ?>'> <!-- 内容省略 --> </div> </div>
- 作为SQL注入测试站点,建议对提交的参数做安全处理,避免XSS风险:
$submitted_id = isset($_POST['expand']) ? htmlspecialchars($_POST['expand'], ENT_QUOTES) : '';
内容的提问来源于stack exchange,提问作者Alyzeh
相关产品推荐
相关产品推荐

