foreach语句和设置变量以在循环外使用

时间:2015-08-18 11:36:54

标签: php mysql loops variables foreach

我创建了一个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 } ?>

1 个答案:

答案 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']; } ?>