|
|
|
รบกวนพี่วินและพี่คนอื่นๆที่เคยทำแบบทดสอบ ตอนนี้ทำๆไปแต่ติดที่ต้องแบ่งเป็นข้อละหน้า พอถึงหน้าสุดท้ายให้คำณวนคะแนนที่ได้ครับ |
|
|
|
|
|
|
|
คือทำตามกระทู้นี้ https://www.thaicreate.com/php/forum/065542.html ตอนนี้ถ้าแบบทดสอบอยู่ในหน้าเดียวสามารถทำได้แล้วครับ
แต่ต้องทำไห้แบบทดสอบมีหน้าละข้อ สมมุติ 10 ข้อ ก็ 10 หน้า แล้วกดตรวจคะแนนที่หน้าสุดท้ายแล้วคำนวณคะแนนครับ
โคดที่หน้าทำแบบทดสอบ แบ่งหน้าละข้อได้แล้ว แต่ไม่รู้วิธีตรวจคะแนนและส่งคะแนนไปคำนวณหน้าสุดท้ายครับ
test
<?
session_start();
include ("admin/module/inc/php/config.inc.php");
include ("admin/module/inc/php/function.inc.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="admin/css/korea.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" type="image/x-icon" href="admin/images/icon/favicon.ico">
<title>Quiz 100 items</title>
</head>
<script language="javascript">
function chknull(){
var a=document.formregis;
if(a.name.value==""){
alert("Please fill out");
a.name.focus();
return false;
}else if(a.Lastname.value==""){
alert("Please fill out");
a.Lastname.focus();
return false;
}else if(a.Nickname.value==""){
alert("Please fill out");
a.Nickname.focus();
return false;
}else if(a.Tel.value==""){
alert("Please fill out");
a.Tel.focus();
return false;
}
return true;
}
</script>
<body>
<form name="form1" method="post" action="checkscore.php">
<?
$selectPoint=select("member","Username='".$_SESSION['Username']."'");
$Bypass=mysql_fetch_array($selectPoint);
if($_SESSION['Username'] == ""){
echo "<script>";
echo "alert('กรุณาล๊อคอินเข้าสู่ระบบ');";
echo "window.location='index.php';";
echo "</script>";
}
?>
<div id="warp">
<!--- <div id="login"><? include("login.php"); ?></div> --->
<div id="clear"></div>
<div id="header"></div>
<div id="clear"></div>
<div id="header-menu"><? include("top_menu.php"); ?></div>
<div id="clear"></div>
<div id="container">
<div id="container-left">
<form name="from" method="post" onSubmit="return chknull();" action="checkscore.php">
<?
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("quiz_mfes");
$strSQL = "SELECT * FROM quiz ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$Per_Page = 1; // Per Page
$Page = $_GET["Page"];
if(!$_GET["Page"])
{
$Page=1;
}
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$Page_Start = (($Per_Page*$Page)-$Per_Page);
if($Num_Rows<=$Per_Page)
{
$Num_Pages =1;
}
else if(($Num_Rows % $Per_Page)==0)
{
$Num_Pages =($Num_Rows/$Per_Page) ;
}
else
{
$Num_Pages =($Num_Rows/$Per_Page)+1;
$Num_Pages = (int)$Num_Pages;
}
$strSQL .=" order by id ASC LIMIT $Page_Start , $Per_Page";
$objQuery = mysql_query($strSQL);
$result=mysql_fetch_array($objQuery);
?>
<table width="100%" border="0" align="center">
<tr>
<td height="18" colspan="5"> </td>
</tr>
<tr>
<td height="25" colspan="5"><input name="id<?=$i;?>" type="hidden" value="<?=$result["id"];?>"> No.<? echo $i ?>
<?=$result["question"];?></td>
</tr>
<tr>
<td width="4%" height="30"> </td>
<td width="28%"> <input name="c<?=$i;?>" type="radio" value="1">a.
<?=$result["c1"];?>
</td>
<td width="27%"> <input type="radio" name="c<?=$i;?>" value="2">b.
<?=$result["c2"];?>
</td>
<td width="19%"> <input type="radio" name="c<?=$i;?>" value="3">c.
<?=$result["c3"];?>
</td>
<td width="22%"> <input type="radio" name="c<?=$i;?>" value="4">d.
<?=$result["c4"];?>
<input name="answer<?=$i;?>" type="hidden" value="<?=$result["answer"];?>">
</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
<?
if($Prev_Page)
{
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
}
?>
<?
if($Page!=$Num_Pages)
{
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
}
mysql_close($objConnect);
?>
</form>
</div>
</div>
<div id="container-right">
<? include ("menutime.php"); ?>
</div>
<div id="clear"></div>
<div id="footer"></div>
</body>
</html>
โคดหน้าตรวจคะแนนที่สร้างไว้ แต่ยังคำนวณไม่ได้ครับ
checkscore (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?
$score=0;
for($i=1;$i<=$_POST["line"];$i++)
{
If($_POST["c$i"] == $_POST["answer$i"])
{
$score=$score+1;
}
}
echo "True $score<br>";
?>
</body>
</html>
ส่วนฐานข้อมูลตามนี้ครับ
db (PHP)
CREATE TABLE `quiz` (
`id` int(5) NOT NULL auto_increment,
`question` varchar(50) NOT NULL,
`c1` varchar(50) NOT NULL,
`c2` varchar(50) NOT NULL,
`c3` varchar(50) NOT NULL,
`c4` varchar(50) NOT NULL,
`answer` int(3) NOT NULL,
`userid` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=98 ;
-- dump ตาราง `quiz`
INSERT INTO `quiz` VALUES (1, 'fffff', '1', '2', '3', '4', 1, 0);
INSERT INTO `quiz` VALUES (2, 'rrrrr', '1', '2', '3', '4', 2, 0);
INSERT INTO `quiz` VALUES (3, 'กดเ้ดเ', 'นยบ', 'ยนบ', 'ยบ', 'นยบ', 1, 0);
INSERT INTO `quiz` VALUES (4, 'รนยรนยบ', 'นยบน', 'นยบรน', 'ยบนยบ', 'นย', 2, 0);
INSERT INTO `quiz` VALUES (5, 'นนนนน', 'รรร', 'นนน', 'รน', 'รนรน', 1, 0);
INSERT INTO `quiz` VALUES (6, 'นนนนน', 'รรร', 'นนน', 'รน', 'รนรน', 1, 0);
INSERT INTO `quiz` VALUES (7, 'นนนนน', 'รรร', 'นนน', 'รน', 'รนรน', 2, 0);
INSERT INTO `quiz` VALUES (8, 'นนนนน', 'รรร', 'นนน', 'รน', 'รนรน', 1, 0);
INSERT INTO `quiz` VALUES (9, 'นนนนน', 'รรร', 'นนน', 'รน', 'รนรน', 1, 0);
Tag : PHP
|
|
|
|
|
|
Date :
2014-01-28 15:26:39 |
By :
wita |
View :
1254 |
Reply :
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุ่มคำถามเหรอคับ
เวลาโพสแล้วก็เก็บข้อมูลเลขคำถามเลขคำตอบ ไว้ที่ session หรือ cookie ก็ได้ครับเพิ่มเข้าไปทุกหน้า
พอเก็บข้อมูลหน้าสุดท้ายหมด ก็ดึงข้อมุลใน session มาคำนวณคับ
http://www.youtube.com/watch?v=pK72KLh1ng4
|
|
|
|
|
Date :
2014-01-28 15:44:56 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ยังสงสัยครับ ในหน้าฟอร์มนี้ผมใช้ตัวแบ่งหน้าในการเรียกคำถามมาแสดง แล้วกด next ไปข้อต่อไป แล้วผมจะส่งค่าหรือเก็บค่าของแต่ละหน้ายังไงครับ
|
|
|
|
|
Date :
2014-01-28 16:00:30 |
By :
wita |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำให้เป็นฟอร์มครับ ตรงปุ่มsubmit บอกว่า next แทนก็ได้นี่ครับ มีหลายวิธีเช่น ใส่ hidden field ไปด้วยก็ได้
<input type="hidden" name="page" value="<?php echo ($current_page + 1)"?>" />
เท่านี้อีกหน้าก็รู้ว่า เป็นหน้าสอง
|
ประวัติการแก้ไข 2014-01-28 16:09:48
|
|
|
|
Date :
2014-01-28 16:09:52 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
URL มันไม่แสดงหรอกหรอครับ?
Code (PHP)
echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'><< Back</a> ";
echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>Next>></a> ";
มันน่าจะแสดงตัวแล GET Page นะครับ
|
|
|
|
|
Date :
2014-01-28 16:11:46 |
By :
Manussawin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
URL ส่งค่าครับ แล้วคำตอบที่ถูกต้องของแต่ละหน้าอะครับ ผมต้องเก็บและส่งต่อๆไปยังไงถึงจะสามารถนำไปตรวจนับคะแนนได้ในหน้าสุดท้ายครับพี่
|
ประวัติการแก้ไข 2014-01-28 16:48:11
|
|
|
|
Date :
2014-01-28 16:47:40 |
By :
wita |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าแบบนี้ผมว่าเก็บใส่ตัวแปล session ไว้ในแต่ละหน้าครับ
Code (PHP)
//หน้า 1
$_SESSION['quiz1']; = $_POST['c1']; //เก็บคำตอบ
$_SESSION['page1'] = "ข้อ ก"; //คำตอบที่ถูกต้อง
//หน้า 2
$_SESSION['quiz2']; = $_POST['c2']; //เก็บคำตอบ
$_SESSION['page2'] = "ข้อ ง"; //คำตอบที่ถูกต้อง
พอถึงหน้าสุดท้ายก็จะได้ ตัวแปรทั้งหมดเอามาคำนวณเอาละครับ
|
|
|
|
|
Date :
2014-01-29 08:16:37 |
By :
Manussawin |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|