2015-12-09 5 views
0

У меня есть разбитая таблица имен и возрастов, которую я хочу фильтровать по полю «имя». Для этого у меня есть вход под названием «имя».

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

При переключении между страницами, чтобы не носить с фильтром в URL в виде:

table.php?name=John&page=3 

я храню в $ _GET [ «имя»] на $ _SESSION ['name'], а затем применить этот сеанс к строке запроса SQL.

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

Я хотел бы быть в состоянии очистить фильтр, имеющий пользователю удалить содержимое из входного и нажав ввод. Я пробовал:

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

Проблема заключается в том, что при переключении страницы и воспользуйтесь ссылкой:

table.php?page=7 

он сбрасывает $ _SESSION [ «имя»] и возвращает меня к выбранной странице нефильтрованная таблица.

Любые идеи о том, как я могу обойти эту проблему?

Большое спасибо заранее.

+0

Вместо того, чтобы сбрасывать '$ _SESSION ['name']' вы пытались установить его на пустое значение? –

+0

У меня есть. К сожалению, результат тот же. –

+0

Что задает сеанс на этой странице? –

ответ

0

мне удалось обойти эту проблему путем repacing

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

с

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

в Исеть() сделал все различия. Теперь он будет правильно проверять, отправлено ли пустое значение в $ _GET ['name'], и продолжить соответственно IF.

Огромное спасибо всем вам за вашу помощь.

1

Я думаю, что ваша проблема в вашей тройной операции. Сначала не используйте эту операцию, если вы не понимаете его логики. Тернарная операция может уменьшить количество кода, но в то же время может вас смутить. Итак:

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

Это лучше сделать '$ _SESSION ['name'] = isset ($ _ GET ['name'])? $ _GET ['name']: null; 'предполагается, что вы хотите, чтобы значение NULL было значением по умолчанию – RiggsFolly

+0

Все правильно. Но если мы говорим о проверках типа isset(), то данные из $ _GET должны лучше проверяться :) @Emanuel Pacheco Pontes Мы ответили на ваш вопрос? –

+0

Ну, как он не спрашивал о тройном операторе, я бы предположил, что нет! – RiggsFolly

Смежные вопросы