我已经通过PHP通过HTML表创建了数据库条目列表。有过滤器:下拉列表(选择选项)列表和文本过滤器。
PHP看起来像:
<!DOCTYPE html>
<?php session_start();
ob_start();?>
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 5px;
}
</style>
</head>
<body>
<form method="post" action="<?php $_PHP_SELF ?>">
<label for="rank">Rank applied</label>
<select id='english' name="RankApplied" class="test">
<option selected disabled value="0">Select value</option>
<option name="RankApplied" value="1">One</option>
<option name="RankApplied" value="2">Two</option>
<option name="RankApplied" value="3">Three</option>
</select>
<label for="VesselsType">Vessel's type</label>
<input id="VesselsType" type="text" name="VesselsType" class="etc" placeholder="Vessel's type"/>
<input type="submit" name="submit" value="Filter" />
</form>
<?php
require("connect.php");
include '../../wp-load.php';
$RankApplied = $_POST["RankApplied"];
$VesselsType = $_POST["VesselsType"];
$UserID = get_current_user_id();
if(isset($UserID)) {
$users = $con->prepare("
SELECT DISTINCT CONCAT(FirstName, ' ', LastName) AS FullName,
RankApplied,
VesselsType
FROM tbl
WHERE FirstName <> ''
AND (RankApplied = '$RankApplied' OR '$RankApplied' = 0)
AND (VesselsType = '$VesselsType' OR '$VesselsType' = '')
");
$users->execute();
$users->bind_result($FName, $RankApplied, $VesselsType);
} else {
echo "There is no User ID detected, try to refresh browser.";
}
?>
<table>
<tr>
<th>Name</th>
<th>Rank</th>
<th>Vessel Type</th>
<th>Preview</th>
</tr>
<?php
while ($users->fetch()) {
?>
<tr>
<td><?php echo $FName; ?></td>
<td><?php echo $RankApplied; ?></td>
<td><?php echo $VesselsType; ?></td>
<td>View</td>
</tr>
<?php
}
?>
</table>
</body>
</html>
如果我在点击RankApplied = 'Two'
按钮后选择了例如VesselsType = 'FooBar'
和Filter
它会正确过滤结果,但这些fielters的值会重置(RankApplied = 'Select value'
和VesselsType = ''
),点击编辑按钮后应保留/保存所选值。
答案 0 :(得分:1)
代码不输出这些值。例如:
<input id="VesselsType" type="text" name="VesselsType" class="etc" placeholder="Vessel's type"/>
只输出一个空的input
。它没有包含发布的价值。你在这里得到的价值:
$VesselsType = $_POST["VesselsType"];
只需在页面上更进一步,以便在输出中使用它。也许是这样的:
<input id="VesselsType" value="<?php=$VesselsType ?>" type="text" name="VesselsType" class="etc" placeholder="Vessel's type"/>
同样的概念适用于select
,但稍微涉及一些。在这种情况下,您要检查值是否等于发布的值,并在selected
元素上设置option
属性。有很多方法可以做到这一点,我的PHP 非常生锈,但这样的事情可能会有所作为:
<option <?php echo isset($_POST["RankApplied"]) ? "" : "selected"; ?> disabled value="0">Select value</option>
<option <?php echo $RankApplied == "1" ? "selected" : ""; ?> name="RankApplied" value="1">One</option>
etc...
然而,你这样做,重点仍然是一样的。您需要将这些值输出到页面,以便将这些值放在页面上。
答案 1 :(得分:-1)
您可以使用SESSION ['rank']和SESSION ['type']保存值,并在过滤时显示它们。
当用户设置过滤器并按下按钮时,将这些值提供给会话变量并显示它们。