A-AA+then

ขอคำแนะนำ เกี่ยวกับ ปฏิทินการแสดงรายวัน

1,175
ขอคำแนะนำ เกี่ยวกับ ปฏิทินการแสดงรายวัน   คือผมยากให้พี่ๆ ช่วยสอนทำปฏิทินให้แสดงเป็นรายวันอ่ะครับไม่รู้จะเขียนยังไงครับ เกี่ยวกับ php อ่ะครับ รูปแบบเป็นงี้ครับ
---------------------------------
| <<| 01/12/2010 |>>|
---------------------------------
|                               |
|    แสดงข้อความ          |
---------------------------------

แบบว่าคลิกที่ << หรือ>> มันจะเปลี้ยนไปอีกวันอ่ะครับ  

ไม่รู้จะเขียนโค๊ต php คำนวนยังไงช่วยแนะนำหน่อยน่ะครับ ขอบคุณครับ

7 ความคิดเห็น

ลองโหลด GCMS ไปลองดู
ใน widget ที่ชื่อ calendar
ลองคิวรี่ออกมาแสดงผลเฉพาะวันที่ปัจจุบันดูก่อน
จากนั้นลองดูว่าไอ้ปุ่มที่เอาไว้เลื่อนน่ะมันมีโค้ดยังไง
โดยปกติแล้วมันจะคิวรี่เดือนออกมา เปลี่ยนให้มันคิวรี่วันแทน
น่าจะตรงกับความต้องการแล้ว(มั้ง)




1

2

คำถามเหมือนกันเลย ผมเขียนสัปดาห์ได้แต่เขียนรายวันไม่ได้ ไม่รู้จะวนลูปยังไง
ผมมีโค๊ตแบบนี้จะเอาไปทำไงให้มันได้เหมือนข้างบนอ่ะ แสดงเป็นรายวันอ่ะครับ ช่วยหน่อยน่ะ ขอบคุณครับ

 <?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;&nbsp;<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>
&nbsp;</td>';
      
    }
    echo'</tr>';

echo'</table>';
?>
3

เอาแนวคิดไปนะ

ลองเก็บวันในรูปแอเรย์ดูสิครับ

$days = array(0, 31, isLeapYear($year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

แล้วใช้ if เพิ่ือเปรียบเทียบหา วันที่ ก่อนหน้า และ วันที่ถัดไป

 
4

0,31  เราต้องเก็บเป็น 1,2,3,4,5,6, ไปถึง31 เรอครับ งง
5

$days หมายถึง จำนวนวันใน 1 เดือน ครับ รายการแรกที่เป็น 0 เพราะ array เริ่มต้นที่ 0 ซึ่งไม่มีเดือน 0

31 คือ มกราคม มี 31 วัน รายการต่อไป ก็ลองเดาดูนะครับ

ปกติแล้ว วันก่อนหน้า ก็คือ วันปัจจุบัน - 1 ถ้าวันถัดไป ก็คือ วันปัจจุบัน + 1

ปัญหาจริงๆ ก็คือ ถ้าวันปัจจุบัน เป็นวันสุดท้ายของเดือน นั่นเป็นสิ่งที่เราต้องตรวจสอบ เพราะ วันถัดไปควรเป็น วันที่ 1 ของเดือนถัดไป

ซึ่งเราสามารถใช้ if ในการตรวจสอบได้ครับ แค่ต้องออกแบบเท่านั้นครับ

คงต้องลองประยุกต์ดูนะครับ ใช้เทคนิคง่ายๆก็พอ ถึงจะเขียนยาวหน่อยก็ไม่เป็นไรครับ 
6

ขอบคุณครับพี่ชาย
7
^