保留多个表单中的信息


Retaining information from multiple 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>";

您可以使用会话来保存每个过滤器的值。这样,您就不需要每次页面更改时都传递所有的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") { /* ... */ }