如何使用下拉列表使用PHP将值分配给某个行(在以相同形式插入的行之外)

问题描述 投票:0回答:1

我正在使用SQL,HTML和PHP创建一个测验构建器,用户可以根据该问题(A,B,C或D)插入他们的问题和四个答案选项。以相同的形式,他们可以从下拉列表中选择正确答案的选择。然后,应该将该特定答案行的“正确”布尔值分配给数据库中的1。 [我的数据库结构和我的表格应该是什么样的]

<?php
include ("nav.php");
include("connect.php");

$quiz_id = htmlentities($_GET["quizid"]);

$quiz = "SELECT * FROM `q_quiz` WHERE q_quiz.id ='$quiz_id'";

$quizresult= $conn->query($quiz);

if(!$quizresult){
    echo $conn->error;
}

?>
<html>
    <head>
        <title></title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="ui/styles.css">


        <!-- UIkit CSS -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.3/css/uikit.min.css" />

        <!-- UIkit JS -->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.3/js/uikit.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/uikit/3.0.3/js/uikit-icons.min.js"></script>
    </head>
    <body>
        <div class ='uk-container'>
             
             <?php
             if (isset($_POST['submit'])) {

                 include("connect.php");
                 
                 $newquest = $conn->real_escape_string($_POST['question']);
                 
                 $insertquest = "INSERT INTO q_questions(quiz_id, question)
                            VALUES ('$quiz_id', '$newquest')";

                 $resultquest = $conn->query($insertquest);
                 
                 $quest_id = $conn -> insert_id;
                 
                 if (!$resultquest) {
                     echo $conn->error;
                 } 
                 
                 foreach ($_POST['ans'] as $ans) {
                    $answers = $conn->real_escape_string($ans);
                    
                    $insertans = "INSERT INTO q_answers (question_id, answer) VALUES ('$quest_id', '$answers')";
                    $resultans = $conn ->query($insertans);
                    
                    if (!$resultans) {
                     echo $conn->error;
                 } else {
                     header("Location: managequiz.php?quizid=$quiz_id");
                 }   
                                            
                 } //END OF FOREACH LOOP
                 
                 
             }
             
             
             ?>
             
             <?php
                while ($row = $quizresult->fetch_assoc()) {
			$titledata = $row["title"];
                }
             ?>
                
             <div uk-grid>
                 <form class="uk-form-horizontal" method='POST' action='#'>
                 <input type='hidden' name='questionid' value=''>
                 
                 <fieldset class="uk-fieldset">
                 <legend class="uk-legend">New question for quiz: <?php echo $titledata?></legend>
                 <div class="uk-margin">
                     <label class="uk-form-label">Question</label>
                     <div class="uk-form-controls">
                         <textarea class="uk-textarea" rows="5" placeholder="Enter your question here..." name='question' required></textarea>
                     </div>
                 </div>
                 <div class="uk-margin">
                     <div class="uk-form-label">A</div>
                     <div class="uk-form-controls uk-form-controls-text">
                         <input class="uk-input" id="form-horizontal-text" type="text" name='ans[]'>
                     </div>
                     
                     <div class="uk-form-label">B</div>       
                     <div class="uk-form-controls uk-form-controls-text">
                         <input class="uk-input" id="form-horizontal-text" type="text" name='ans[]'>
                     </div>
                     
                     <div class="uk-form-label">C</div>
                     <div class="uk-form-controls uk-form-controls-text">
                         <input class="uk-input" id="form-horizontal-text" type="text" name='ans[]'>
                     </div>
                     
                     <div class="uk-form-label">D</div>
                     <div class="uk-form-controls uk-form-controls-text">
                         <input class="uk-input" id="form-horizontal-text" type="text" name='ans[]'>
                     </div>
                     
                     <div class="uk-form-label">Correct Answer:</div>
                     <div class="uk-form-controls">
                         <select class="uk-select" id="form-stacked-select">
                             <option value=''>A</option>
                             <option value=''>B</option>
                             <option value=''>C</option>
                             <option value=''>D</option>
                         </select>
                     </div>
               
                     
                     <div uk-form-custom>
                             <input class="uk-button uk-button-default" type="submit" name='submit' tabindex="-1" value='Save & Continue'>
                     </div>
                     
                 </div>
                 </fieldset>
             </form>
             </div>
    </body>
</html>

enter image description here

php html sql dropdown
1个回答
0
投票

如kiks73所述,您可以为选择选项分配值,并将选定的值作为正确的答案ID发布到您的数据库。

<html>
<select class="uk-select" id="form-stacked-select" name="correctAnswer">
    <option value='1'>A</option>
    <option value='2'>B</option>
    <option value='3'>C</option>
    <option value='4'>D</option>
</select>
</html>

如果选择A,则值“1”将作为正确答案发送到您的数据库(只要您更正了php中的SQL部分即可。

编辑:我的问题有点晚了,抱歉。您还需要POST选择以获取有关正确答案的必要信息。你可以尝试这样的事情:

         <?php

         //just a counter
         $i = 1;
         //correct boolean 1 or 0
         $bool = 0;

         if (isset($_POST['submit'])) {

             include("connect.php");

             $newquest = $conn->real_escape_string($_POST['question']);

             $insertquest = "INSERT INTO q_questions(quiz_id, question)
                        VALUES ('$quiz_id', '$newquest')";

             $resultquest = $conn->query($insertquest);

             $quest_id = $conn -> insert_id;

             if (!$resultquest) {
                 echo $conn->error;
             } 

             foreach ($_POST['ans'] as $ans) {
                //get the value of the selected answer
                $correctAnswer = $_POST['correctAnswer'];
                //check if the selected one matches with our counter
                if($i == $correctAnswer)
                {
                    $bool = 1;
                }
                else
                {   
                    $bool = 0;
                }                   
                $answers = $conn->real_escape_string($ans);

                $insertans = "INSERT INTO q_answers (question_id, answer, correct) VALUES ('$quest_id', '$answers', $bool)";
                $resultans = $conn ->query($insertans);

                if (!$resultans) {
                 echo $conn->error;
             } else {
                 header("Location: managequiz.php?quizid=$quiz_id");
             }   
                   $i ++;                     
             } //END OF FOREACH LOOP


         }


         ?>

如果您发布整个表单,则可以使用其中的任何内容。我创建了一个丑陋的循环,每次检查SQL DB的答案时都会检查,如果选择了这个。

© www.soinside.com 2019 - 2024. All rights reserved.