我创建了一个foreach
语句,它将访问MySQL数据库并在列表中显示数据库中每个人的用户名和ID - 没问题。每个人旁边的按钮将显示ID号 - 没有问题。然而,当我按下按钮时,它将返回最后一个人的值,在这种情况下是30而不是数字1或我按下的按钮的任何数量。
我认为这是因为当显示页面时,它会在显示循环的每次传递时为变量分配ID。
$ID
将设置为最后一个,因为在显示页面时,它会通过列表中的所有人,然后在最后一个选项结束时,只显示页面。因此,当我要按下按钮时,当然$ID
将被设置为30,因为它必须计算到那时我才能看到它。这就是我遇到的问题。当我按下按钮时,我希望将Session['id']
设置为$ID
设置的值,而不是设置页面显示后$ID
设置的内容。
<?php
include 'connect.php';
foreach($db->query("SELECT * FROM Staff") as $row) {
$ID = $row['id']
Echo $row['id'];
Echo $row['FirstName'];
Echo $row['LastName'];
?>
<button Class="link" id="OpenUp"><?php echo $id; $_SESSON['id'] = $id; ?></button>
<?php } ?>
答案 0 :(得分:0)
您的代码将始终将$ _SESSION [&#39; id&#39;]设置为您的上一个值。
您可以在循环之前启动表单并使用此代码代替按钮
<input type="submit" name="setsessionid" value="<?php echo $row['id']; ?>" />
之后你要做的就是使用
将变量设置为$ _SESSION [&#39; id&#39;]<?php if(isset($_POST['setsessionid']) { $_SESSION['id'] = $_POST['setsessionid']; } ?>