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['date'];
$month=$_POST['month'];
$year=$_POST['year'];
$birthdate = $year."-".$month."-".$date;
โดยที่ String ที่ได้ (จากที่ผมลองใช้ echo ดู) จะได้ประมาณนี้ครับ YYYY-mm-dd
จากนั้นผมก็เอาลงฐานข้อมูลด้วย VALUES 'date($birthdate)' แต่ก็เอาลงไม่ได้ซักที เลยสงสัยว่าผมทำผิดขั้นตอนไหนบ้างครับ
hina_lovex
27-03-2009, 05:45 PM
INSERT INTO ชื่อtable VALUES ('$birthdate 00:00:00');
คือต้องใส่ข้อมูลให้ตรงกับ format ของ MySQL ด้วยครับ เพราะ Datetime ใน MySQL เป็น format YYYY-MM-DD HH:MM:SS
ดังนั้นต้องใส่ให้ครบครับผม แล้วก็ไม่ต้องแปลงจาก String เป็น Date ด้วย Function Date()
เพราะสามารถใส่เป็น Text ได้เลย แต่ต้องให้ตรงกับ Format ของ Date ใน MySQL เท่านั้นเอง
ข้อควรระวังคือ อันไหนที่เป็น String ถ้าตัวแปรได้เป็นค่าว่าง (Null) ต้องใส่เครื่องหมาย Single Quote (') หน้าและหลังตัวแปร
แต่ถ้าเ็ป็นตัวแปรชนิดตัวเลขไม่ต้องใส่ เพราะมีผลในการ 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
ไฟล์ที่ใช้แสดงผลเก็บเป็นอาเรย์ ('A', 'B')
เวลาแสดงผลก็อ้างถึงอาเรย์ 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('/',$ymd);
if($y == 0){$y = "";}
if($m == 0){$m = "";}
if($d == 0){$d = "";}
$nd = "_d";
$nm = "_m";
$ny = "_y";
$mm = array('','ม.ค./Jan','ก.พ./Fab','มี.ค./Mar','เม.ย./Apr','พ.ค./May','มิ.ย./Jun','ก.ค./Jul','ส.ค./Aug','ก.ย./Sep','ต.ค./Oct','พ.ย./Nov','ธ.ค./Dec');
/******** 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;
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.