重定向到详细站点并再次返回后如何保存用户过滤器输入

时间:2019-10-07 12:37:54

标签: php redirect get

因此,我建立了一个简单的php网站,用户可以在其中过滤表的内容。还包括每个条目的详细链接,该链接将用户重定向到仅显示所用条目详细信息的站点。详细信息站点基本上只显示特定信息和一个按钮,使用户可以返回原始网站。

我的问题是,当转发到详细站点时以及当他单击链接返回原始网站时,我想保存用户过滤器输入。理想情况下,如果可能的话,我想用$_GET来做。

这是我的 index.php

index.php:

    <h1>Benutzerdaten anzeigen</h1>
    <div class="filter">
        <label class="labelf">Filtern:</label>


        <input id="filterfeld" name='filterfeld' onkeyup="filterRows()" value =<?php echo $_GET['filterfeld']; ?>>
        <button id="reset" class="reset" value="Reset" onclick="window.location.reload(true)">RESET</button>

    </div>
    <?php
    $servername = "localhost";
    $username = "root";
    $username = "root";
    $password = "";
    $dbname = "php13";
    $filter_value = isset($_GET['filterfeld']) ? $_GET['filterfeld'] : "";




    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    $sql = "SELECT * FROM user";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        echo "<table align='center' id='ftable' class='ftable'><tr><th>ID</th><th>Vorname</th><th>Nachname</th><th>E-Mail</th><th>Telefon</th><th>Geburtsdatum</th><th>Straße</th><th>Details</th></tr>";
        // output data of each row
        while ($row = $result->fetch_assoc()) {

            echo "<td></td><tr><td>" . $row["id"] . "</td><td>" . $row["firstname"] . "</td><td>" . $row["lastname"] . "</td>
    <td>" . $row["email"] . "</td><td>" . $row["phone"] . "</td><td>" . $row["birthdate"] . "</td><td>" . $row["street"] . "</td><td><a href='singleentry.php?id=" .$row["id"]."&filterfeld=". $filter_value . "' class='details'>Details</a></td></tr>";
        }
        echo "</table>";
    } else {
        echo "0 results";
    }
    $conn->close();
    ?>

</form>
详细网站 singleentry.php 中的

后退按钮:

<p align="center"><a href='index.php?filterfeld="<?php echo $_GET['filterfeld']?>"'><button>Zurück</button></a></p>

使用js过滤:

    var input, filter, table, tr, td, cell, i, j;
    input = document.getElementById("filterfeld");
    filter = input.value.toUpperCase();
    table = document.getElementById("ftable");
    tr = table.getElementsByTagName("tr");

        for (i = 1; i < tr.length; i++) {
            tr[i].style.display = "none";
            td = tr[i].getElementsByTagName("td");
            for (var j = 0; j < td.length; j++) {
                cell = tr[i].getElementsByTagName("td")[j];
                if (cell) {
                    if (cell.innerHTML.toUpperCase().indexOf(filter) > -1) {
                        tr[i].style.display = "";

                        break;
                    }
                }
            }
        }
}

当前,我必须使用filtertext刷新原始页面,才能将其传递到详细信息站点,这并不理想。通常,它应该只是刷新站点,但是已经带有先前的过滤文本和数据。

请询问是否不清楚! 已经感谢您的帮助!

1 个答案:

答案 0 :(得分:-1)

所以您想记住页面的“状态”。

您有很多选择,但要保持与发布的内容接近:

将filteroptions发布到另一个站点,并在它们返回时将其包括在内。最后,您将在(GET或POST)中使用编码的filteroptions发布到另一个站点。 假设您发布到details.php

获取:http://othersite.com/details.php?filter1=23&filter2=whatever

重要提示:您必须更改表单的操作以包括新的filteroptions(仅存在于javascript中),或者(更容易)更改隐藏的形式以包含选项。

在details.php上,您必须使后退按钮包含它先前收到的filteroptions。