Сохранение переменной $ _POST, сгенерированной после обновления страницы - PullRequest
0 голосов
/ 22 июня 2011

У меня проблемы с сохранением результатов запроса при навигации по страницам с нумерацией страниц.

Я написал код, который создает запрос MySQL на основе параметров, выбранных в форме поиска.Самостоятельно отправляющая форма, которая использует переменную $ _POST, помещает в переменную, которая строит запрос, вот код:

<?php

    if (isset($_POST)) {

    $find = array();
    $area = array();

    if (isset($_POST ['location']) && !($_POST ['location'] == "000")) {

        $find [] = $_POST ['location'];         
        $area [] = "location";
    }


    if (isset($_POST ['sector']) && !($_POST ['sector'] == "000")) {

        $find [] = $_POST ['sector']; 
        $area [] = "sector";
    }   

    if (isset($_POST ['hours']) && !($_POST ['hours'] == "000")) {

        $find [] = $_POST ['hours'];    
        $area [] = "hours";
    }   

    while ((list($key1, $val1) = each($find)) && (list($key2, $val2) = each($area))) {
        if ($key1 == 0) {
            $result =  " WHERE " .  strtolower($val2)  . "= " .  "'" . strtolower($val1) .  "'" . " " ;     
        }
        if ($key1 >= 1) {
            $result .=  "AND " . strtolower($val2) . "= " .  "'" . strtolower($val1) .  "'" . " " ;     
        }

    }


}   else {
        $result = NULL ;    
}

?> 

Проблема в том, что когда я выбираю одну из ссылок на страницы, она обновляет страницу, который удаляет исходный SQL-запрос, означающий, что я просто получаю все записи в таблице, а не результаты, основанные на поиске.

До сих пор я пытался использовать куки-файлы, чтобы сохранить переменную, сгенерированную формой поиска, и отключить куки-файл, когда пользователь отправляет другой поиск.Это работает в некоторой степени, но по какой-то причине после выбора ссылки на страницы 2 раза cookie исчезает.

Вот код, который я добавил, чтобы установить куки, вы найдете правку в нижней части оператора if:

<?php

    if (isset($_POST)) {


    $find = array();
    $area = array();

    if (isset($_POST ['location']) && !($_POST ['location'] == "000")) {

        $find [] = $_POST ['location'];         
        $area [] = "location";
    }


    if (isset($_POST ['sector']) && !($_POST ['sector'] == "000")) {

        $find [] = $_POST ['sector']; 
        $area [] = "sector";
    }   

    if (isset($_POST ['hours']) && !($_POST ['hours'] == "000")) {

        $find [] = $_POST ['hours'];    
        $area [] = "hours";
    }   

    while ((list($key1, $val1) = each($find)) && (list($key2, $val2) =      each($area))) {
        if ($key1 == 0) {
            $result =  " WHERE " .  strtolower($val2)  . "= " .  "'" . strtolower($val1) .  "'" . " " ;     
        }
        if ($key1 >= 1) {
            $result .=  "AND " . strtolower($val2) . "= " .  "'" . strtolower($val1) .  "'" . " " ;     
        }

    }

    setcookie("testcookie", "$result", time()-36000);
    setcookie("testcookie", $result);

}   else {
        $result = NULL ;    
}

?> 

Вот остаток соответствующего кода:

Я назначил cookie для переменной:

$ ret_result = str_replace ('\', '', $ _COOKIE ["testcookie"]);

Затем выполнил запрос:

    $sql = "SELECT * FROM posting $ret_result ";

У меня также возникают проблемы с генерацией запроса при первом отправлении формы.Я должен отправить форму дважды, прежде чем запрос будет присвоен переменной.Что также имеет место при попытке удалить cookie!

Я в недоумении, поэтому любые указатели будут с благодарностью.

Спасибо

1 Ответ

1 голос
/ 22 июня 2011

Используйте скрытые поля формы и сохраняйте значения, которые вы ранее получили от $ _POST [], таким образом, когда вы «отправляете», нажимая на одну из ссылок на страницы, эти значения будут сохранены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...