没有$ _GET =空($ _ GET)?

时间:2015-12-09 13:46:19

标签: php session get pagination

我有一个名称和年龄的分页表,我希望通过“名称”字段进行过滤。 为此,我有一个名为“name”的输入。

<input type="text" name="name" value="<?php echo $_SESSION['name']; ?>">

在页面之间切换时,为了不以url的形式携带过滤器:

table.php?name=John&page=3

我将$ _GET ['name']保存到$ _SESSION ['name'],然后将该会话应用于SQL查询字符串。

$_GET['name'] ? $_SESSION['name']=$_GET['name'] : null;

我希望能够通过让用户从输入中删除内容并按Enter键来清除过滤器。 我试过了:

if($_GET['name']=="")
    unset($_SESSION['name']);

问题在于,当我切换页面并使用链接时:

table.php?page=7

重置$ _SESSION ['name']并将我带回未经过滤的表格的选定页面。

关于如何解决这个问题的任何想法?

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

我认为你的问题出在你的三元手术中。如果你不了解他的逻辑,首先不要使用这个操作。三元操作可以减少代码量,但同时可能会让您非常困惑。 所以:

$_SESSION['name'] = $_GET['name'] ? $_GET['name'] : null; 

答案 1 :(得分:0)

我设法通过重新调整

来解决这个问题
if($_GET['name']=="")
    unset($_SESSION['name']);

if(isset($_GET['name']) and $_GET['name']=="")
    unset($_SESSION['name']);

isset()完全不同。 现在它将正确检查$ _GET ['name']中是否传递了空值,并相应地继续使用IF。

非常感谢大家的帮助。