保留多种形式的信息

时间:2015-02-17 18:54:40

标签: php html forms

我正在整理一个页面,该页面在包含多个列的表格中显示数据。

鉴于信息量,我限制了一次性显示的条目,有效地创建了页面。

我还创建了一种方法,允许用户使用3列以下的下拉列表来过滤常见条目(请参阅代码的第一部分)。我可以应用3个过滤器的任意组合(任意组合中的一个,两个或三个过滤器),它可以正常工作。

代码的第二部分显示了返回页面的链接(其中之一)。这也很好。

我的问题是,虽然代码的两个部分都是孤立的,但它们不能一起工作(即如果我尝试更改页面,则会丢失过滤器,或者如果我过滤则最终会被踢回第1页)

我可能会把所有这一切都用于将请求的页面和3个过滤器发送到URL并使用GET来获取结果,但这开始变得非常混乱。尝试使用SESSION时遇到了类似的问题;在POST和SESSION之间传递变量很麻烦。

我对php相当陌生,所以我希望这是一个优雅的解决方案,要么做一些小改动就能得到我必须工作的东西,要么就是我还没有想到的东西。有人能指出我正确的方向吗?

感谢。

过滤器代码:

        echo "<form method=\"POST\">";          
        echo "<select name='courier_select' onchange='this.form.submit()'>";                        
        echo "<option value=\"\">--Select--</option>";

            for ($i = 0; $i < count($courierlist); ++$i) {
                if ($selcourier == $courierlist[$i]['review_courier']) {
                        echo '<option selected=\"selected\" value="'.$courierlist[$i]['review_courier'].'">'.$courierlist[$i]['review_courier'].'</option>';
                } else {
                        echo '<option value="'.$courierlist[$i]['review_courier'].'">'.$courierlist[$i]['review_courier'].'</option>';
                }
            }                           

        echo "</select>";

        echo "<select name='retailer_select' onchange='this.form.submit()'>";           
        echo "<option value=\"\">--Select--</option>";                  

            for ($i = 0; $i < count($retailerlist); ++$i) {
                if ($selretailer == $retailerlist[$i]['review_retailer']) {
                    echo '<option selected=\"selected\" value="'.$retailerlist[$i]['review_retailer'].'">'.$retailerlist[$i]['review_retailer'].'</option>';
                } else {
                    echo '<option value="'.$retailerlist[$i]['review_retailer'].'">'.$retailerlist[$i]['review_retailer'].'</option>';
                }
            }               

        echo "</select>";

        echo "<select name='rating_select' onchange='this.form.submit()'>";         
        echo "<option value=\"\">--Select--</option>";          

            for ($i = 0; $i < count($scorelist); ++$i) {
                if ($selscore == $scorelist[$i]['review_score']) {
                    echo '<option selected=\"selected\" value="'.$scorelist[$i]['review_score'].'">'.$scorelist[$i]['review_score'].'</option>';
                } else {
                    echo '<option value="'.$scorelist[$i]['review_score'].'">'.$scorelist[$i]['review_score'].'</option>';
                }
            }                               

        echo "</select>";                               
        echo "</form>";

以下是导航按钮(其中一个)的代码。

        echo "<form method=\"POST\" action=\"index.php?page=reviews\">";            
        echo    "<input type=\"hidden\" name=\"page_no\" value=" . ($currentpage - 1) . ">";
        echo    "<button><</button>";
        echo "</form>";

1 个答案:

答案 0 :(得分:0)

您可以使用会话保存每个过滤器具有的值。这样,每次页面更改时都不需要传递所有GET参数。

// Start the session
session_start();

// Store all filter values in sessions 
// so they do not need to be passed every time a new page gets loaded
if(isset($_POST['courier_selec'])) {
    $_SESSION['filter_courier'] = $_POST['courier_selec'];
}

// Then use $_SESSION['filter_courier'] to generate the content of your pages:
if($_SESSION['filter_courier'] == "xy") { /* ... */ }