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,038

HOME > PHP > PHP Forum > Checkbox แบบ Array กับการ ออกแบบฐานข้อมูลใน mysql ด้วย ภาษา php



 

Checkbox แบบ Array กับการ ออกแบบฐานข้อมูลใน mysql ด้วย ภาษา php

 



Topic : 069940

Guest




ถ้าเรามี check box ให้ User เลือก ซึ่งให้เลือกได้มากกว่า หนึ่งอัน คือสงสัยว่า user แต่ละคนก็จะเลือกไม่เหมือนกัน แต่เราบังคับว่าต้องเลือก คำถามคือ แต่ละคนจะเลือกในจำนวนที่ไม่เท่ากัน อาจจะเลือกแค่ หนึ่ง สอง หรือสาม แล้ว check box ตัวนี้ เช่น

เราต้องการเก็บข้อมูล ว่า

ชื่ออาหาร
ชนิด เราออกแบบให้เป็น check box
ราคา
....

ในตารางฐานข้อมูลตรง field checkbox จะเก็บยังไงดีค่ะ คือให้เลือกได้ไม่เกินสาม แต่ก็หมายความว่าเค้าจะเลือกแค่ หนึ่ง หรือ สองก็ได้ หรืออาจจะเป็นสาม ถ้าออกแบบ ฟิลด์ไว้ 3 คอลัมน์ ถ้า user เลือกแค่สอง เราก็จะมีค่าว่า ไปหนึ่งฟิลด์ ควรจะออกแบบยังไงดีค่ะ ใน check box เป็น array นะค่ะ

คือก็จะคล้ายๆ กับเว็บบอร์ดที่นี่อะค่ะ แต่ว่าเราไม่อยากเก็บเป็น text file ต้องการเก็บไว้ในฐานข้อมูล รบกวนหน่อยนะค่ะ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-12-06 10:08:50 By : มือใหม่หัดขับ View : 7364 Reply : 22
 

 

No. 1



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

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

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

สามอัน น่าจะใส่ชื่อเอาเลยก็ได้คับ ไม่เยอะ ใส่ อาเรย์ งงป่าวๆ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 10:24:38 By : pjgunner.com
 


 

No. 2

Guest


คือเรามีให้เลือกทั้งหมด ยี่สิบอัน เราจะไม่ทราบว่า user จะเลือกอันไหนบ้าง กำลังคิดอยู่ว่าถ้าเราออกแบบไว้สามคอลัมน์ บาง user ก็อาจจะใช้สาม บาง User ก็อาจจะใช่หนึ่ง อีกสองคอลัมน์ก็จะว่าง กลัวเปลื้องพื้นที่ในฐานข้อมูล รบกวนขอความคิดเห็นหน่อยนะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 10:39:17 By : มือใหม่หัดขับ
 

 

No. 3



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



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


สวัสดีครับ....

การออกแแบบฐานข้อมูลที่ดีคือการออกแบบให้เก็บข้อมูลที่เพียงพอต่อการนำไปใช้ โดยไม่ซ้ำซ้อนกันจนเกินความจำเป็น
จากโจทย์ที่ให้มา สามารถทำได้สองวิธีก็คือ

1. สร้างฟิลดิ์ตามจำนวน checkbox เลย ถ้าค่าไหนผู้ใช้ไม่ได้เลือกก็ให้ว่างหรือเซต default ไว้เลย ข้อดีก็คือเข้าใจได้ง่าย และง่ายต่อการเขียนโปรแกรมและรายงาน
แต่.. เนื่องจาก จขกท ใช้ array เพื่อเก็บข้อมูลจาก checkbox ซึ่งก็ไม่มีปัญหาอะไร และเป็นการฝึกการใช้ array ไปด้วย (ถ้าฟิลดิ์ไม่เยอะหรือไม่ dynamic อาจจะไม่ต้องใช้ array ก็ได้ครับ) ตรงนี้ขึ้นอยู่กับเทคนิคของแต่ละคน

2. สร้างฟิลดิ์เดียวเพื่อเก็บค่าจาก checkbox เลย ซึ่งอาจจะเก็บให้อยู่ในรูปของ text ธรรมดาแล้วใช้เครื่องหมายคั่น value แต่ละตัวเอาไว้ เนื่องจากเป็น array อยู่แล้วเพราะฉะนั้นตอน insert ก็ง่ายหน่อย แต่สำคัญก็คือการนำออกมาใช้งาน เพราะเมื่อ query ออกมาแล้วก็ต้องแยก value แต่ละตัวออกมาก่อน
ปัญหาคือ value แต่ละตัว ที่แยกออกมาจะใช้อะไรเป็นตัวที่จะบอกว่าเป็น value ของอะไร (ตรงนี้ก็มีวิธีจัดการครับ แต่อาจจะซับซ้อนหน่อย แต่ไม่มีปัญหา) เนื่องจาก value ที่ออกมาอาจจะมีจำนวนไม่เท่ากัน และอาจจะไม่เรียงลำดับด้วยซ้ำ (ในกรณีที่ไม่ได้เรียงไว้ตอนเก็บ) ทำให้เวลานำออกมาใช้งานอาจจะต้องเขียนฟังก์ชั่นขึ้นมาแยก value โดยเฉพาะ (ยากขึ้นมากกว่าวิธีแรกนิดหน่อย)

ถ้าเป็นระบบที่ต้องการความรวดเร็วในการพัฒนา และเป็นเพียงจุดเล็กๆในการเขียนโปรแกรม ซึ่งในอนาคตก็อาจจะมี checkbox แบบนี้อีก ผมมองว่าใช้วิธีแรกก็พอครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 10:40:41 By : Songkram
 


 

No. 4



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

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

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

เก็บลงในฟิวด์เดียวครับ โดยเก็บในรุปแบบ comma (,) ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 10:42:25 By : webmaster
 


 

No. 5

Guest


พอจะมีตัวอย่างไมค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 10:49:09 By : มือใหม่หัดขับ
 


 

No. 6



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

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

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

ถ้ามีมากขนาดนั้น หรืออาจมีตัวเลือกจำนวนเพิ่มขึ้นในอนาคต
1. Serialized Array
2. JSON

ถ้าหากไม่ได้จอยหรือเก็บค่าสำคัญ ที่ช่วยในการใช้งานฐานข้อมูล
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 10:54:41 By : pjgunner.com
 


 

No. 7



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

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

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


ลองใส่ลงฟิวล์เดียวเหมือนที่พี่ วิน บอก ครับ

แล้วใช้คำสั่ง serialize ก่อนเก็บลงฐานข้อมูล

Code (PHP)
<?php if(empty($_POST)){ ?>
<u>SELECT FIELD</u> <br />
<form id="form1" name="form1" method="post" action="">
  <input type="checkbox" name="test[]" id="test_1" value="id|ID" />ID<br />
  <input type="checkbox" name="test[]" id="test_2" value="name|NAME" />NAME<br />
  <input type="checkbox" name="test[]" id="test_3" value="phone|PHONE" />PHONE<br />
  <input type="checkbox" name="test[]" id="test_4" value="email|EMAIL"  />EMAIL<br />
  <input type="checkbox" name="test[]" id="test_5" value="address|ADDRESS" />ADDRESS<br />
  <input type="submit" name="button" id="button" value="Submit" />
</form>
<?php }else{ 
	
	echo serialize($_POST['test']);

}?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 11:00:38 By : ไวยวิทย์
 


 

No. 8

Guest


มีตัวอย่างไมค่ะ อย่างเช่น คุณวิน ถ้าเกิดให้เก็บแล้ว ใส่เป็น (,) มีตัวอย่างไมค่ะ แล้วใช้ฐานข้อมูลเราต้องเลือก type เป็น enum หรือยังไงค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 11:01:59 By : มือใหม่หัดขับ
 


 

No. 9



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

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

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

Code (PHP)
$choices = array(
	'abc' => 1,
	'bcd' => 0,
	'def' => 1,
	);

$str2db = serialize($choices);
//ดึง
$choices = unserialize($str2db);

// แบบ json
$json = json_encode($choices);
// ดึง
$choices = json_decode($json, true);



http://www.pjgunner.com


ประวัติการแก้ไข
2011-12-06 11:07:02
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 11:06:10 By : pjgunner.com
 


 

No. 10

Guest


$str2db = serialize($chk);
$sql = "insert into table( post_name,advertype_id,category_name,post_message,post_email,post_phone,post_address,post_country,post_city,post_zip,post_date) values ('$_POST[txtPost]','$_POST[Advertisingtype]','$str2db')";


ข้อมูลที่ echo ออกมา ตรง ที่เป็น array มันโชว์

'a:1:{i:0;s:6:"wanted";}' งงค่ะ ตัวอย่างนี้เราเลือกแค่ checkbox อันเดียว ว่า wanted ตรง Insert เราใส่ รูปแบบอะไรผิดหรือป่าวอะ


อันนี้พอเลือก สามอัน echo ออกมามันโชว์

'a:2:{i:0;s:6:"events";i:1;s:3:"pet";}' อันนี้เราเลือกสอง checkbox เป็น event กับ pet


รบกวนหน่อยนะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 12:00:07 By : มือใหม่หัดขับ
 


 

No. 11



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

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

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

เวลาใช้งานต้อง unserialize() ก่อนคับ จะได้ อาเรย์ เหมือนตอนใส่ลงไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 12:03:27 By : pjgunner.com
 


 

No. 12

Guest


ลองทำแล้วดึงออกมาจากฐานข้อมูลไม่ได้ค่ะ งง

<?=$result unserialize["category_name"]; ?> ผิดรูปแบบหรือป่าวค่ะ มี error


Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\AppServ\www\viewpost.php on line 79
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 14:01:25 By : มือใหม่หัดขับ
 


 

No. 13

Guest


ลองใส่แบบนี้ <?= unserialize($result["category_name"]); ?>

สิ่งที่ โชว์ออกมาคือคำว่า Array
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 14:04:57 By : มือใหม่หัดขับ
 


 

No. 14

Guest


ช่วยด้วยค๊าบบบบบบ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 14:56:52 By : มือใหม่หัดขับ
 


 

No. 15



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

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

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

เป็นอาเรย์ก็ใช้แบบอาเรย์คับ

print_r(array('a', 'b', 'c'));

$arr = array('a', 'b', 'c');
echo $arr[0];
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-06 15:06:03 By : pjgunner.com
 


 

No. 16

Guest


งง ไม่เข้าใจอะค่ะ

คือดึงฐานข้อมูลออกมาโชว์นะค่ะ แต่ตอนเก็บเข้าไปมันเป็น 'a:2:{i:0;s:6:"events";i:1;s:3:"pet";}'

$str2db = serialize($chk);
$sql = "insert into table( post_name,advertype_id,category_name,post_message,post_email,post_phone,post_address,post_country,post_city,post_zip,post_date) values ('$_POST[txtPost]','$_POST[Advertisingtype]','$str2db')";


สิ่งที่เข้าไปในฟิลด์นั้นคือ 'a:2:{i:0;s:6:"events";i:1;s:3:"pet";}'

ตอนดึงออกมา เราใช้

$result=select("postadvertising","where 1=1 and post_id='".$_GET["post_id"]."'");

<?= unserialize($result["category_name"]); ?> ตรงหน้า browser ฟิลด์นี้ มันโชว์คำว่า Array

ไม่เข้าใจรูปแบบที่คุณ เอี่ยวส่งมาค่ะ งง มือใหม่ค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 02:53:48 By : มือใหม่หัดขับ
 


 

No. 17



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



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


query หรือยังครับ ?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 04:09:07 By : yamcrocodile
 


 

No. 18



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



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


Code (PHP)
<?
$result=select("postadvertising","where 1=1 and post_id='".$_GET["post_id"]."'");
$query  = mysql_query($result);

echo unserialize($query["category_name"]);
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 04:13:18 By : yamcrocodile
 


 

No. 19

Guest


<? echo unserialize($result["category_name"]); ?

เหมือนเดิมค่ะ ออกมา เป็น Array

filed อื่นขอมูลออกมาปกติ ยกเว้น ฟิลด์ category_name
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 09:31:54 By : มือใหม่หัดขับ
 


 

No. 20



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

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

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

ก็มันเป็น array นี่คับคุณไปใช้แบบ string ได้อย่างไร
$arr = unserialize($query["category_name"]);

print_r($arr);
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 10:16:54 By : pjgunner.com
 


 

No. 21

Guest


คือ มือใหม่จริงๆ นะค่ะ

<? $arr= unserialize($result["category_name"]);
print_r($arr);
?>

ผลที่ออกมา

Type : Array ( [0] => wanted [1] => parttime )

หรือปัญหามันอยู่ที่ตอนเราเก็บค่ะ

คือมือใหม่จริงๆ นะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 11:53:21 By : มือใหม่หัดขับ
 


 

No. 22



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

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

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

ผมว่าควรศึกษาพื้นฐาน ตัวแปร ชนิดตัวแปร ต่างๆ ก่อนคับ


ถ้าเป็นแบบนี้ คุณก็ไม่สามารถทำอะไรได้ เพราะคุณไม่เข้าใจพื้นฐาน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-07 11:58:53 By : pjgunner.com
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Checkbox แบบ Array กับการ ออกแบบฐานข้อมูลใน mysql ด้วย ภาษา php
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่