如何用按钮将PHP多行数据的Class变量POST至viewmembers.php
解决方法
方法1:为每行数据生成独立POST表单
直接在循环里给每个班级生成包含隐藏字段的表单,点击按钮时提交对应班级的Class值:
<?php session_start(); include_once('connection.php'); $stmt = $conn->prepare("SELECT * FROM class WHERE Username = :Username"); $stmt->bindParam(':Username', $username); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "Class Code: ".$row["Class"]." <br> Username: " .$row["Username"]." <br> Subject: ".$row["SubjectName"]."<br>"; // 生成独立表单 echo '<form action="viewmembers.php" method="POST">'; // 隐藏字段存储当前行的Class值 echo '<input type="hidden" name="class_code" value="'.$row["Class"].'">'; echo '<button type="submit">View Members</button>'; echo '</form><br><br>'; } ?>
在viewmembers.php中接收数据:
<?php if(isset($_POST['class_code'])){ $classCode = $_POST['class_code']; // 此处使用$classCode查询对应班级的成员数据即可 } ?>
方法2:用JavaScript触发POST请求(无表单显示)
如果不想显示表单标签,可给按钮绑定点击事件,通过JS动态创建表单并提交:
<?php session_start(); include_once('connection.php'); $stmt = $conn->prepare("SELECT * FROM class WHERE Username = :Username"); $stmt->bindParam(':Username', $username); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "Class Code: ".$row["Class"]." <br> Username: " .$row["Username"]." <br> Subject: ".$row["SubjectName"]."<br>"; // 按钮携带Class数据,点击触发JS提交(转义特殊字符避免语法错误) $escapedClass = htmlspecialchars($row["Class"], ENT_QUOTES); echo '<button onclick="postClass(\''.$escapedClass.'\')">View Members</button><br><br>'; } ?> <script> function postClass(classCode) { // 创建临时表单元素 const form = document.createElement('form'); form.method = 'POST'; form.action = 'viewmembers.php'; // 创建存储Class值的隐藏字段 const input = document.createElement('input'); input.type = 'hidden'; input.name = 'class_code'; input.value = classCode; form.appendChild(input); document.body.appendChild(form); // 提交表单 form.submit(); } </script>
接收数据的逻辑和方法1一致,通过$_POST['class_code']获取对应班级的值。
内容的提问来源于stack exchange,提问作者Cruisey123
相关产品推荐
相关产品推荐

