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 : 099908



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

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

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



สวัสดีค่ะพี่ๆ มีเรื่องรบกวนอีกแล้วค่ะ

คือทำแบบประเมินอยู่ค่ะ แล้วก็รับค่าแบบ Array แต่ต้องการให้เก็บคนละฟิลด์กัน สามารถทำได้มั้ยคะ


Code (PHP)
        <?
		$i=0;
			$result = mysql_query("SELECT * FROM ass_seminar");
			while($rs = mysql_fetch_array($result)){ 
		?>
			<tr>
                <td> &nbsp;&nbsp;&nbsp;<?=$rs['sem_name']?></td>
                <td align="center"> <input type="radio" name="radio_<?php echo $i?>" value="5"> </td>
				<td align="center"> <input type="radio" name="radio_<?php echo $i?>" value="4"> </td>
				<td align="center"> <input type="radio" name="radio_<?php echo $i?>" value="3"> </td>
				<td align="center"> <input type="radio" name="radio_<?php echo $i?>" value="2"> </td>
				<td align="center"> <input type="radio" name="radio_<?php echo $i?>" value="1"> </td>
            </tr>
		<?   $i++;
			}
		?>



สมมตว่ามีคำถาม 3 ข้อ ต้องการให้เก็บในฟิลด์ sem1 , sem2 , sem3 ตามลำดับค่ะ
ที่ทำอยู่ตอนนี้คือ เก็บในฟิลด์เดียว แต่เก็บเป็นแถวลงมา

ฝากดูให้ด้วยนะคะ ขอบคุณมากๆค่ะ


Code (PHP)
$Max = $_POST['Max'];
$Choice = array();
for ($i=0; $i <= $Max; $i++) { 
	array_push($Choice,$_POST['radio_'.$i]);

$strSQL = "INSERT INTO ass_seminar_score ";
			$strSQL .="(sem_1)";
			$strSQL .="VALUES";
			$strSQL .="('".$_POST['radio_'.$i]."') ";
        	$objQuery = mysql_query($strSQL);
}





Tag : PHP









ประวัติการแก้ไข
2013-09-02 12:58:39
2013-09-02 12:59:13
2013-09-02 13:08:43
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-09-02 12:42:55 By : gosling View : 1804 Reply : 7
 

 

No. 1



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



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


ได้สิครับ ถ้าคุณต้องการให้ ผู้เข้าทดสอบ 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
 


 

No. 2



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



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

Quote:
สมมตว่ามีคำถาม 3 ข้อ ต้องการให้เก็บในฟิลด์ sem1 , sem2 , sem3 ตามลำดับ


ฟังดูแปลกๆนะครับ แสดงว่าเรคอร์ดของแบบฟอร์มนี้ต้องมีอยู่แล้ว
น่าจะใช้การอัพเดตมากกว่านะครับ

หรือถ้ายังไม่มี คำสั่งแรกก็ต้องเป็น INSERT
ส่วนของสองฟิลด์ที่เหลือ ก็ต้องใช้ UPDATE


หรือถ้าบันทึกไปเลยก็กำหนดไปเลยว่าไอดีไหนลงฟิลด์ไหน
$strSQL = "INSERT INTO ass_seminar_score ";
			$strSQL .="(sem_1, sem_2, sem_3)";
			$strSQL .="VALUES";
			$strSQL .="('".$_POST['radio_1']."', '".$_POST['radio_2']."', '".$_POST['radio_3']."') ";


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-02 14:15:22 By : {Cyberman}
 

 

No. 3



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

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

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

ตอบความคิดเห็นที่ : 1 เขียนโดย : meannerss เมื่อวันที่ 2013-09-02 14:14:14
รายละเอียดของการตอบ ::
ในฐานข้อมูลจะกำหนดไว้แล้วค่ะว่ามีกี่ข้อ ไม่สามารถเพิ่มได้ แต่แก้ไขได้
เป็นแบบประเมินค่ะ เก็บระดับคะแนน 5, 4, 3, 2, 1 ไม่ใช่แบบสอบถามที่ต้องเก็บคำตอบ

ที่ออกแบบไว้คือ
ตารางที่ 1 เก็บเฉพาะคำถาม ซึ่งกำหนดไว้แล้วว่ามีกี่ข้อ
ตารางที่ 2 เก็บค่าที่ได้ในแต่ละข้อ และก็เก็บ id ของผู้ประเมิน

คิดว่าแบบนี้มันถูกต้องมั้ยคะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-02 14:40:27 By : gosling
 


 

No. 4



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

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

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

ตอบความคิดเห็นที่ : 2 เขียนโดย : {Cyberman} เมื่อวันที่ 2013-09-02 14:15:22
รายละเอียดของการตอบ ::
ทำตามโค้ดที่แนะนำมา แต่ทำไมมันเก็บมาให้ 3 แถว แบบนี้

db
เก็บแยกฟิลด์แล้ว ต้องการให้เก็บแค่แถวเดียวค่ะ ต้องทำยังไงคะ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-02 14:44:25 By : gosling
 


 

No. 5



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



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


ถ้าตายตัวก็สบายเลยครับ สมมุติแบบทดสอบมี 10 ข้อ ตายตัวไม่มากกว่าและน้อยกว่านี้แล้ว ออกแบบไปเลย id sam1 sam2 . . . . sam10 แต่เดี๋ยวต้องถามก่อนว่าแบบทดสอบมาทีเดียว 10 ข้อเลย หรือแบบ NEXT NEXT ทำทีละ้ข้อครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-02 15:05:51 By : meannerss
 


 

No. 6



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

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

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

ตอบความคิดเห็นที่ : 5 เขียนโดย : meannerss เมื่อวันที่ 2013-09-02 15:05:51
รายละเอียดของการตอบ ::
แบบสอบถามแสดงผลหน้าเดียวเลยค่ะ

form

ตอนนี้มันเก็บค่าให้ 3 แถว ต้องการให้เก็บแค่แถวเดียวค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-09-02 15:20:56 By : gosling
 


 

No. 7



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



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


ใช้คำสั่ง 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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
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 05
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 อัตราราคา คลิกที่นี่