【问题标题】:php dropdown show selected but one value by defautphp 下拉菜单显示选中但默认为一个值
【发布时间】:2017-03-28 22:45:24
【问题描述】:

我在 sql server 上使用 php 存储过程。我的问题是我想在下拉列表中默认显示一个值,但是当有人选择其他内容并刷新页面时,它必须显示该人选择的内容,而不是默认值。这是我到目前为止所做的:

<form method="post">
            <label for="from"><b>De:</b></label>
            <input  data-date-format='yy-mm-dd' type="text" id="from" name="from" size="6" value="<?php if(isset($_POST['from'])){ echo $_POST['from']; } ?>";/>
            <label for="to"><b>A:</b></label> 
            <input data-date-format='yyyy-mm-dd' type="text" id="to" name="to" size="6" value="<?php if(isset($_POST['to'])){ echo $_POST['to']; } ?>";/>
            <label for="group"><b>Groupe:</b></label> 
            <select type= "text" name="group" id="group" value="";>
            <option><?php if(isset($_POST['group'])){ echo $_POST['group']; } ?></option>
<?php
$sql = " Get_List_ReportStation";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) 
{ 
?>          
<option selected value="RAL"><?php echo ($row['F1000'] . " " . $row['F1018']); ?></option>       
<?php   
}
?>
</select>
<input type="submit" value="Valider" name="submit">
</form>
<?php 
if(isset($_POST["submit"])) {
$from = $_POST["from"];
$to = $_POST["to"];
$group = $_POST["group"];
}
?>

有什么想法可以帮助我吗?谢谢!

【问题讨论】:

    标签: php sql-server html drop-down-menu


    【解决方案1】:
    <select class="group">
        <option value="test1">test1</option>
        <option value="test2">test2</option>
        <option value="test3">test3</option>
        <option value="test4">test4</option>
    </select>    
    

    添加 Javascript 以将用户的最后一个值存储到本地存储中。

    var select = document.querySelector(".group");
    var selectOption = select.options[select.selectedIndex];
    var lastSelected = localStorage.getItem('select');
    
    if(lastSelected) {
        select.value = lastSelected; 
    }
    
    // sets up a onselected
    select.onchange = function () {
       lastSelected = select.options[select.selectedIndex].value;
       console.log(lastSelected);
       localStorage.setItem('select', lastSelected);
    }
    

    来源:How to use LocalStorage on last HTML select value

    对于你给定的代码试试这个

    <form method="post">
                <label for="from"><b>De:</b></label>
                <input  data-date-format='yy-mm-dd' type="text" id="from" name="from" size="6" value="<?php if(isset($_POST['from'])){ echo $_POST['from']; } ?>";/>
                <label for="to"><b>A:</b></label> 
                <input data-date-format='yyyy-mm-dd' type="text" id="to" name="to" size="6" value="<?php if(isset($_POST['to'])){ echo $_POST['to']; } ?>";/>
                <label for="group"><b>Groupe:</b></label> 
                <select type= "text" name="group" id="group">
                <option><?php if(isset($_POST['group'])){ echo $_POST['group']; } ?></option>
    <?php
    $sql = " Get_List_ReportStation";
    $stmt = sqlsrv_query($conn, $sql);
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );}
    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) 
    { 
    ?>          
    <option value="<?php echo ($row['F1000']."_".$row['F1018']); ?>"><?php echo ($row['F1000'] . " " . $row['F1018']); ?></option>       
    <?php   
    }
    ?>
    </select>
    <input type="submit" value="Valider" name="submit">
    </form>
    <script>
    var select = document.querySelector(".group");
    var selectOption = select.options[select.selectedIndex];
    var lastSelected = localStorage.getItem('select');
    
    if(lastSelected) {
        select.value = lastSelected; 
    } else {
        select.value = 'RAL'; // new code
    }
    
    // sets up a onselected
    select.onchange = function () {
       lastSelected = select.options[select.selectedIndex].value;
       console.log(lastSelected);
       localStorage.setItem('select', lastSelected);
    }
    </script>
    <?php 
    if(isset($_POST["submit"])) {
    $from = $_POST["from"];
    $to = $_POST["to"];
    $group = $_POST["group"];
    }
    ?>
    

    【讨论】:

    • 是的,我明白了,但是我的信息来自我的存储过程,所以我不知道下拉列表中会出现什么。
    • 在 php 通过您的存储过程将信息填充到您的 html 后,您的 javascript 将运行。生成 html 后,您的客户端将收到 html + js 并运行 js。此代码与下拉列表中的值无关 :)
    • 对不起,我是初学者。我不太确定。如果我从我的存储过程中获取信息: ?php echo ($row['F1000'] . " " . $row['F1018']); ?并在我的选项中有_selected 值“RAL”_。 RAL 是默认值,但如果其他人拿了别的东西,那么我打电话给: php if(isset($_POST['group'])){ echo $_POST['group'];我必须在哪里改变才能按照您所说的进行并保持相同的结果?再次感谢您!
    • 我更新了我的答案,也许这会解决。我希望。如果没有,请告诉我,我会为您进一步更新。
    • 即使在重新加载页面后,它也可以向我显示我会选择的内容,但是当我第一次打开我的页面时,我的默认值 (RAL) 不再存在。你知道我的意思吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    相关资源
    最近更新 更多