用php提交后如何保留具有多个选项的select输入的选择值

时间:2018-09-28 13:06:13

标签: php

我有一个带有2个选项的选择输入,在使用php单击“提交”按钮后,我希望保留选择的值。

下面是正在使用的代码,该代码仅在单击“提交”按钮时使我选择的输入中的第一个选项保持选中状态,而不是第二个选项。 PHP(查询)

<?php
// db
include 'db.php';
// gender
    $gender_query = mysqli_query($db, "SELECT * FROM users_gender WHERE id = '$id'"); 
    while ($row = mysqli_fetch_array($gender_query, MYSQLI_ASSOC)) {
        $set_gender = $row["gender"]; // male or female
    }
?>

HTML

<div class="form-group">
     <b>Gender</b>
    <select class="form-control custom-select" name="gender" id="gender" required>
        <option name="male" <?php if (isset($_POST['gender'])) { echo $_POST['gender']; } elseif ($gender == "male") { echo "selected"; } ?> value="male">Male</option>
        <option name="female" <?php if (isset($_POST['gender'])) { echo $_POST['gender']; } elseif ($gender == "female") { echo "selected"; } ?> value="female">Female</option>
   </select>
</div>

我想知道如何实现此目标,因为我还有其他带有多个选项的select输入,我想使用相同的模式。

5 个答案:

答案 0 :(得分:0)

提交后,您需要在会话或cookie中存储值:

<?php 

if($_POST){

    $_SESSION['gender']=$_POST['gender'];
}

?>

<div class="form-group">
     <b>Gender</b>
<select class="form-control custom-select" name="gender" id="gender" required>
    <option    <?php if($_SESSION['gender']=="male"){ echo "selected"; }  ?> value="male">Male</option>
    <option  <?php if($_SESSION['gender']=="female"){ echo "selected"; } ?> value="female">Female</option>

 

或者:

<?php 

if($_POST){

    $_COOKIE['gender']=$_POST['gender'];
}

?>
<div class="form-group">
 <b>Gender</b>
<select class="form-control custom-select" name="gender" id="gender" required>
    <option   <?php if($_COOKIE['gender']=="male"){ echo "selected"; }  ?> value="male">Male</option>
    <option  <?php if($_COOKIE['gender']=="female"){ echo "selected"; } ?> value="female">Female</option>

 

答案 1 :(得分:0)

要检索选定的值,您只需要获取<select>标签的值 的名称,如下所示:

<div class="form-group">
     <b>Gender</b>
    <select class="form-control custom-select" name="gender" id="gender" required>
        <option name="male" value="male">Male</option>
        <option name="female" value="female">Female</option>
   </select>
</div>

要获取select的值,您只需要使用$_POST["gender"]
不是:我更改了HTML代码,导致那些PHP代码错误。

答案 2 :(得分:0)

您的php生成的输出不正确。 我会为女性展示正确的,而男性则正确。 我删除了变量的回声(不必要)并平衡了括号 用我的替换您的,它对男人和女人都应该起作用

<?php 
    if (isset($_POST['gender'])) { 
        if ($gender == "female") { 
            echo " selected"; 
        }
    } 
?> 

向您展示完整的代码:

<div class="form-group">
     <b>Gender</b>
    <select class="form-control custom-select" name="gender" id="gender" required>
        <option <?php if (isset($_POST['gender'])) { if ($gender == "male") { echo " selected"; }} ?> value="male">Male</option>
        <option <?php if (isset($_POST['gender'])) { if ($gender == "female") { echo " selected"; }} ?> value="female">Female</option>
   </select>
</div>

答案 3 :(得分:0)

您应该从options标记中删除name属性,因为name属性永远不会在options中使用。使用以下代码,希望对您有所帮助。

<select class="form-control custom-select" name="gender" id="gender" required>
     <option <?= (isset($_POST['gender']) && $_POST['gender'] == 'male') ? 'selected="selected"' : '' ?> value="male">Male</option>
     <option <?= (isset($_POST['gender']) && $_POST['gender'] == 'female') ? 'selected="selected"' : '' ?> value="female">Female</option>
</select>

让我知道是否还有问题。

答案 4 :(得分:0)

@Saron我想你几乎明白了。让我们检查下面的更新代码,

pip install locustio

保留一个虚拟选择选项,同时检查以确认两个选项均已正确选择。

将表单操作调用到另一个文件(如控制器)中。通过该操作,使用标题功能成功消息将页面重定向到用户,以了解保存/更新/,否则,刷新也将再次提交表单。