2017-03-28 2 views
-2

Ich verwende ein select-Tag aus HTML, um eine Liste anzuzeigen. Wenn ich nun eine der Optionen aus dem select-Tag auswähle, möchte ich das Formular erneut laden und durch die gewählte Option führe ich eine weitere Abfrage aus und zeige die Werte einer anderen Abfrage in einem anderen select-Tag an.Wie zeige ich ausgewählte Option in HTML-Tags?

Es funktioniert ordnungsgemäß nach der Auswahl einer Option Ich poste einen Typ, aus dem ich eine andere Daten in einem anderen Tag zu erhalten, aber wenn ich Option TSgt und das Formular neu laden mit dem TSgt Typ Daten, aber die Option ausgewählt in klicken Wählen Sie das Tag als MSgt aus, das nicht das ist, das ich ausgewählt habe.

Wenn ich nicht überprüfen, ob die $ Art in _POST Array gesetzt und zeigen nur die select-Tag ohne einen Auswahlwert wie folgt:

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

Dann Standard ausgewählten Wert zeigt SSgt, möchte ich Zeigen Sie den Wert im Select-Tag an, den der Benutzer ausgewählt hat.

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

?> 

Ich weiß nicht, was hier falsch läuft. Kann mir bitte jemand helfen?

Vielen Dank.

+1

für ausgewählte seine "ausgewählt" nicht "geprüft" ...! –

Antwort

1

selected=checked ist falsch. selected ist genug.

Die Syntax ist <option value="1" selected>SSgt</option>

Ändern Sie den Code zu

<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

Warum nicht als Tippfehler kennzeichnen? – mplungjan

+0

Ich denke, es ist kein Tippfehler. Er fügt "ausgewählt" zu allen 3 Optionen hinzu und verwendet dann nur den ternären Operator. Also ist er vielleicht aus dem Konzept. @mplungjan –

+0

es funktioniert nicht, es zeigt> auf der linken Seite des SSgt-Namen. – Sid