2015-08-18 70 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