我正在尝试从while循环生成的单行传递列值。单击链接时,我希望该行中的某些值作为隐藏字段传递给另一个页面。
代码:
<form id="repeat" name="repeat" action="edit_user.php" method="post">
<?php
$counter = 0;
while($row = $result->fetch_array()) {
$color = ($counter & 1)? "#D7ECEC" : "#DEDEDE";
$counter++;
?>
<tr align="left" valign="middle" style="background: <?php print $color; ?>">
<td><a href="#" onclick="document.getElementById('repeat').submit();" >
<?php echo $row['firstname']; ?> <?php echo $row['surname']; ?></a></td>
<td><?php echo $row['userlogin']; ?></td>
<td><?php echo $row['accesslvl']; ?></td>
<td ><?php echo $row['chgpasswrd']; ?></td>
</tr>
<input type="hidden" name="id" value="<?php echo $row['userID']; ?>" />
<input type="hidden" name="lvl" value="<?php echo $row['accesslvl']; ?>" />
<?php } ?>
</table>
</form>
发生的事情是隐藏字段正在传递while循环的最后一行的值。是否可以这样做,以便传递的隐藏值来自被点击的链接的同一行?
我尝试了一些事情,没有任何作用,我找不到任何与这个问题直接相关的东西。任何帮助,将不胜感激。干杯
答案 0 :(得分:0)
你需要将它分成两页。第一页显示每个唯一用户的用户信息和链接,第二页提供用于发布表单数据的编辑表单,如下所示...
<table>
<?php
$counter = 0;
while($row = $result->fetch_array()) {
$color = ($counter & 1)? "#D7ECEC" : "#DEDEDE";
$counter++;
?>
<tr align="left" valign="middle" style="background: <?php print $color; ?>">
<td>
<a href="edit_user.php?userID=<?php echo $row['userID']; ?>&accesslvl=<?php echo $row['accesslvl']; ?>">
<?php echo $row['firstname']; ?> <?php echo $row['surname']; ?>
</a>
</td>
<td><?php echo $row['userlogin']; ?></td>
<td><?php echo $row['accesslvl']; ?></td>
<td ><?php echo $row['chgpasswrd']; ?></td>
</tr>
<?php } ?>
</table>
在edit_user页面上,您可以使用url查询字符串传入的信息填充隐藏字段。请记住清除值以防止sql注入或xss攻击。我在这里使用了htmlentities作为示例,您可能想要增强此功能,请阅读htmlentites上的php文档页面以获取更多信息(ENT_QUOTES)。
$userID = htmlentities($_GET['userID']);
$accesslvl = htmlentities($_GET['accesslvl']);
<form action="modify_user.php" method="post">
<input type="hidden" name="id" value="<?php echo (int)$userID; ?>" />
<input type="hidden" name="lvl" value="<?php echo $accesslvl; ?>" />
//rest of form html