单击过滤器按钮值后重置

时间:2016-03-09 16:36:11

标签: php html mysql sql forms

我已经通过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 = '' ),点击编辑按钮后应保留/保存所选值。

2 个答案:

答案 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']保存值,并在过滤时显示它们。

当用户设置过滤器并按下按钮时,将这些值提供给会话变量并显示它们。