PDA

View Full Version : มีคำถามเกี่ยวกับ MySQL ครับ



Black_Phoenix
25-03-2009, 11:21 AM
คือตอนนี้ผมกำลังทำเว็บๆนึงอยู่น่ะครับ แล้วเผอิญว่าเว็บที่ผมทำเนี่ย มันต้องแสดงอายุของสมาชิกได้ด้วย แต่เวลาสมัคร ผมอยากให้กรอกเป็นวันเกิดมากกว่า (ใช้เป็นแบบ Drop Down List) แล้วตอนแสดงอายุก็ใช้ code php แปลงเอา

เกริ่นนำมาซะนาน ผมอยากทราบว่าจะเก็บข้อมูลที่ได้จากการกรอกวันเกิดอย่างไร (ผมต้องสร้างตาราง 3 คอลัมน์แล้วเก็บเป็นชื่อ day month year หรือไม่ครับ)

ขอบคุณล่วงหน้าครับ >_< (ช่วงนี้ไม่ค่อยได้เข้ามาเล่นเลย งาน+เรียนหนักมาก T^T )

rinetd
25-03-2009, 01:18 PM
ผมเองก็ไม่ค่อยเก่งนะครับ แต่ถ้าเป็นผมใช้เก็บเป็น datetime เอาน่าจะได้นะครับส่วนพวก
การเลือกวันเกิดผมหาโหลด javascript มาใช้ แบบว่าจะขึ้นเป็นปฎิทินให้เลือกครับ

hina_lovex
25-03-2009, 01:53 PM
จริงๆ มันมีหลายวิธีมากในการเก็บอย่างที่คุณ Black_Phonix ต้องการ
1. ใช้ datetime ที่เป็น ฟิลด์เดียว ตัวหน้า web แยกเป็น 3 ช่อง แล้วใช้ PHP ต่อ String แล้ว ใส่ในช่อง datetime ครับผม
2. แยกเป็น 3 ช่อง คือ วัน,เดือน,ปี type เป็น char หรือ int ก็ได้ แล้วเก็บ แบบ 3 ช่อง ตอนแสดง ก็้ต้องเอามาต่อ String แล้ว Convert เป็น datetime

**Hidden Content: Check the thread to see hidden data.**

Black_Phoenix
25-03-2009, 05:21 PM
ขอขอบคุณท่านทั้ง 2 นะครับสำหรับความคิดเห็น แต่ตอนนี้ผมกำลังเจอศึกหนักเพราะ INSERT ข้อมูลผ่าน Form ไม่ได้ ^^"

PS.คิดว่ายังจะต้องถามอีกเยอะอยู่เหมือนกัน แต่ต่อนนี้ขอจัดการปัญหาจุดนี้ก่อนละครับ

Black_Phoenix
27-03-2009, 02:31 PM
เกิดข้อสงสัยขึ้นอีกแล้วครับ

ปัญหาคือผมเลือกข้อ 1 โดยใช้ code นี้รวม String ครับ



$date=$_POST[&#39;date&#39;];
$month=$_POST[&#39;month&#39;];
$year=$_POST[&#39;year&#39;];
$birthdate = $year."-".$month."-".$date;


โดยที่ String ที่ได้ (จากที่ผมลองใช้ echo ดู) จะได้ประมาณนี้ครับ YYYY-mm-dd

จากนั้นผมก็เอาลงฐานข้อมูลด้วย VALUES &#39;date($birthdate)&#39; แต่ก็เอาลงไม่ได้ซักที เลยสงสัยว่าผมทำผิดขั้นตอนไหนบ้างครับ

hina_lovex
27-03-2009, 05:45 PM
INSERT INTO ชื่อtable VALUES (&#39;$birthdate 00:00:00&#39;);

คือต้องใส่ข้อมูลให้ตรงกับ format ของ MySQL ด้วยครับ เพราะ Datetime ใน MySQL เป็น format YYYY-MM-DD HH:MM:SS
ดังนั้นต้องใส่ให้ครบครับผม แล้วก็ไม่ต้องแปลงจาก String เป็น Date ด้วย Function Date()

เพราะสามารถใส่เป็น Text ได้เลย แต่ต้องให้ตรงกับ Format ของ Date ใน MySQL เท่านั้นเอง

ข้อควรระวังคือ อันไหนที่เป็น String ถ้าตัวแปรได้เป็นค่าว่าง (Null) ต้องใส่เครื่องหมาย Single Quote (&#39;) หน้าและหลังตัวแปร
แต่ถ้าเ็ป็นตัวแปรชนิดตัวเลขไม่ต้องใส่ เพราะมีผลในการ INSERT ลงหรือไม่ลงด้วยครับ

Black_Phoenix
27-03-2009, 06:50 PM
ขอบคุณท่าน hinalove นะครับ ตอนนี้ Insert ข้อมูลลงได้ครบทุก field แล้วครับ แต่ยังสงสัยอยู่ (ขอรบกวนอีกนิดนะครับ ^^")

ถ้าสมมติว่าผมจัดเก็บข้อมูลเป็นตัวเลขแทน (ex. ผมที drop down menu ที่ให้เลือกเกี่ยวกับราศีที่เกิด เช่น ถ้าคนเลือก Aries ก็ให้เก็บในฐานข้อมูลเป็นเลข 1 เป็นต้น) แล้วเวลาที่ผมอยากจะเอาข้อมูลมาแสดงโดยข้อมูลที่แสดงนั้น เป็นข้อมูลตัวอักษรที่เราสื่อถึงในตอนแรก (ไม่ให้แสดงเป็นตัวเลข) จะมีหลักการทำอย่างไรครับ

Zelandiax_old
27-03-2009, 06:59 PM
ไฟล์ที่ใช้แสดงผลเก็บเป็นอาเรย์ (&#39;A&#39;, &#39;B&#39;)

เวลาแสดงผลก็อ้างถึงอาเรย์ index นั้นๆ

อาจทำ table ไว้เก็บชื่อก็ได้

hina_lovex
01-04-2009, 01:18 PM
ถ้าสมมติว่าผมจัดเก็บข้อมูลเป็นตัวเลขแทน (ex. ผมที drop down menu ที่ให้เลือกเกี่ยวกับราศีที่เกิด เช่น ถ้าคนเลือก Aries ก็ให้เก็บในฐานข้อมูลเป็นเลข 1 เป็นต้น) แล้วเวลาที่ผมอยากจะเอาข้อมูลมาแสดงโดยข้อมูลที่แสดงนั้น เป็นข้อมูลตัวอักษรที่เราสื่อถึงในตอนแรก (ไม่ให้แสดงเป็นตัวเลข) จะมีหลักการทำอย่างไรครับ

ตอบคุณ Black_Phoenix นะครับ
[hide=1]กรณีที่ถามมา ใช้ได้หลายแบบมากครับ
[code] วิธีที่ 1

nites
16-05-2009, 02:57 PM
ใช้ Type เป็น Date ก็ได้ครับ Date จะเก็บ วัน เดือน ปี เท่านั้น
เวลา Insert ก็ง่าย ใส่ตาม Format YYYY-MM-DD เลย
เวลา Query ก็สามารถใช้ function date ใน MySql ช่วยได้ง่ายขึ้น
จะ Select เฉพาะ ปี หรือ เดือน มาเลยก็ได้ เวลารับข้อมูลมาใช้ จะได้ง่ายขึ้น

มีตัวอย่าง Function php แปลง Date เป็น ComboBox ลองดูครับ

[code]
function gen_ymd($list_name,$ymd){

list($y, $m, $d) = split(&#39;/&#39;,$ymd);

if($y == 0){$y = "";}
if($m == 0){$m = "";}
if($d == 0){$d = "";}

$nd = "_d";
$nm = "_m";
$ny = "_y";
$mm = array(&#39;&#39;,&#39;ม.ค./Jan&#39;,&#39;ก.พ./Fab&#39;,&#39;มี.ค./Mar&#39;,&#39;เม.ย./Apr&#39;,&#39;พ.ค./May&#39;,&#39;มิ.ย./Jun&#39;,&#39;ก.ค./Jul&#39;,&#39;ส.ค./Aug&#39;,&#39;ก.ย./Sep&#39;,&#39;ต.ค./Oct&#39;,&#39;พ.ย./Nov&#39;,&#39;ธ.ค./Dec&#39;);

/******** Gen Date DropDown **********/
$tem = "<select name=\"$list_name$nd\">\n";
if ($d == ""){

aei_ou
13-11-2009, 12:54 PM
เก็บวันเกิดในฐานข้อมูลให้เป็นแบบ DateTime EX. 2009-01-01 1มกรา2009

พอเราเลือกวัน/เดือน/ปี จาก Drop Down List ก็จะได้ตัวแปร 3ตัวคือ year,month,day

นำตัวแปรจาก Drop Down List มา Concat กัน แล้วเก็บไว้ในตัวแปรอีกตัว

$birthday = $year."-".$month."-".$day;