Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > สอบถามเรื่อง Array ในสคริปตัวอย่างขอสอบออนไลน์ครับ



 

สอบถามเรื่อง Array ในสคริปตัวอย่างขอสอบออนไลน์ครับ

 



Topic : 109552



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์




สวัสดีครับ
อยากสอบถามเกี่ยวกับการเขียนข้อสอบดังตัวอย่างครับ
ผมได้สคริปมาจากที่นี่ครับ http://www.thongjoon.com/2013/04/php_7.html
ก็มีประสบการณ์เขียน php mysql น้อยมาก
ตอนนี้นำข้อสอบใส่ database และดึงออกมาพร้อมเฉลยได้ แต่ว่าในส่วนของ เฉลย ที่จะเอามาเก็บใน array ผมทำไม่เป็นครับ
รบกวนผู้รู้ช่วยชี้แนะด้วยนะครับ ในตัวอย่างเป็นการระบุ array ลงไปเลย แต่ผมต้องการดึงค่าเฉลยจาก database มาเก็บแทนครับ
ผมแนบสคริปมาให้ช่วยดูครับ ขอบคุณมากครับ

ผมอาจจะโพสต์ไม่ถูกต้อง หรือผิดพลาดประการใดต้องขออภัยด้วยนะครับ
น้องใหม่ครับ


รูปโครงสร้าง database
โครงสร้าง database
----------------------------------------------------------

filequestion.php
-------------------------------------------------------------

<!doctype html>
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>แบบทดสอบออนไลน์</title>
</head>
<body>
<div>
<H1>ชุดที่ 1/2014<br>แบบทดสอบชุดนี้มีทั้งหมด 42 ข้อ</H1>
<form id="form" method="POST" action="checkit.php">
<p>ชื่อของผู้เข้าสอบ
<input type="text" name="usrName"></p>
<p>หมายเลขประจำตัว
<input type="text" name="usrCode"></p>
<p>อีเมล์
<input type="text" name="usrEmail"></p><br><br>

<?php
$con=mysqli_connect("localhost","root","","mytestonline");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"SET NAMES UTF8");
$result = mysqli_query($con,"SELECT * FROM testing ORDER BY rand()");
?>
<?php
$no=1;
while($row = mysqli_fetch_array($result)) {
echo "<div class=\"starttest\">";
echo"<span class=\"hanswer\">". $no."&nbsp;".$row['question']."</span>";
echo "<br>";
echo "<input class=\"_normal\" type=\"radio\" value=\"1\" name=\"question".$row['id']."\">".$row['c1'];
echo "<br>";
echo "<input class=\"_normal\" type=\"radio\" value=\"2\" name=\"question".$row['id']."\">".$row['c2'];
echo "<br>";
echo "<input class=\"_normal\" type=\"radio\" value=\"3\" name=\"question".$row['id']."\">".$row['c3'];
echo "<br>";
echo "<input class=\"_normal\" type=\"radio\" value=\"4\" name=\"question".$row['id']."\">".$row['c4'];
echo "</div><br>";
echo "<span class=\"hbanswer\">เฉลย&nbsp;</span>". $row['answer'];
echo "<br>";
echo "<span class=\"hbanswer\">คำอธิบาย&nbsp;</span>".$row['des_answer'];
echo "</div><br><br>";
$no++;
}
?>
<?php
$subjectName = "แบบทดสอบออนไลน์ โดย อ.สมศักดิ์";
//เฉลยข้อที่ถูก -- ไม่จำกัดจำนวนข้อ
//ตรงนี้ครับ ที่ต้องการให้เป็นการดึงค่าเฉลยมาใส่แทนครับ
$correctAns=array("1","2","1","1","2","1");
//--------------
//เกณฑ์การผ่านขั้นต่ำ
$cutpoint = 60;

?>

<?php
foreach($correctAns as $value)
{
echo '<input type="hidden" name="result[]" value="'. $value. '">';
}
echo "<input type = hidden name = \"subjName\" value='$subjectName'>";
echo "<input type = hidden name = \"cpoint\" value=$cutpoint>";
?>

<h2>กรุณาตรวจทานเพื่อให้แน่ใจอีกครั้งก่อนส่งข้อสอบ</h2><br><br>
<input type="submit" value="ส่งข้อมูล" name="ok">
<INPUT TYPE="RESET" VALUE="ยกเลิก">
</FORM>

</div>
</body>
</html>
----------------------------------------------------------------------------------------------


ส่วนไฟล์เช็คคำตอบ
เป็นแบบนี้ครับ ผมไม่ได้แก้อะไร ซึ่งก็ใช้ได้ ตรวจได้ครับ
แต่เวลาทำไม่ครบข้อ มันขึ้นข้อความเตือน ไม่อยากให้ขึ้นเลยครับทำไม่เป็นอันนี้

checkit.php
---------------------------------------------

<?php
$thisUserName = trim($_POST["usrName"]);
$thisUserMail = trim($_POST["usrMail"]);
$thisUserCode = trim($_POST["usrCode"]);

$subjName = $_POST["subjName"];
$cutpoint = $_POST["cpoint"];
$correctAns = $_POST["result"]; // $correctAns เป็น Array ประกอบด้วย คำตอบที่ถูก ที่ส่งมาจากตัวข้อสอบ
$numOfQstns = sizeof($correctAns);
$score = 0;
// รับคำตอบ
for ($i=1; $i<=$numOfQstns; $i++)
{
$stAns[$i-1] = trim($_POST["question" . $i]);
}
// ตรวจคำตอบ
for ($i=0; $i<=($numOfQstns-1); $i++)
{
$correct = $correctAns[$i];
$stAnswer = $stAns[$i];
if($stAnswer == $correct) {
$score++;
};
};
$percentage = number_format($score/$numOfQstns*100, 2, '.', '');
echo "ชื่อผู้ทำข้อสอบ: $thisUserName<br>";
echo "อีเมล์: $thisUserMail<br>";
echo "โทรศัพท์: $thisUserCode<br>";
echo "ข้อสอบวิชา: $subjName <br>";
echo"ทำข้อสอบได้ทั้งหมด: $score ข้อ คิดเป็นร้อยละ $percentage <br>";
echo "<br><br><b>ผลการสอบ</b>";
if($percentage >=$cutpoint) {
echo "<br> ผ่าน";
}else{
echo "<br><span style=\"color: #f00;\"> ท่านไม่ผ่านเกณฑ์ $cutpoint %</span><p><input type=\"button\" value=\"ทำข้อสอบใหม่\" onClick=\"history.go(-1)\">";
echo "<p><a href=\"ans.php\" alt\"ดาวน์โหลด\">ดาวน์โหลดไฟล์ข้อสอบพร้อมเฉลย</a></p>";
}
?>



Tag : PHP, MySQL









ประวัติการแก้ไข
2014-06-28 18:28:44
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-06-28 18:24:34 By : tungtiew View : 1695 Reply : 3
 

 

No. 1



โพสกระทู้ ( 1,439 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

$correctAns=array("1","2","1","1","2","1");
แก้เป็น
$correctAns[$row['id']]=$row[['answer'];

หมายถึงแบบนี้เปล่าครับ

ถ้าเวลาแสดงก็

for($correctAns as $id=>$ans){
echo " id=$id , answer=$ans"; // ประยุกต์ตามความต้องการเองได้เลยครับ
}






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-29 00:41:00 By : xbeginner01
 


 

No. 2



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากนะครับคุณ xbeginner01 ที่กรุณาตอบให้ ผมลองเอาไปใช้แล้ว ใช้ได้ครับ
แต่ตรงนี้มันฟ้อง error
for($correctAns as $id=>$ans){
echo " id=$id , answer=$ans"; // ประยุกต์ตามความต้องการเองได้เลยครับ
}

////////////////////////////
Parse error: syntax error, unexpected 'as' (T_AS), expecting ';' in C:\www\htdocs\test-cpa\register.php on line 64
//////////////////////////////

ไม่ทราบว่าคืออะไรครับและต้องแก้ไขอย่างไร ถึงจะ view ได้

ขอรบกวนสอบถามเพิ่มเติมอีกเรื่องนะครับว่า
ในหน้า checkit.php ถ้าหากเราต้องการให้แสดงคำถามและคำตอบของ user จากหน้าแรกเหมือนเป็นการสรุปในหน้านี้ด้วย
ว่า user ทำผิดข้อไหน จะต้องเขียนเพิ่มแบบไหนครับ

อย่างไรก็ขอขอบคุณมากนะครับ
ถ้าหากว่าติดขัดเรื่องใดอีกคงต้องรบกวนพื้นที่ในนี้อีกครับ


ประวัติการแก้ไข
2014-07-04 12:51:51
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-04 12:48:36 By : tungtiew
 

 

No. 3



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


for($correctAns as $id=>$ans){

แก้เป็น

foreach($correctAns as $id=>$ans){
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-07-04 13:03:00 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามเรื่อง Array ในสคริปตัวอย่างขอสอบออนไลน์ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่