我无法弄清楚下面描述的php问题。
我有一个PHP页面,列出了表中的几个用户(该列表由PHP生成)。每个用户旁边都有一个“删除”按钮。通过单击此按钮,页面将重定向到新的删除确认页面,因此我们需要传递有关特定用户的信息。
我的想法是使用$ _SESSION数组存储有关所选用户的所有信息(例如,名字,姓氏,用户ID等),但我无法弄清楚数组应该如何为一个特定用户存储信息。现在我正在使用while循环来生成用户列表:
while ($row = mysqli_fetch_array($data)) {
// Display the user data
echo '<td><strong>' . $row['first_name'] . '</strong></td>';
echo '<td><strong>' . $row['last_name'] . '</strong></td>';
echo '<td>' . $row['nickname'] . '</td>';
...
echo '<td><a href="remove.php">Remove</a>'; // button should be here
echo '</td></tr>';
}
echo '</table>';
我应该如何确保特定的Remove链接用该用户的信息填充$ _SESSION数组?现在,while循环只创建了一堆相同的删除按钮,这些按钮不区分表中列出的不同用户。任何帮助表示赞赏!
答案 0 :(得分:3)
在这种情况下,使用会话是一种不好的方法。您可能只想通过将用户ID附加到链接的网址来将用户ID传递到删除确认页面:
echo '<td><a href="remove.php?user_id='.$row['id'].'">Remove</a>';
在删除确认页面上,您现在可以使用$ _GET [“user_id”]
访问传递的用户ID答案 1 :(得分:1)
如果您正在重定向到新页面,那么'按钮'不能简单地在记录中包含引用/ id,并将其作为GET / POST请求的一部分传递给确认页面...然后查询数据库是否有所需的信息?
一种方法是拥有以下内容:
// Display the user data
echo '<td><strong>' . $row['first_name'] . '</strong></td>';
echo '<td><strong>' . $row['last_name'] . '</strong></td>';
echo '<td>' . $row['nickname'] . '</td>';
echo '<td><form action="confirmationpage.php" method="get"><input type="hidden" value ="'.$row['record_id'].'" name='record_id' /><input type="submit" /> </form>'</td>';
因此,表中的每一行都有一个按钮,以及一个id为该记录的隐藏字段 - 当您单击提交按钮进入确认页面并传递记录ID时,您可以将此ID转到查询DB以获取相关数据。
或者,您也可以使用超链接(或超链接按钮图像)代替使用表单
答案 2 :(得分:0)
将您需要的数据库结果加载到全局$ _SESSION变量
中即
session_start();
$_SESSION['userData'] = $queryResultsAsAnArray;
然后,在你的html中引用它,例如:
echo '<td><strong>' . $_SESSION['userData']['first_name'] . '</strong></td>';
或者我更喜欢在新变量中加载超级全局会话数据并使用它,如: ]
$userData = $_SESSION['userData'];
echo '<td><strong>' . $userData['first_name'] . '</strong></td>';
答案 3 :(得分:0)
否 - 会话存储不应用于事务数据。即使您可以确保用户不使用后退和前进按钮,即使您可以确保它们不会打开多个窗口,您的代码也会被打结。
这不难......
echo '<td><a href="remove.php?uid=' . $row['id'] . '">Remove</a>';
是吗?
虽然真的,这种操作应该在POST而不是GET中完成(你可以在页面上丢失表单,或者单个表单和javascripts来编写隐藏的文件并提交表单)。