2017-03-28 110 views
-2

我使用html中的select標籤來顯示一些列表。現在,當我從select標籤中選擇一個選項時,我想再次加載表單,並通過所選選項運行另一個查詢,並在另一個選擇標籤中顯示另一個查詢的值。如何在html的select標籤中顯示選中的選項?

選擇任何選項後,它的工作正常我發佈一個類型,我從另一個選擇標籤中獲取另一個數據,但是當我單擊假設選項TSgt和表單重新加載TSgt類型的數據,但選擇選擇標籤顯示爲不是我選擇的MSgt。

如果我如果$類型在_POST陣列設置,並只顯示選擇的標籤不喜歡遵循選擇值不檢查:

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

然後,選擇默認值顯示警署警長,我想顯示用戶選擇的選擇標籤中的值。

 <!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.'; 
} 

?> 

我不知道這裏出了什麼問題。任何人都可以幫我嗎?

謝謝。

+1

爲選擇它的 「選擇」 而不是 「檢查」 ...! –

回答

1

selected=checked是錯誤的。 selected就夠了。

語法是<option value="1" selected>SSgt</option>

更改代碼

<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> 
+0

爲什麼不標記爲錯字? – mplungjan

+0

我認爲這不是一個錯字。他在所有3個選項中加入了「selected」,然後只使用三元運算符。所以他可能會失去理念。 @mplungjan –

+0

它不起作用,它顯示在SSgt名稱的左側。 – Sid

相關問題