这是一个考试系统,我提出了一个随机的问题,我的问题是如何保存它并确定它是否已经保存在数据库中。
下面是随机的代码,为什么在我点击下一个之后,即使它在FORM中没有动作它也发布了未定义的索引“sub”但是我已经在顶部声明了它。如果数据是随机的并且避免复制保存的数据,如何保存数据?
<?
$exam_id = $_SESSION['examreference_id'];
$sub_id = $_GET['sub'];
$count=0;
$con = mysql_connect("localhost","root","");
if(!$con)
{
die('Could not connect:'. mysql_error());
}
mysql_select_db("db_compre",$con);
$result2 = mysql_query("SELECT * FROM examquestion_table WHERE examreference_id = '$exam_id' AND subjectreference_id = '$sub_id'");
while($info2 = mysql_fetch_array($result2))
{
$count++;
}
mysql_close($con);?>
<tr>
<td colspan = "2"> <?
$con = mysql_connect("localhost","root","");
if(!$con)
{
die('Could not connect:'. mysql_error());
}
mysql_select_db("db_compre",$con);
$result = mysql_query("SELECT * FROM examquestion_table WHERE examreference_id = '$exam_id' AND subjectreference_id = '$sub_id' ORDER BY RAND() LIMIT 1");
while($info = mysql_fetch_array($result))
{
echo "<tr><td ><label>" . " Your time limit is ".$info['totalTime'] ."  ". "second(s)" . "</label></td></tr>";
echo "<tr><td ><label>" . $info['question_data'] . "</label></td></tr>";
echo "<tr><td colspan ='2'><hr size = '5' color = 'orange'></td></tr><tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(0)' value = '100'><label>". $info['choice1_data'] ."</label></td></tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(1)' value = '100'><label>". $info['choice2_data'] ."</label></td></tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(2)' value = '100'><label>". $info['choice3_data'] ."</label></td></tr>";
echo "<tr><td colspan = '2'><input type = 'checkbox' name='answer' onClick='javascript:checkone(3)' value = '100'><label>". $info['choice4_data'] ."</label></td></tr>";
}
mysql_close($con);?>
答案 0 :(得分:1)
问题措辞非常混乱,但第一句话说“我提出了一个随机问题,我的问题是如何保存它并确定它是否已经保存在数据库中。”
为此,可能这就是你要找的东西:
<?php
$con = mysql_connect("localhost","root","") or die('Could not connect:'. mysql_error());
mysql_select_db("db_compre", $con);
$result = mysql_query("SELECT 1 FROM examquestion_table WHERE examreference_id = '{$exam_id}' AND subjectreference_id = '{$sub_id}'");
list($exists) = mysql_fetch_row($result2);
if (!$exists)
mysql_query("INSERT INTO examquestion_table (examreference_id, subjectreference_id) VALUES ('{$exam_id}', '{$sub_id}')");
mysql_close($con);
?>
我在你发布的代码中没有看到任何形式或对'sub'的引用,所以我不确定你是什么意思。
<小时/> 编辑 - OP编辑的代码
使用您的代码,您可能会得到一条PHP通知,说'sub'是$ _GET中未定义的索引,如果未设置$_GET['sub']
则会出现这种情况。
检查调用此页面的表单。如果method
属性设置为“POST”,则需要使用$_POST['sub']
。
您也可以使用$_REQUEST['sub']
从中获取它,但请记住,这会检查GET,POST和COOKIES,因此请确保在使用此方法之前不会有任何疑惑。
我会先这样做:
<?php
echo "GET:";
var_dump($_GET);
echo "<br /><br />POST:";
var_dump($_POST);
?>
这将显示每个数据中的数据。
答案 1 :(得分:1)
如果我做对了,你就会为数据库提出问题而用户会回答问题。 您希望确保不会出现任何问题而且您想要的问题 保存访客的答案。
如果这就是你的意思,那么你应该创建另一个表格来表明已经提出了哪些问题,同一个表格也会保存所选择的答案。
主要问题是:如何将问题与访问者联系起来? 如果您有成员系统,则应将问题与用户ID相关联, 否则使用随机值为microtime()或某些唯一值的cookie。
+ user_answers -ID -question_id -chosen_answer -user_uniqe_id
当您从数据库中提取问题时,请使用JOIN确保“user_unique_id”的“user_answers”中不存在问题的ID。
您需要创建一个功能,将问题和所选择的选项添加到此表中。 我看到你正在使用js onclick,你需要召唤一个运行该功能的php文件。