我无法将用户ID从列表发送到其他php页面。这是我的代码:
$eventName = $row['Name'];
$_SESSION['event'] = $eventName;
$users= array();
while($row2 = mysqli_fetch_array($result2)){
echo "<li>".$row2['FirstName']." ".$row2['LastName']; // print the members
$userID = $row2['ID'];
$users[] = $row2['ID'];
$_SESSION['users'] = $users; //creates session array
echo "<a href ='removeFromEvent.php?id=$userID&event=$eventName'><span class = 'REMOVE'>Remove</span></a></li><br>";
}
echo implode('<br>',$_SESSION['users']); //prints the IDs
echo "<br>". $_SESSION['event'];
echo "<a href ='test.php'><span class = 'REMOVE'>ADD CREDITS</span></a>";
因此,使用此代码,它将在页面上的每个名称列表的末尾打印出ID和事件的名称。但是当我点击链接转移到test.php时,它只显示列表中最后一个事件的ID和事件名称。这是test.php中的所有代码:
<?php
session_start();
echo implode('<br>',$_SESSION['users']);
echo $_SESSION['event'];
?>
以下是网页在网站上的显示方式:
EVENT1 NAME 1. Member1 REMOVE 2. Member2 REMOVE ADD CREDITS (call this the first link) member1ID member2ID event1name EVENT2 NAME 1. Member1 REMOVE ADD CREDITS (and this is the second) member1ID event2name
当我点击第一个添加信用点链接时,它会打开test.php,但会为event2打印event2name和member1。当我单击第二个添加信用链接时,它会打开test.php,并打印相同的事件名称和成员。 事件和成员的数量取决于在数据库中创建的数量,因此可能有2个事件,每个事件有2个成员,或20个事件,所有成员的数量都不同。
所以我的问题是,如何获得显示第一个事件的成员和事件名称的第一个链接,以及显示第二个事件的成员和事件名称的第二个链接?
答案 0 :(得分:0)
目前您正在覆盖_SESSION ['event']和_SESSION ['users']元素,因此只会存储最后一个事件及其关联用户。
一种解决方案是使$ _SESSION ['events']成为一个数组,每个元素都是一个事件的数据。关键是事件名称(不是事件ID?),每个值都是一个数组,包含与此特定事件关联的所有用户。
// initialize the 'events' array in _SESSION
$_SESSION['events'] = array();
while( $row=mysqli_fetch_array($result) ) {
// $user will store the userIDs for this event
$users = array();
while($row2 = mysqli_fetch_array($result2)) {
$users[] = $row2['ID'];
printf('<li>%s %s <a href="removeFromEvent.php?id=%s&event=%s"><span class="REMOVE">Remove</span></a></li>'
htmlspecialchars($row2['FirstName']),
htmlspecialchars($row2['LastName']),
urlencode($row2['ID']),
urlencode($row['name'])
);
}
// store the userIDs under the event name in the array $_SESSION['events']
$_SESSION['events'][ $row['Name'] ] = $users;
}
在removeFromEvent.php中,你可以像这样访问数据:
if ( !isset($_GET['event'],$_GET['id']) ) {
echo 'missing GET parameter';
}
else {
$event = $_GET['event'];
$id = $_GET['id'];
if ( !isset($_SESSION['events'][$event]) ) {
echo 'no such event in _SESSION';
}
else if ( !isset($_SESSION['events'][$event][$id]) ) {
echo 'no such user in event';
}
else {
...
}
注意:
*也许JOIN查询而不是嵌套查询是个好主意
*不应通过GET, but rather via POST传输DELETE操作的数据/参数。