|
|
|
ขอความช่วยเหลือนิดนึงครับเกี่ยวกับ ปฏิทิน รบกวนดู Code ด้านใน |
|
|
|
|
|
|
|
ปัญหามันคือ ตอนแรกที่ผมเขียนเสร็จ วัน-เดือน-ปี มันก็Run ถูกต้อง กดเลื่อน ไปข้างหน้าหรือข้างหลังกี่เดือนๆมันก็ถูกต้อง
แต่ว่าถ้าเกิดวันที่ปัจจุบันเป็นวันที่ 30 หรือวันที่ 31 (หรือถ้าหากเป็นเดือนกุมภาพันธ์ ก็จะเป็นวันที่ 28 หรือ 29)
ลองตั้งวันที่เครื่องให้เป็นวันที 31 มกราคม ปี 2555 ก็ได้ครับแล้วลอง Run Code ดู
ถ้าเกิดวันที่ปัจจุบันเป็นวันที่ที่ผมกล่าวไปข้างต้น ชื่อเดือนที่แสดง ตรงหัวตาราง กับ วันที่สุดท้ายของเดือนซึ่งปกติมันเป็นวันที่ 30ในเดือนที่ลงท้ายด้วย "ยน" และ เป็นวันที่ 31 ในเดือนที่ลงท้ายด้วย "คม" มันกลับกลายเป็นทุกๆเดือนจะมี 31วัน (แต่ว่าตำแหน่งวันที่ของทุกๆเดือนยังตรงอยู่นะครับ)
สรุปคือ ถ้าวันที่ปัจจุบันเป็นวันที่ สุดท้าย หรือรองสุดท้ายของเดือน Code มันให้ผลออกมาคือชื่อเดือนที่แสดงตรงหัวตารางไม่ตรง และ ทุกๆเดือนจะมี 31 วัน (แต่ตำแหน่งวันของทุกๆเดือนยังตรงอยู่)
ผมหามา3-4 วันแล้ว แต่แก้ไม่ได้ ขอความช่วยเหลือผมนิดนึงครับ
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>EON-GROUP Report System ตาราง Install</title>
<link rel="stylesheet" type="text/css" href="../css/body_bg.css" />
<script>
function goLastMonth(month,year) {
if (month == 1) {
--year
month = 13;
}
document.location.href = "<?php $_SERVER['PHP_SELF']; ?>?month="+(month-1)+"&year="+year;
}
function goNextMonth(month,year) {
if (month == 12) {
++year
month = 0;
}
document.location.href = "<?php $_SERVER['PHP_SELF']; ?>?month="+(month+1)+"&year="+year;
}
</script>
</head>
<body>
<p>
<?php
if (isset($_GET['day'])) {
$day = $_GET['day'];
$day = substr("0".$_GET['day'],-2,2);
//echo $day;
}else{
$day = date("d"); //ตัวอย่างใช้ $day = date("j")
}
if (isset($_GET['month'])) {
$month = $_GET['month'];
$month = substr("0".$_GET['month'],-2,2); //ใส่เพื่อให้แสดงเป็นเลข 2 หลัก เช่น 01 02
//echo $month;
}else {
$month = date("m"); // ตัวอย่างใช้ $month = date("n")
}
if (isset($_GET['year'])) {
$year = $_GET['year'];
}else {
$year = date("Y"); // ตัวอย่างใช้ $year = date("Y")
}
// $day = date("d"); //เอาค่าวันปัจจุบันใส่ $day
// $month = date("F"); //เอาค่าเดือนปัจจุบันใส่ $month
// $year = date("Y"); //เอาค่าปีปัจจุบันใส่ $year
// $thai_year = $year+543;
$currentTimeStamp = strtotime("$year-$month-$day"); //เอาค่าที่ได้จากข้างต้นมาเปลี่ยนเป็นรูปแบบวันเวลา เช่น 2012-01-10
$monthName = date("m", $currentTimeStamp); // เอาค่าชื่อเดือนปัจจุบันใส่ $month
$numDays = date("t", $currentTimeStamp); // เอาค่าจำนวนวันในแต่ละเดือนใส่ $numDays
$counter = 0; // ตัวแปรใช้สำหรับนับวัน
// echo "จำนวนวันในเดือนนี้ ". $numDays."<br>";
//echo "ตัวแปร month คือ {$month} <br> ตัวแปร year คือ {$year}";
/*อธิบาย-----------
$currentTimeStamp = strtotime("$year-$month-$day");
เป็นคำสั่งเปลี่ยนค่าในตัวแปร $year $month $day ให้เป็นค่า timestamp
$monthName = date ("F", $currentTimeStamp);
เป็นคำสั่งเอาชื่อเดือนนั้นๆมาใส่ในตัวแปรชื่อ $monthName "F" เป็นการแสดงชื่อเดือนภาษาอังกฤษแบบเต็ม
$numDays = date("t", $currentTimeStamp);
เป็นคำสั่งหาจำนวนวันในเดือนนั้นๆมาใส่ในตัวแปร $numDays
$count = 0;
เป็นการ Set ค่า ตัวแปร count เพื่อนับจำนวนช่องตาราง
----------------*/
?>
</p>
<p> </p>
</p>
<font size="1">
<table width="1345" border="1" cellspacing="0" cellpadding="0" align="center" >
<tr>
<td width="190" align="left"><input name="previous" style="width:190px" type="button" value="< Previous" onclick="goLastMonth(<?php echo $month.",".$year ; ?>)"></td>
<td colspan="5" align="center" bgcolor="#7B9EBD"><font color="white" size="3"><?php echo $monthName.", ".$year; ?></font></td>
<td width="190" align="right"><input name="previous" style="width:190px"type="button" value="Next >" onclick="goNextMonth(<?php echo $month.",".$year ; ?>)"></td>
</tr>
<tr>
<td width="190" bgcolor="#FF9D9D">Sun</td>
<td width="190" bgcolor="#FFFFCC">Mon</td>
<td width="190" bgcolor="#FFCCFF">Tue</td>
<td width="190" bgcolor="#C1FFC1">Wed</td>
<td width="190" bgcolor="#FFD2A6">Thu</td>
<td width="189" bgcolor="#AEC9E3">Fri</td>
<td width="190" bgcolor="#DDBBFF">Sat</td>
</tr>
<?php
echo "<tr>";
for ($i = 1; $i <$numDays+1; $i++, $counter++) { //--- loop ทำแถวใหม่ (row) สำหรับวันในเดือน
$timeStamp = strtotime("$year-$month-$i"); //--- เก็บค่า timestamp ของแต่ละวันใน loop
if ($i == 1) { //---เงื่อนไข หากเป็นวันที่ 1
$firstDay = date("w", $timeStamp); //เอา
//--- loop ทำที่ว่าง ถ้าหากไม่ใช่วันแรก ---
for ($j = 0; $j < $firstDay; $j++, $counter++) {
//ที่ว่าง
echo "<td> </td>";
}
}
if ($counter %7 == 0) { //เงื่อนไข หากตัวนับมีค่าเป็น 7 ให้ขึ้นบรรทัดใหม่ (ก็คือใน 1 แถวแนวนอน จะมี 7 ช่อง ก็คือ 7 วัน)
echo "</tr><tr>";
}
$i = substr("0".$i,-2,2); //ใส่เพื่ิอให้แสดงวันเป็น เลข 2 หลัก เช่น 01 02
?><td align='right' height='100' width="190" valign='top' style="max-width:190" ><?php echo $i; ?>
<?php
}
echo "</tr>";
?>
</table>
</font>
</body>
</html>
Tag : PHP
|
ประวัติการแก้ไข 2012-01-31 11:47:42
|
|
|
|
|
Date :
2012-01-31 11:34:33 |
By :
pantatonic |
View :
1237 |
Reply :
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ช่วยหน่อยนะครับ
|
|
|
|
|
Date :
2012-01-31 13:37:36 |
By :
pantatonic |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|