【发布时间】:2013-12-21 19:17:54
【问题描述】:
在我的 PHP 程序中,我有几个链接都链接到同一页面。它的作用是根据我的操作更新当前站点,然后我通过 GET 发送新信息,或者如果我需要取消设置会话。
在指向同一页面的一个链接中,我调用 unset($_SESSION['search']),而在另一个链接中,我调用 GET 来对信息进行排序。但是当我调用 GET 链接而不是未设置的链接时,我的会话变量无论如何都会被重置。
一切都在 view.php 中完成
这是我未设置的链接
<a href="view.php<?php unset($_SESSION['search']); ?>">View All</a>
我的 GET 链接
<th><a href="view.php?id=<?php echo 'id';?>">ID</a></th>
<th><a href="view.php?id=<?php echo 'itemName';?>">Item Name</a></th>
<th><a href="view.php?id=<?php echo 'description';?>">Description</a></th>
<th><a href="view.php?id=<?php echo 'supplierCode';?>">Supplier</a></th>
<th><a href="view.php?id=<?php echo 'cost';?>">Cost</a></th>
当我调用未设置的链接时,我需要它来重置会话变量。但是当我调用获取链接时,我需要保留会话变量。
我能做些什么来做到这一点?
调用这些链接时我的 php 操作
if (isset($_SESSION['search'])) {
$sql_query = "SELECT * FROM inventory WHERE description LIKE '%".$_SESSION['search']."%' ORDER BY ".$id." ASC";
$check = true;
}
else if ($_POST && !(Trim($_POST['search']) === '')) {
$search = $link->real_escape_string($_POST['search']);
$_SESSION['search'] = $search;
$sql_query = "SELECT * FROM inventory WHERE description LIKE '%".$_SESSION['search']."%' ORDER BY ".$id." ASC";
$check = true;
}
else {
$sql_query = "SELECT * FROM inventory ORDER BY ".$id." ASC";
}
因为每当我重定向回 view.php 时 $_SESSION['search'] 总是被重置,所以当我按下 get 链接时总是会调用最后一个 else,即使我需要它留下来!
【问题讨论】:
-
你将它设置为 $search 是空白的
-
@dagon 在同一页面中有一个表单,我在其中获得了 search 的值