เรื่องของวันที่ มักจะเป็นปัญหาที่จะกวนใจอยู่เสมอ ๆ โดยเฉพาะมือใหม่การเขียนโปรแกรม หรือ การพัฒนาเว็บไซต์ด้วย PHP ร่วมกับฐานข้อมูล Mysql นั้น
รูปแบบวันที่จะเป็นแบบ ค.ศ. (คริสตศักราช) คือ ปี-เดือน-วัน เช่น 2011-11-10 เป็นต้น
การเก็บข้อมูลก็ต้องทำให้ถูกต้องตามรูปแบบของเขาด้วยนะครับ
ซึ่งมักจะมีปัญหาเกี่ยวกับ การแสดงผล เช่น เก็บเป็น ค.ศ. แต่เวลาแสดงผลต้องการแสดงผลเป็น พ.ศ. (รูปแบบวันที่ของไทยเรา)
แต่วันนี้จะมาแนะนำเทคนิคการทำวันที่แบบ List ให้ผู้ใช้เลือก โดยใช่ Select Control เริ่มเลยละกัน
ทำ List วัน โดยใช้ for loop สร้าง เริ่มจาก 1 ถึง 31
<select name='sD1' id='sD1'>
<?
for($i=1;$i<=31;$i++){
$i2=sprintf("%02d",$i); // ฟอร์แมตรูปแบบให้เป็น 00
echo '<option value="'.$i2.'">'.$i2.'</option>';
}?>
</select>
สร้าง List เดือน เิริ่มจาก 1-12
<select name='sM1' id='sM1'>
<?
for($i=1;$i<=12;$i++){
$i2=sprintf("%02d",$i);
echo '<option value="'.$i2.'">'.$i2.'</option>';
}?>
</select>
*** ตรง $i2 (สีน้ำเงินนั้น) หากต้องการแสดงชื่อเดือนแบบไทย ก็สามารถทำได้นะครับ
แต่มันจะใช้ for loop สร้างไม่ได้ ต้องเขียนขึ้นมาเอง เช่น
<select name='sM1' id='sM1'>
<option value="01">มกราคม</option>
<option value="02">กุมภาพันธ์</option>
<option value="03">มีนาคม</option>
...................
</select>
สร้าง List ปี ตัวอย่างนี้คือ ต้องการให้เลือกย้อนหลังได้ 3 ปี
<select name='sY1' id='sY1'>
<?
$xYear=date('Y'); // เก็บค่าปีปัจจุบันไว้ในตัวแปร
echo '<option value="'.($xYear).'">'.($xYear).'</option>'; // ปีปัจจุบัน
echo '<option value="'.($xYear-1).'">'.($xYear-1).'</option>'; // ย้อนหลังไป 1 ปี
echo '<option value="'.($xYear-2).'">'.($xYear-2).'</option>'; // ย้อนหลังไป 2 ปี
echo '<option value="'.($xYear-3).'">'.($xYear-3).'</option>'; // ย้อนหลังไป 3 ปี
?>
</select>
*** หากต้องการปีย้อนหลังมากกว่านี้ก็สามารถใช้ for loop ช่วยได้เช่นกันนะครับ เช่น
<select name='sY1' id='sY1'>
<?
$xYear=date('Y'); // เก็บค่าปีปัจจุบันไว้ในตัวแปร
echo '<option value="'.$xYear.'">'.$xYear.'</option>'; // ปีปัจจุบัน
for($i=1;$i<=10;$i++){
echo '<option value="'.($xYear-$i).'">'.($xYear-$i).'</option>';
}
?>
</select>
*** ก็จะได้ List ปีแบบ ค.ศ. ย้อนหลัง 10 ปี หากต้องการมากกว่านี้ก็สามารถเปลี่ยนได้ตามใจชอบนะครับ
คำถามหรือปัญหาต่อมาก็คือ แล้วเวลาจะนำไปใช้หล่ะจะทำยังไง
ก่อน Insert หรือ Update ค่าลงในฐานข้อมูล เราก็ต้องเอาตัวแปร วัน เดือน ปี มารวมกันในรูปแบบของปี ค.ศ. ก่อนครับ เช่น
$Date_In=$sY1."-".sM1."-".$sD1;
จากนั้นก็เอาตัวแปร $Date_In; ไปใช้งานต่อแล้วแต่ว่าจะเอาไปทำอะไร