如何在重定向到详细信息网站并再次返回后保存用户筛选器输入



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

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

这是我的索引.php

索引.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>

详细信息网站单条目中的后退按钮.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;
}
}
}
}
}

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

请询问是否有任何不清楚的地方! 已经感谢您的任何帮助!

所以y9ou想要记住页面的"状态"。

您有很多选择,但要与您发布的内容保持密切联系:

将筛选器选项发布到其他站点,并在返回时包含它们。您最终会发布到另一个站点,其中包含编码的过滤器选项(GET 或 POST(。 假设您发布到详细信息.php

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

重要提示:您必须更改表单的操作以包含新的过滤器选项(仅存在于 javascript 中(,或者(更容易(更改隐藏的表单元素以包含选项。

在详细信息上.php您必须使后退按钮包含它之前收到的过滤器选项。

最新更新