|
|
|
รับค่าแบบ Array แต่ต้องการให้เก็บคนละฟิลด์กัน สามารถทำได้มั้ยคะ |
|
|
|
|
|
|
|
ได้สิครับ ถ้าคุณต้องการให้ ผู้เข้าทดสอบ 1 คน เก็บข้อมูลแค่หนึ่งแถว แต่ต้องไปออกแบบฐานข้อมูลใหม่
การทำแบบนี้มันจะมีข้อจำกัดและข้อเสียเยอะมากๆ กล่าวคือ
1. แบบทดสอบคุณตายตัวแล้วว่ามีกี่ข้อ
2. ไม่สามรถเพิ่มหรือลบแบบสอบถามภายหลังได้เลย เพราะฐานข้อมุลออกแบบมารองรับ sem1 , sem2 , ... sem_n ไว้เรียบร้อยแล้ว
3. มีโอกาสเกิดข้อผิดพลาดได้สูงมากๆ
ดังนั้นทำแยกเป็น 3 ตารางดีที่สุดแล้วครับ
ตาราง1 เก็บ คำถามของสอบถาม
ตาราง 2 เก็บคำตอบของแบบสอบถามโดยมีฟิลอ้างอิงid ของตาราง 1
** สาเหตุที่แยกตารางคำตอบออกจากคำถาม คือเผื่อไว้ เพราะบางคำถามตัวเลือกอาจจะไม่เท่ากัน
ตาราง 3 เก็บข้อมูลของผู้ทำทำ โดยจะอิงคีย์หลักของตาราง 1 และตาราง 2 กล่าวคือ... ยึดคีย์ 1 เพื่อรู้ว่าคำถามข้อไหน ยึดคีย์ 2 เพื่อให้ทราบว่าคำตอบนี้คือ ช้อยอะไร
----------- เท่านี้เราก็จะรองรับปัญหาที่จะตามมาทุกรูปแบบได้แล้วครับผม ออกแบบ DB เนียนๆมีชัยไปกว่าครึ่ง - - - - - ------
|
|
|
|
|
Date :
2013-09-02 14:14:14 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าตายตัวก็สบายเลยครับ สมมุติแบบทดสอบมี 10 ข้อ ตายตัวไม่มากกว่าและน้อยกว่านี้แล้ว ออกแบบไปเลย id sam1 sam2 . . . . sam10 แต่เดี๋ยวต้องถามก่อนว่าแบบทดสอบมาทีเดียว 10 ข้อเลย หรือแบบ NEXT NEXT ทำทีละ้ข้อครับ
|
|
|
|
|
Date :
2013-09-02 15:05:51 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้คำสั่ง SQL ไปเอาข้อมาโดยกำหนดให้ข้อ 1 มีไพรมารีคีย์ คือ 1 . . ข้อ 2 ไพรมารีคีย์คือ 2 . . . . . จนข้อ 10 ไพรมารีย์คีย์คือ 10
สมมุติว่ามี 10 ข้อนะครับ
- ข้อจำกัด สามารถใช้ได้กับคำถามที่ตอบได้เพียงคำตอบเดียวเท่านั้น
Code (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>
<form id="form1" name="form1" method="post" action="">
<table width="700" border="1">
<tr>
<td width="500">ชื่อแบบทดสอบคร้าบ</td>
<td width="40">5</td>
<td width="40">4</td>
<td width="40">3</td>
<td width="40">2</td>
<td width="40">1</td>
</tr>
<?
$i=1;
while ($i<11) {
//เปิดคำสั่ง SQL โดย WHERE id(PK)='$i';
$SQL = "SELECT * FROM ass_seminar WHERE id='$i'"; // id คือคีย์หลักในตารางปรับเปลี่ยนตามความต้องการ
$dbquery= mysql_db_query($SQL);
$result=mysql_fetch_array($dbquery);
$sem_name=$result['sem_name'];
?>
<tr>
<td><?=$sem_name //คำถามที่คิวรี่มาได้?></td>
<td><input type="radio" name="radio_<?=$i?>" id="radio_<?=$i?>" value="5" /></td>
<td><input type="radio" name="radio_<?=$i?>" id="radio_<?=$i?>" value="4" /></td>
<td><input type="radio" name="radio_<?=$i?>" id="radio_<?=$i?>" value="3" /></td>
<td><input type="radio" name="radio_<?=$i?>" id="radio_<?=$i?>" value="2" /></td>
<td><input type="radio" name="radio_<?=$i?>" id="radio_<?=$i?>" value="1" /></td>
</tr>
<?
$i++;} //ปิดwhile
?>
<tr>
<td colspan="6"><input type="submit" name="button" id="button" value="Submit" /></td>
</tr>
</table>
<?
if ($_POST)
// เมื่อผู้ใช้กดบันทึก
//โค้ดเช็คค่า JAVA หรืออะไรก็ได้ ว่าตอบแบบสอบถามครบทุกข้อหรือไม่ จะมีหรือไม่ก็ได้
//เริ่มคำสั่ง insert into
{
$sam1=$_POST['radio_1'];
$sam2=$_POST['radio_2'];
$sam3=$_POST['radio_3'];
$sam4=$_POST['radio_4'];
$sam5=$_POST['radio_5'];
$sam6=$_POST['radio_6'];
$sam7=$_POST['radio_7'];
$sam8=$_POST['radio_8'];
$sam9=$_POST['radio_9'];
$sam10=$_POST['radio_10'];
$strSQL = "INSERT INTO ass_seminar_score ";
$strSQL .="(sem_1, sem_2,sem_3,sem_4,sem_5,sem_6,sem_7,sem_8,sem_9,sem_10)";
$strSQL .="VALUES";
$strSQL .="('$sem_1','$sem_2','$sem_3','$sem_4','$sem_5','$sem_6','$sem_7','$sem_8','$sem_9','$sem_10')";
}
?>
</body>
</html>
ปล. โค้ดอาจจะเกิดเออเร่อบ้างนะครับเพราะเขียนสด ยังไม่ได้เทส
|
ประวัติการแก้ไข 2013-09-02 15:57:08 2013-09-02 16:01:03
|
|
|
|
Date :
2013-09-02 15:55:08 |
By :
meannerss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|