ขอคำแนะนำ เกี่ยวกับ ปฏิทินการแสดงรายวัน
ขอคำแนะนำ เกี่ยวกับ ปฏิทินการแสดงรายวัน คือผมยากให้พี่ๆ ช่วยสอนทำปฏิทินให้แสดงเป็นรายวันอ่ะครับไม่รู้จะเขียนยังไงครับ เกี่ยวกับ php อ่ะครับ รูปแบบเป็นงี้ครับ
---------------------------------
| <<| 01/12/2010 |>>|
---------------------------------
| |
| แสดงข้อความ |
---------------------------------
แบบว่าคลิกที่ << หรือ>> มันจะเปลี้ยนไปอีกวันอ่ะครับ
ไม่รู้จะเขียนโค๊ต php คำนวนยังไงช่วยแนะนำหน่อยน่ะครับ ขอบคุณครับ
---------------------------------
| <<| 01/12/2010 |>>|
---------------------------------
| |
| แสดงข้อความ |
---------------------------------
แบบว่าคลิกที่ << หรือ>> มันจะเปลี้ยนไปอีกวันอ่ะครับ
ไม่รู้จะเขียนโค๊ต php คำนวนยังไงช่วยแนะนำหน่อยน่ะครับ ขอบคุณครับ
ใน widget ที่ชื่อ calendar
ลองคิวรี่ออกมาแสดงผลเฉพาะวันที่ปัจจุบันดูก่อน
จากนั้นลองดูว่าไอ้ปุ่มที่เอาไว้เลื่อนน่ะมันมีโค้ดยังไง
โดยปกติแล้วมันจะคิวรี่เดือนออกมา เปลี่ยนให้มันคิวรี่วันแทน
น่าจะตรงกับความต้องการแล้ว(มั้ง)
ผมมีโค๊ตแบบนี้จะเอาไปทำไงให้มันได้เหมือนข้างบนอ่ะ แสดงเป็นรายวันอ่ะครับ ช่วยหน่อยน่ะ ขอบคุณครับ
<?php
function findWeekDates($weekNumber=null, $year=null ) {
// ให้ จำนวนสัปดาห์ของปีนั้นออกมาเป็นจำนวน array (0 ถึง 52)
// ถ้าไม่ใช่สัปดาห์ มันจะส่งค่าสัปดาห์ ของวันที่นั้น ๆ
$weekNumber = ($weekNumber=='') ? date('W'): $weekNumber ;
$year = ($year=='') ? date('Y'): $year ;
$weekNumber=sprintf("%02d", $weekNumber);
for ($i=0;$i<=6;$i++) {
$arrdays[] = strtotime($year.'W'.$weekNumber.$i);
}
return $arrdays;
}
$week= (isset($_GET['week']) && $_GET['week'] !=='')? $_GET['week'] : date('W') ;
$year = (isset($_GET['year']) && $_GET['year'] !=='')? $_GET['year'] : date('Y') ;
if($week>52) {
$week = 1;
$year++;
}elseif($week<1) {
$week=52;
$year--;
}
$backyear=$year;
$nextyear=$year;
$week_days = findWeekDates($_GET['week'],$_GET['year']);
echo"<br>";
$nextweek = $week+1; // หาสัปดาห์ถัดไป
$backweek=$week-1; // หาสัปดาห์ก่อนหน้า
if($backweek==0){
$backweek=52;
$backyear=$year-1;
}
if($nextweek==0){
$nextyear=$year+1;
}
//echo"<a href=\"?week=".$backweek."&year=".$backyear."\">ย้อนกลับ</a& gt; <a href=\"?week=".$nextweek."&year=".$nextyear."\">ถัดไป</a& gt;<br>";
//echo "<p><center><b>ปฏิทินรายสัปดาห์</b></center></p>";
echo'<table width="90%" border="1" align="center">';
echo'<tr>';
echo'<td width="20%" bgcolor="#CCCCFF" align="center">';
echo "<a href=\"?week=".$backweek."&year=".$backyear."\">ย้อนกลับ</a></td>";
echo'<td width="20%" bgcolor="#CCCCFF" align="center">';
echo "<a href=\"?week=".$nextweek."&year=".$nextyear."\">ถัดไป</a><br></td>";
echo'</tr>';
echo'<tr>';
echo'<td width="20%" bgcolor="#CCCCFF" align="center">วันที่</td>';
echo'</tr>';
for($i=0;$i<count($week_days);$i++){
//echo"$week_days";
echo'<tr>';
$t=date('d/m/Y',$week_days[$i]); //หาค่าวันที่
echo "<td>";
echo "$t";
echo "</td>";
echo "<td colspan='2'>";
}
echo "</td>";
for($j=0;$j<count($arr);$j++){
echo'<td> </td>';
}
echo'</tr>';
echo'</table>';
?>
ลองเก็บวันในรูปแอเรย์ดูสิครับ
$days = array(0, 31, isLeapYear($year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
แล้วใช้ if เพิ่ือเปรียบเทียบหา วันที่ ก่อนหน้า และ วันที่ถัดไป
31 คือ มกราคม มี 31 วัน รายการต่อไป ก็ลองเดาดูนะครับ
ปกติแล้ว วันก่อนหน้า ก็คือ วันปัจจุบัน - 1 ถ้าวันถัดไป ก็คือ วันปัจจุบัน + 1
ปัญหาจริงๆ ก็คือ ถ้าวันปัจจุบัน เป็นวันสุดท้ายของเดือน นั่นเป็นสิ่งที่เราต้องตรวจสอบ เพราะ วันถัดไปควรเป็น วันที่ 1 ของเดือนถัดไป
ซึ่งเราสามารถใช้ if ในการตรวจสอบได้ครับ แค่ต้องออกแบบเท่านั้นครับ
คงต้องลองประยุกต์ดูนะครับ ใช้เทคนิคง่ายๆก็พอ ถึงจะเขียนยาวหน่อยก็ไม่เป็นไรครับ