我有一个带有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输入,我想使用相同的模式。
答案 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
保留一个虚拟选择选项,同时检查以确认两个选项均已正确选择。
将表单操作调用到另一个文件(如控制器)中。通过该操作,使用标题功能成功消息将页面重定向到用户,以了解保存/更新/,否则,刷新也将再次提交表单。