Как сохранить пользовательский фильтр после перенаправления на детальный сайт и возврата обратно - PullRequest
0 голосов
/ 07 октября 2019

Итак, я создал простой 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 голосов
/ 07 октября 2019

Итак, вы хотите запомнить «состояние» страницы.

У вас есть много вариантов, но вы находитесь рядом с тем, что вы опубликовали:

Опубликуйте параметры фильтра на другом сайте и включитеих, когда они возвращаются. В итоге вы получите сообщение на другой сайт с закодированными опциями фильтра в (GET или POST). Предположим, вы публикуете файл details.php

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

Внимание! Вы ДОЛЖНЫ изменить действие формы, добавив новые опции фильтра (которые существовали только в javascript), или (проще) измените скрытый элемент, содержащий параметры.

В файле details.php вы должны сделать так, чтобы кнопка назад содержала опции фильтра, полученные ранее.

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