2017-01-22 2 views
0

Ich versuche, ein Bewertungsformular für Studenten zu erstellen, alle Fragen werden in db gespeichert. Ich erhalte sie von db jeder, der versucht, die Antworten für jede Frage auf db wieder zu speichern. Ich nehme an zu speichern, die Antworten zu db wie die folgendenErstellen eines Evaluierungsformulars php

<?php 

    $sql = "SELECT Q_body, Q_ID FROM s_evaluation_questions WHERE Ev_ID='1'"; 
    $result = $conn->query($sql); 

    ?> 

    <?php 

    if ($result->num_rows > 0) 
    { 

    ?> 
    <form action="AnswerS.php" method="POST"> 
    <table align="right" id="keywords" cellspacing="0" cellpadding="0"> 
     <thead> 
       <tr> 
        <th colspan="4"> </th> 
        <th>Question</th> 
       </tr> 
     </thead>  

    <tbody> 
    <?php 
     while($row = $result->fetch_assoc()) 
     { $answer="s".$row["Q_ID"]; 
      ?> 
        <tr> 
        <td> 
       <input type="hidden" name="Q_ID" value="<?php echo $row["Q_ID"]; ?>" > 
        <input type="radio" name=<?php echo $answer?> value="Bad" >Bad 
        <input type="radio" name=<?php echo $answer?> value="Good"> Good 
        <input type="radio" name=<?php echo $answer?> value="VeryGood"> Very Good 
        <input type="radio" name=<?php echo $answer?> value="Excellent"> Excellent</td>      
        <td align="right"> <?php echo $row["Q_body"]?></td> 
        </tr> 

        <?php } ?>     

    </tbody> 

     </table></br></br></br></br></br></br></br> 
     <input type="submit" value="Send" /> 
       </form> 
     <?php 

     ?></div> 
    <?php 
    } else 
    {echo "not allowed";} 

Und auf der AnswerS.php Seite:

$UID='1'; 
$answer=$_POST['answer']; 
$Q_ID= $_POST['Q_ID']; 


    $sql = "INSERT INTO s_evaluation_answers(Q_ID, A_body, UID) VALUES($Q_ID, $answer, $UID) "; 
$result = $conn->query($sql); 

if ($result === TRUE) { 
    echo "done" ; 
    } 
    else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 

aber leider ist es doesn‘alle Antworten sollten von Optionsfeldern wie folgt gewählt werden t arbeiten !, Ich habe versucht, den Wert von Q_ID zu verfolgen, und es gibt nur die letzte Frage id nicht alle Fragen. Wie kann ich den ausgewählten Wert aus dem Optionsfeld für jede Frage speichern und als Antwort für diese Frage speichern? (Hinweis: Alle Fragen werden von db gebracht)

dank

Antwort

0

Wenn Sie Ihre HTML-Quellcode sehen werden Sie feststellen, dass Sie mit Namen viele Felder haben Q_ID:

<input type="hidden" name="Q_ID" value="one id" > 
<input type="hidden" name="Q_ID" value="another id" > 
<input type="hidden" name="Q_ID" value="some more id" > 

So Browser Sie das letzte sendet Wert von Q_ID - im obigen Fall ist es some more id. Um dies zu vermeiden - verwenden [] Notation in name Attribut:

<input type="hidden" name="Q_ID[]" value="one id" > 
<input type="hidden" name="Q_ID[]" value="another id" > 
<input type="hidden" name="Q_ID[]" value="some more id" > 

Danach wird $_POST['Q_ID'] Ausgeben finden Sie eine Reihe geben. Sie können darüber mit foreach iterieren und weitere Informationen sammeln, die Sie benötigen. Etwas wie (vereinfacht):

foreach ($_POST['Q_ID'] as $q) { 
    // answer will be stored in a `s . $q` value of POST 
    $answer = $_POST['s' . $q]; 
    $sql = "INSERT INTO s_evaluation_answers(Q_ID, A_body, UID) VALUES($q, $answer, $UID) "; 
    $result = $conn->query($sql); 
} 
+0

danke. jetzt bringt es die richtige Q_ID, aber es bringt nicht seine Antwort (das ist aus Radio-Button ausgewählt) – user2148116

+0

Meine Schuld sollte es sein, $ Antwort = $ _POST ['s'. $ q]; ' –

Verwandte Themen