2015-08-18 150 views
0

我创建了一个foreach语句,它将访问MySQL数据库,并在列表中显示数据库中每个人的用户名和ID - 这里没有问题。每个人旁边的按钮将显示身份证号码 - 没有问题。然而,当我按下按钮时,它将返回最后一个人的值,在这种情况下是30而不是数字1或我按下的任何数字的按钮。在循环之外使用的foreach语句和设置变量

我认为这是因为当页面显示时,它会在显示循环时为每次循环的变量分配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

在foreach之前定义'$ ID',现在'$ ID'只存在于foreach范围中。而'$ ID'也不等于'$ id'。这些变量是区分大小写的。 – MrRP

+0

为什么你会使用会话?按下按钮时激活了什么功能? – user4035

回答

0

您的代码将始终设置$ _SESSION [ '身份证']你的最后一个值。

您可以在循环之前启动一个形式和使用的代码,而不是按钮

<input type="submit" name="setsessionid" value="<?php echo $row['id']; ?>" /> 

该位后,所有你需要做的就是设置变量$ _SESSION [“身份证”]使用

<?php if(isset($_POST['setsessionid']) { $_SESSION['id'] = $_POST['setsessionid']; } ?> 
+0

使用表单的问题是它将发布到不同的页面。尽管我已经把这一切做得很好,我的经理想要一个弹出窗口。点击“OpenUp”ID将使用JavaScript更改页面的CSS。在页面中央打开一个窗口,根据按下的按钮显示结果。他们的方式是让表单在不加载新页面的情况下发布到同一页面? – Maxious