如何将结果页面中的查询结果传递给不同的php页面

时间:2018-05-08 04:28:35

标签: php html5 mysqli

我知道如何将搜索结果从一个页面转到另一个页面,但我现在的情况是我有一个搜索表单(searchform.php),用户将搜索条件输入到一个或多个字段中,单击提交按钮,结果显示在search.php页面上的表格中。现在我需要做的是将这些查询结果发送到另一个页面(list.php),这是一个格式化为报告的页面。我尝试过使用$ _SESSION,$ _GET,foreach等等。我也尝试将我的代码与我网站和互联网上其他网页上的代码进行比较,但无济于事。似乎没有人适合我的情况。现在我使用$ _SESSION并且只得到#34; Array"在表的每一列中,只获得一行数据。当我从查询中获取实际数据时,它只会带来查询的最后结果。例如,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 :(得分:0)

您可以使用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 Methode并检查&#34; post_max_size&#34;在php.ini文件中。

<强>会话

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

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

<强>曲奇

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

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

会话和cookie之间的最大区别在于存储在服务器上的会话值和存储在客户端浏览器内存中的cookie。

答案 1 :(得分:0)

在文档的第一行移动session_start();,否则会话将失败,除非打开输出缓冲设置。

在while循环中,正确命名会话变量,以便将来不会弄乱其他会话变量。还要使用$ row variable。

中的会话元素设置值

发件人: $_SESSION['id']=['id']; - 改为 - $_SESSION['search_result']['id'][]=$row['id']; - 依此类推。

同样在while loop之前,您必须先删除之前的搜索结果,然后再添加新行unset($_SESSION['search_result']);。其他旧的和新的结果将一起显示。

listing.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>';
        }