【问题标题】:How to make a form with that picks questions and saves answers from/into database如何制作一个可以选择问题并将答案从/保存到数据库的表格
【发布时间】:2023-03-15 09:45:01
【问题描述】:

我正在制作一个从数据库中获取问题和答案的表格,我有几个问题,但我想在每一页上回答一个问题,然后转到下一个问题。我怎样才能做到这一点?我需要一些提示。

我的问题和答案代码如下所示:

echo "<form method='post'>";
	$sql= "SELECT pid, qid, question_link FROM question  ORDER BY qid ASC LIMIT 1";

$result = $mysqli->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_array()) {
	$pid1= $row['pid'];
	$qid1= $row['qid'];
	
	echo $row['question_link']."<br>";
	}
 
}

	$sql1= "SELECT pid, qid, aid, answer, points FROM answer_det WHERE pid=$pid1 AND qid=$qid1";

$result1 = $mysqli->query($sql1);

if ($result1->num_rows > 0) {
    while($row = $result1->fetch_array()) {
		$answer= $row['answer'];
		$aid= $row['aid'];
	echo "<input type='radio' name='answers' value='".$answer."'/>".$answer."<br>";
	}
 
}

echo "<input type='submit' value='Submit'></form>";

我应该创建另一个 PHP 页面,将数据保存到数据库中并显示下一个问题吗?或者有什么功能可以做到这一点?

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    视情况而定。如果您希望用户在途中停下来,下次可能会回来完成它,那么 DB 是一个不错的选择。否则你可以使用 session 来存储他们的进度。

    <?php 
    session_start();
    if(isset($_POST['name'])){
        //store answers in session
        $new = (!empty($_SESSION['session_name']))? $_SESSION['session_name'].'|'.$_POST['name'] : $_POST['name'];
        //split session into an array
        $_SESSION['session_name'] = $new;
    }
    else if(isset($_POST['clear'])){
        if(!empty($_SESSION['session_name'])){
            unset($_SESSION['session_name']);
            echo "cleared";
        }
        else
            echo "Nothing to Clear";
    }
    if(!empty($_SESSION['session_name'])){
        var_dump($_SESSION['session_name']);
    }
    //finish the procees here befor storing into database;
    //use foreach to itterate btw arrays and match anwers
    //$_SESSION['session_name'] = explode('|', $_SESSION['session_name']);
    //answer table $answers = array('a','b','c','d','e');
    /* foreach($_SESSION['session_name'] as $key => $ans){
         if($ans == $answer[$key]){
            //right procesesor
         }
         else{
            //wrong procesesor
         }
    } */
    //handle the right and wrong process get to total score the store in db
    
    
    ?>
    <form method="post" action="index.php">
       <input name="name" type="text" placeholder="">
       <input type="submit" value="submit">
    </form>
    <form method="post" action="index.php">
      <input type="submit" name="clear" value="clear">
    </form>
    

    简单的基本演示会话如何在不每次查询数据库的情况下完成工作。

    【讨论】:

    • 我不希望用户回来。他们只会做一次测试,不能回到上一个问题
    • 然后使用 session 来存储他们的进度。
    • 你是什么意思使用会话?我不太擅长会话,但我应该将所有内容保存在会话中,然后在测试结束时将其保存在数据库中吗?
    • 你想保存他们的最终成绩吗?如果没有,你不需要任何数据库
    • 是的,我想将答案保存在数据库中(我有单选按钮),因为然后我将在仪表板页面中显示结果
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 2011-06-09
    • 2021-07-24
    • 1970-01-01
    • 2022-12-12
    • 2013-06-30
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多