Как передать результаты запроса со страницы результатов на другую страницу php - PullRequest
0 голосов
/ 08 мая 2018

Я знаю, как получить результаты поиска с одной страницы на другую, но сценарий, в котором я сейчас нахожусь, заключается в том, что у меня есть форма поиска (searchform.php), где пользователь вводит критерии поиска в поле или поля, щелкает кнопка отправки и результаты отображаются в таблице на странице search.php. Теперь мне нужно отправить результаты запроса на другую страницу (list.php), которая является страницей, отформатированной в виде отчета. Я пытался использовать $ _SESSION, $ _GET, foreach и т. Д. И я также пытался сравнить мой код с кодом на других страницах моего сайта и в Интернете, но безрезультатно. Кажется, никто не подходит к моей ситуации. Прямо сейчас я использую $ _SESSION и получаю только слово «Массив» в каждом столбце таблицы и получаю только одну строку данных. Когда я получил реальные данные из запроса, он принес только последний результат из запроса. Например, search.php показал 6 результатов, но страница list.php показала только последний результат. Я потратил на это дни. Кто-нибудь, пожалуйста, попытайтесь мне помочь? Вот часть кода на моей странице search.php (он работает - хотя я не уверен, что мне нужна информация $ _SESSION в середине):

if !empty($_POST['id'])||!empty($_POST['title'])||!empty($_POST['numavail'])||!empty($_POST['categoryname'])||!empty($_POST['genretype'])){
            $id = mysqli_real_escape_string($dbc, $_POST['id']);
            $title = mysqli_real_escape_string($dbc, $_POST['title']);
            $numavail = mysqli_real_escape_string($dbc, $_POST['numavail']);
            $categoryname = mysqli_real_escape_string($dbc, $_POST['categoryname']);  
            $genretype = mysqli_real_escape_string($dbc, $_POST['genretype']);  

            $query="SELECT * FROM dvd WHERE (title LIKE '%$title%')
            AND (numavail LIKE '%$numavail%')
            AND (categoryname LIKE '%$categoryname%')
            AND (genretype LIKE '%$genretype%')
            ORDER BY title ASC";

        }else {
            $query="SELECT * FROM dvd ORDER BY title ASC";
        }
        $result = @mysqli_query ($dbc, $query);
        $num = mysqli_num_rows($result);

        if ($num > 0) { // If it ran OK, display all the records.
            echo "<h4>Your search returned $num records.</h4><p></p>";

        //Table header:
        echo '<table align="center" width="950px" cellspacing="0" border=".5px" ! important><tr>
        <th>Title</th><th>Qty</th><th>Category</th><th>Genre</th></tr>'; 
        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        //Fetch all the records...

        session_start();
            $_SESSION['id']=['id'];
            $_SESSION['title']=['title'];
            $_SESSION['numavail']=['numavail'];
            $_SESSION['categoryname']=['categoryname'];
            $_SESSION['genretype']=['genretype'];

        echo '<td align="left" width="20%" height="25px">'.$row['title'].'</td>
            <td align="right" width="5%">'.$row['numavail'].'</td>
            <td align="left" width="20%">'.$row['categoryname'].'</a></td>
            <td align="left" width="30%">'.$row['genretype'].'</a></td>
            <td align="center" width="5%"><a href=../dvd/updateform.php?id='.$row['id'].'><em>Update</em></a></td>
            <td align="center" width="5%"><a href=../dvd/deleteconfirm.php?id='.$row['id'].'><em>Delete</em></a></td>
        </tr>
        ';
        }
        // End of While statement
        echo "</table>";

Вот часть кода на моей странице list.php (не работает):

session_start();
    include ('../../includes/reportheader.php'); // Include the header file.
    echo ('<h1>DVD SEARCH RESULTS</h1>');


    //Table displaying records.
    '<div id="rpttable">';
    echo '<table align="center" width="750px" cellspacing="0" border=".5px" ! important><tr>
    <th>Movie Title</th><th>Qty</th><th>Category</th><th>Genre</th></tr>'; 
    echo '<td align="left" width="20%" height="25px">'.$_SESSION['title'].'</td>
        <td align="center" width="5%">'.$_SESSION['numavail'].'</td>
        <td align="left" width="20%">'.$_SESSION['categoryname'].'</td>
        <td align="left" width="30%">'.$_SESSION['genretype'].'</a></td>
    </tr>
    </div>
    ';
    echo "</table>"; 

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Переместить session_start(); в первую строку документа, иначе сеанс завершится неудачей, если не включена настройка буферизации вывода.

В вашем цикле while правильно назовите переменную сеанса, чтобы в будущем она не мешала другим переменным сеанса. Также установите значения элементов вашего сеанса с помощью переменной from $ row.

С: $_SESSION['id']=['id']; - до - $_SESSION['search_result']['id'][]=$row['id']; - и т. Д.

Также перед вашим while loop вы должны удалить предыдущие результаты поиска, прежде чем добавлять новые, добавив строку unset($_SESSION['search_result']);. В противном случае старые и новые результаты будут отображаться вместе.

В перечислении. Php вам нужно перебрать $_SESSION['search_result'], чтобы отобразить переданные результаты поиска. Что-то вроде:

for($i=0; $i<count($_SESSION['search_result']['id']); $i++ ){
            echo '<tr><td align="left" width="20%" height="25px">'.$_SESSION['search_result']['title'][$i].'</td>
                <td align="center" width="5%">'.$_SESSION['search_result']['numavail'][$i].'</td>
                <td align="left" width="20%">'.$_SESSION['search_result']['categoryname'][$i].'</td>
                <td align="left" width="30%">'.$_SESSION['search_result']['genretype'][$i].'</a></td>
            </tr>';
        }
0 голосов
/ 08 мая 2018

Вы можете использовать GET, метод POST или Session, Cookie для передачи данных с одной страницы на другую страницу

Пример

GET и POST

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>

PHP код

//Using GET
$var_value = $_GET['varname'];

//Using POST
$var_value = $_POST['varname'];

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];

Измените метод формы для публикации, если вы хотите сделать это по почте.Оба одинаково небезопасны, хотя GET легче взломать.Метод GET может обрабатывать меньшее количество данных.Для обработки большего количества данных используйте метод POST, а также проверьте «post_max_size» в файле php.ini.

Session

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

Cookie

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

Большая разница между сеансами и файлами cookie заключается в том, что значения сеансов, хранящиеся на сервере, и файлы cookie, хранящиеся в памяти браузера клиента.

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