|
|
|
รบกวนดู Code การทำข้อสอบออนไลน์ให้หน่อยค่ะ มีปัญหาในการเก็บคะแนนคะ ไม่สามารถเก็บคะแนนได้ค่ะ |
|
|
|
|
|
|
|
สอบถามเรื่องการทำข้อสอบออนไลน์ค่ะ โดยมีตารางเก็บข้อมูลดังนี้ค่ะ
1.ตารางเก็บคำถาม-คำตอบแบบ 5 ตัวเลือก
2. ตารางเก็บคำถาม-คำตอบ แบบข้อสอบถูก-ผิด
3. ตารางเก็บคะแนน
**โดย score เก็บคะแนนในแบบคำถาม-คำตอบแบบ 5 ตัวเลือก
score2 เก็บคะแนนในแบบคำถาม-คำตอบ แบบข้อสอบถูก-ผิด
ตอนแสดงผลจะดึงข้อมูลคำถาม-คำตอบของทั้ง 2 ตารางมาแสดง
******แต่ปัญหามีอยู่ว่า ไม่สามารถเก็บข้อมูลคะแนนใน score2 เก็บคะแนนในแบบคำถาม-คำตอบ แบบข้อสอบถูก-ผิดได้ค่ะ รบกวนดู Code ให้หน่อยนะคะ
หน้าแสดงข้อมูลคำถาม-คำตอบ
Code (PHP)
<form name="form1" method="post" action="send_score.php?qs_id=<?=$objResult2['question_set_id'];?>"">
<?
$sql="Select * From question q, question_set qs WHERE q.question_set_id=qs.question_set_id and q.question_set_id='".$_GET['id']."' order by rand()";
$db_query=mysql_query($sql);
$i=0;
while($result=mysql_fetch_array($db_query))
{
$i++;
?><br/>
<table width="95%" border="0" align="center">
<tr>
<td align="left"><b><?=$i;?><input name="id[<?=$i;?>]" type="hidden" value="<?=$result["question_id"];?>">
<?=$result["question_name"];?></b></td>
</tr>
<tr>
<td width="14%"> <input name="choice<?=$i;?>" type="radio" value="1">
<?=$result["choice1"];?>
</td>
</tr>
<tr>
<td><input type="radio" name="choice<?=$i;?>" value="2">
<?=$result["choice2"];?></td>
</tr>
<tr>
<td><input type="radio" name="choice<?=$i;?>" value="3">
<?=$result["choice3"];?></td>
</tr>
<tr>
<td><input type="radio" name="choice<?=$i;?>" value="4">
<?=$result["choice4"];?></td>
</tr>
<tr>
<td><input type="radio" name="choice<?=$i;?>" value="5">
<?=$result["choice5"];?>
<input name="answer<?=$i;?>" type="hidden" value="<?=$result["answer"];?>"></td>
</tr>
</table>
<? }?>
<br />
<br />
<?
$sql2="select * from question2 q2, question_set qs WHERE q2.question_set_id=qs.question_set_id and q2.question_set_id='".$_GET['id']."' order by rand()";
$db_query2=mysql_query($sql2);
$a=0;
while($result2=mysql_fetch_array($db_query2))
{
$a++;
?><br/>
<table width="95%" border="0" align="center">
<tr>
<td align="left"><b><?=$a;?><input name="id[<?=$a;?>]" type="hidden" value="<?=$result2["question2_id"];?>">
<?=$result2["question2_name"];?></b></td>
</tr>
<tr>
<td width="14%"> <input name="choice1<?=$a;?>" type="radio" value="1">
<?=$result2["choice1"];?>
</td>
</tr>
<tr>
<td><input type="radio" name="choice1<?=$a;?>" value="2">
<?=$result2["choice2"];?>
<input name="answer2<?=$a;?>" type="hidden" value="<?=$result2["answer2"];?>"></td>
</tr>
</table>
<?
}
?>
<br />
<div align="center"><br>
<input type="hidden" name="line" value="<?=$i;?>">
<input type="hidden" name="line2" value="<?=$a;?>">
<input type="submit" name="Submit" value="ส่งข้อสอบ">
</div>
</form>
หน้ารับค่าข้อมูลแล้วบันทึกลง ตารางเก็บคะแนน
Code (PHP)
<?
$score=0;
$score2=0;
for($i=1;$i<=$_POST["line"];$i++)
{
if($_POST["choice$i"] == $_POST["answer$i"])
{
$score=$score+1;
}
}
for($a=1;$a<=$_POST["line"];$a++)
{
if($_POST["choice$a"] == $_POST["answer2$a"])
{
$score2=$score2+1;
}
}
//echo "<p align='center'>คุณทำข้อสอบได้ $score คะแนนจาก 20 ข้อ<br>";
echo "<script language='javascript'>alert('บันทึกข้อมูลเรียบร้อยแล้ว');</script>";
echo "<meta http-equiv='refresh' content='0;URL=example.php'>";
$strSQL = "INSERT INTO score_example (member_id, question_set_id, score, score2, time_end) VALUES ('".$_SESSION["id"]."', '".$_GET['qs_id']."', '$score', '$score2', now())";
$objQuery = mysql_query($strSQL);
?>
รบกวนด้วยนะคะ
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2015-11-11 15:43:49 |
By :
chero |
View :
6549 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะใส่ Input type=hidden ให้คนทำข้อสอบลอกคำตอบเหรอครับ แค่วิวซอร์ส ก็เห็นหมดครับ
ให้คีวรี่คำตอบที่ถูกจาก database เอามาเปรียบเทียบ กับคำตอบที่ได้ครับ
Code (PHP)
1 คำถาม xxx yyy
<input type='radio' name="truefalse[0]" value="1">ถูก
<input type='radio' name="truefalse[0]" value="0">ผิด
2 คำถาม xxx yyy
<input type='radio' name="truefalse[1]" value="1">ถูก
<input type='radio' name="truefalse[1]" value="0">ผิด
Code (PHP)
//PHP ตัวรับ
$result=$db->query('select .......');
$rows=$result->fetch_all(MYSQLI_ASSOC);
foreach($_POST['truefalse'] as $key => $val){
$score2 += ($row[$key]['answer']==$val? 1 : 0);
}
เป็นแค่ตัวอย่าง ต้องประยุกติ์เอาเองนะครับ
ใช้ได้กับ แบบ choice แค่ขยาย element จาก 2 เป็น5
Code (PHP)
1 คำถาม xxx yyy
<input type='radio' name="choice[0]" value="1">aaaa
<input type='radio' name="choice[0]" value="2">bbbb
<input type='radio' name="choice[0]" value="3">ccccc
<input type='radio' name="choice[0]" value="4">dddd
<input type='radio' name="choice[0]" value="5">eeee
2 คำถาม xxx yyy
<input type='radio' name="choice[1]" value="1">aaaa
<input type='radio' name="choice[1]" value="2">bbbb
<input type='radio' name="choice[1]" value="3">ccccc
<input type='radio' name="choice[1]" value="4">dddd
<input type='radio' name="choice[1]" value="5">eeee
|
|
|
|
|
Date :
2015-11-11 16:22:28 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดูจากข้อมูลที่ออกมา ปนะนำให้ปรับรูปแบบ table เป็น
1. table questions
code , question_name
2. table answers
code , question_code , answer_name , answer
เวลาจำใช้งานก็ ไป คิวรี่ตาราง question ออกมาก่อน ว่ามีกี่คำถาม
แล้วไปเอาค่า code ของ question ไปคิวรี่ หาคำตอบ ใน table answers ก็จะได้ คำตอบของคำถามนั้นๆ มา
ทำแบบนี้ 1 คำถาม จะปรับเพิ่ม กี่คำตอบให้เลือกก็ได้ สะดวกต่อการใช้งาน และยืดหยุ่นมากกว่า
------------
กรณีอยากแบ่งเป็น หลายๆ part ก็เพิ่ม type ไปใน table question ที้เดียว
code , question_name ,parts
1 ทดสอบ 1
2 ทดสอบ2 1
3 คำถามถูกผิด 2
4 คำกถามถูกผิด 2
เวลาคิวรี่ก็ select มาเป็น parts ใช้งานสะดวกดีนะ
|
ประวัติการแก้ไข 2015-11-11 20:59:12 2015-11-11 21:00:50
|
|
|
|
Date :
2015-11-11 20:56:16 |
By :
progamer2000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|