【问题标题】:How to show selected option in select tag of html?如何在 html 的选择标签中显示选定的选项?
【发布时间】:2017-03-28 09:36:36
【问题描述】:

我正在使用 html 中的选择标记来显示一些列表。现在,当我从 select 标记中选择一个选项时,我想再次加载表单,并通过所选选项运行另一个查询并在另一个 select 标记中显示另一个查询的值。

它在选择任何选项后正常工作我发布了一个类型,我从中获取另一个选择标签中的另一个数据,但是当我单击假设选项 TSgt 并且表单重新加载 TSgt 类型数据,但在选择中选择的选项标签显示为 MSgt 这不是我选择的。

如果我不检查 $type 是否设置在 _POST 数组中,并且只显示选择标签而没有如下选择值:

<option value="1">SSgt</option> 
<option value="2">TSgt</option> 
<option value="3">MSgt</option> 

然后,默认选择值显示SSgt,我想在选择标签中显示用户选择的值。

       <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>MCQ Questions</title>

</head>
<body>

<?php
session_start();

$dbh = new PDO('mysql:host=174.75.54;dbname=handbook', 'airman', 'airman'); 

    $type = $_POST['type'];
    $question = $_SESSION["question"];
    $optionA = $_SESSION["opt1"];
    $optionB = $_SESSION["opt2"];
    $optionC = $_SESSION["opt3"];
    $optionD = $_SESSION["opt4"];
    $ans = $_SESSION["ans"];
    $chapter = $_SESSION["chapter"];
?>

<form method="post" action="mcq.php" enctype="multipart/form-data">
<p> Enter the question :</p> <input name="question" type="text"> <br><br>
Select question type : 

<select name="type" id="type" onchange="this.form.submit()"> 

<?php if(isset($_POST['type']))
{ ?>
<option value="1"  selected=<?=($type==1?"checked":"");?>>SSgt</option> 

<option value="2"  selected=<?=($type==2?"checked":"");?>>TSgt</option> 
<option value="3" selected=<?=($type==3?"checked":"");?>>MSgt</option> 
</select>
<?php
}
    else 
    {
    ?>
    <option value="1">SSgt</option> 
<option value="2">TSgt</option> 
<option value="3">MSgt</option> 
</select>
    <?php
    }
    ?>

<br><br>
<?php if(isset($optionA))
{ ?>
<p> Enter options :</p>
Enter option A : <input name="opt1" type="text" value = "<?php echo $optionA?>"</input> <br><br>

<?php
}
else{
?>
<p> Enter options :</p>
Enter option A : <input name="opt1" type="text"> <br><br>
<?php   
}
?>

Enter option B : <input name="opt2" type="text"> <br><br>
Enter option C : <input name="opt3" type="text"> <br><br>
Enter option D : <input name="opt4" type="text"> <br><br>

Select correct answer :

<select name="ans" id="type"> 

<option value="A">A</option> 
<option value="B">B</option> 
<option value="C">C</option> 
<option value="D">D</option>
</select>

<br><br>

Select Chapter :


<select name="chapters" id="chapters"> 

<?php 

if(isset($_POST['type']))
{
    $stmt = $dbh->prepare("SELECT * FROM chapters where type = :type"); 
    $stmt->bindParam("type", $type);
$stmt->execute(); 
$results = $stmt->fetchall(PDO::FETCH_ASSOC); 

if(count($results > 0)){ 
foreach($results as $row):?> 
<option value="<?php echo $row['id'];?>"><?php echo $row['title'];?></option> 
<?php 
endforeach; 
}else{?> 

<option value="0">No data found</option> 
<?php 
} 

}

else{

$stmt = $dbh->prepare("SELECT * FROM chapters where type = 1"); 

$stmt->execute(); 
$results = $stmt->fetchall(PDO::FETCH_ASSOC); 

if(count($results > 0)){ 
foreach($results as $row):?> 
<option value="<?php echo $row['id'];?>"><?php echo $row['title'];?></option> 
<?php 
endforeach; 
}else{?> 

<option value="0">No data found</option> 
<?php 
} 
}
?> 

</select> <br><br>
<input type="submit" value = "Submit">

</form>
</body>
</html>


<?php

// escape post variables
$question = $_POST['question'];
$option1 = $_POST['opt1'];
$option2 = $_POST['opt2'];
$option3 = $_POST['opt3'];
$option4 = $_POST['opt4'];
$ans = $_POST['ans'];
$chapter = $_POST['chapters']; 


if(!empty($ans) and !empty($question) and !empty($option1) and !empty($option2) and !empty($option3) and !empty($option4) and !empty($type) and !empty($chapter))
{
    $stmt = $dbh->prepare("INSERT INTO questions (question,answer_a,answer_b,answer_c,answer_d,answer,type,chapterId) VALUES (?, ?, ?, ?, ?, ?, ?,?)");
$stmt->execute(array($question, $option1, $option2, $option3, $option4, $ans,$type,$chapter));

if ($dbh->lastInsertId())
{   
    echo 'Question submitted.';

    echo '<a href="mcq.php">Upload another question.</a>';
    session_destroy();
}
else
{
    echo 'Question could not submit.';
}

}

else{

    $_SESSION["question"] = $question;
    $_SESSION["chapter"] = $chapter;
    $_SESSION["ans"] = $ans;
    $_SESSION["opt1"] = $option1;
    $_SESSION["opt2"] = $option2;
    $_SESSION["opt3"] = $option3;
    $_SESSION["opt4"] = $option4;

    echo 'Fill all fields.';
}

?>

我不知道这里出了什么问题。谁能帮帮我?

谢谢。

【问题讨论】:

  • 选择它的“选择”而不是“选中”...!

标签: javascript php jquery html mysql


【解决方案1】:

selected=checked 是错误的。 selected 就够了。

语法是&lt;option value="1" selected&gt;SSgt&lt;/option&gt;

把代码改成

<option value="1"  <?php echo($type==1?"selected":"");?>>SSgt</option> 

<option value="2"  <?php echo($type==2?"selected":"");?>>TSgt</option> 
<option value="3" <?php echo($type==3?"selected":"");?>>MSgt</option>

【讨论】:

  • 为什么不标记为错字?
  • 我认为这不是错字。他将selected 添加到所有3 个选项中,然后只使用三元运算符。所以他可能没有概念。 @mplungjan
  • 它不起作用,它在 SSgt 名称的左侧显示 >。
  • @Sid 我错过了echo 现在检查一下。
  • &lt;?= vs &lt;?PHP echo - 有什么区别吗?
猜你喜欢
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2015-01-16
  • 2019-06-23
相关资源
最近更新 更多