ปฏิทินกิจกรรม ผมต้องการเขียนปฏิทินกิจกรรมให้มีการ Query ข้อมูลใน DB มาแสดงในตารางปฏิทินนะครับ...
ผมต้องการเขียนปฏิทินกิจกรรมให้มีการ Query ข้อมูลใน DB มาแสดงในตารางปฏิทินนะครับ....แต่ไม่เก่งพอที่จะสร้างออกมาได้....ซึ่งตาราง Db นั้น ผมก็สร้างมาดังโค๊ดด้านล่างนี้นะครับ...ส่วนโค๊ดปฏิทินนั้นก็อยู่ด้านล่าง แต่เป็นโค๊ดปฏิทินธรรมดา...
ผมต้องการให้โค๊ดปฏิทินด้านล่างของผมนั้นสามารถเป็นปฏิทินกิจกรรมได้นะครับ...ต้องเขียนหรือปรับเปลี่ยนโค๊ดยังไงบ้างครับ
========> ตารางใน Mysql <==============
# Table structure for table 'mycalendar'
#
CREATE TABLE mycalendar (
calendar_ID int(6)
unsigned NOT NULL auto_increment,
start date NOT NULL default '0000-00-00',
end date NOT NULL default '0000-00-00',
title text NOT NULL,
service varchar(30) NOT NULL default '',
description text NOT NULL,
PRIMARY KEY (calendar_ID)
) TYPE=MyISAM;
#
# Dumping data for table 'mycalendar'
========>ไฟล์ calendar_test.php<==============
####หมายเหตุ ผมต้องการใช้ไฟล์นี้ดึงกิจกรรมใน db มาแสดง#######
<?
/* $diffHour และ $diffMinute คือตัวแปรที่ใช้เก็บจำนวนชั่วโมงและจำนวนนาทีที่
แตกต่างกันระหว่างเครื่องไคลเอนต์กับเครื่องเซิร์ฟเวอร์ ตามลำดับ เช่นถ้าเวลาของ
เครื่องไคลเอ็นต์เร็วกว่าเวลาของเครื่องเซิร์ฟเวอร์ 11 ชั่วโมง 15 นาที ก็ให้กำหนด
$diffHour เป็น 11 และกำหนด $diffMinute เป็น 15 ในที่นี้ผู้เขียนถือว่า
เครื่องเซิร์ฟเวอร์กับเครื่องไคลเอ็นต์มีเวลาตรงกัน */
$diffHour = 0;
$diffMinute = 0;
if($dfMonth == ""){
/* ถ้าไม่มีการระบุให้แสดงปฏิทินของเดือนใดเดือนหนึ่ง เราจะแสดงปฏิทินของเดือน
ปัจจุบันตามเวลาในเครื่องไคลเอ็นต์ โดยใช้ฟังก์ชั่น getdate() สร้างวันที่/เวลา
ปัจจุบันของเครื่องไคลเอ็นต์เก็บไว้ในตัวแปร $calTime ซึ่งฟังก์ชั่นนี้จะคืนค่ากลับมา
เป็นอาร์เรย์ */
$calTime = getdate(date(mktime(date("H") + $diffHour,date("i") + $diffMinute)));
$today = $calTime["mday"]; //วันที่
$month = $calTime["mon"]; //เดือน
$year = $calTime["year"]; //ปี
}else{
/* กรณีที่ระบุให้แสดงปฏิทินของเดือน/ปีหนึ่งๆนั้น จะมีการส่งตัวแปร $today, $dfMonth และ $dfYear ผ่านมาทาง query string ด้วย */
if($dfMonth == 0){
/* ถ้าตัวแปร $dfMonth เป็น 0 เราจะแสดงปฏิทินของเดือนธันวาคมของปีที่น้อยกว่าปีที่กำลังแสดงอยู่ */
$dfMonth = 12;
$dfYear = $dfYear - 1;
}else if($dfMonth == 13){
// ถ้าตัวแปร $dfMonth เป็น 13 เราจะแสดงปฏิทินของเดือนมกราคมของปีที่มากกว่าปีที่กำลังแสดงอยู่
$dfMonth = 1;
$dfYear = $dfYear + 1;
}
// สร้างวัน/เวลาของเดือนและปีที่ผู้ใช้ระบุ เก็บไว้ในตัวแปร $calTime
$calTime = getdate(date(mktime((date("H") + $diffHour),(date("i") + $diffMinute), 0, $dfMonth, $today, $dfYear)));
$today = $calTime["mday"]; //วันที่
$month = $calTime["mon"]; //เดือน
$year = $calTime["year"]; //ปี
}
// เรียกฟังก์ชั่น LastDay() ซึ่งเป็นฟังก์ชั่นที่เราสร้างขึ้นมาเองเพื่อหา "จำนวนวัน" ของเดือนและปีที่จะแสดงปฏิทินโดยเก็บไว้ในตัวแปร $Lday
$Lday = LastDay($month, $year);
// เก็บ timestamp ของวันที่ 1 ของเดือนที่จะแสดงปฏิทิน ไว้ในตัวแปร $FTime
$FTime = getdate(date(mktime(0, 0, 0, $month, 1, $year)));
// เก็บ "วันในสัปดาห์" (จันทร์, อังคาร ฯลฯ) ของวันที่ 1 ของเดือนไว้ในตัวแปร $wday
$wday = $FTime["wday"];
// สร้างตัวแปรชนิดอาร์เรย์เก็บชื่อเดือนภาษาไทย
$thmonthname = array("มกราคม", "กุมภาพันธ์", "มีนาคม", "เมษายน", "พฤษภาคม", "มิถุนายน", "กรกฎาคม", "สิงหาคม", "กันยายน", "ตุลาคม", "พฤศจิกายน", "ธันวาคม");
// ฟังก์ชั่น LastDay() ใช้สำหรับหาวันที่สุดท้ายของเดือน/ปีที่ระบุหรือกล่าวอีกนัยหนึ่งคือหาว่าเดือน/ปีที่ระบุนั้นมีกี่วัน
function LastDay($m, $y){
for($i=29; $i<=32; $i++){
if(checkdate($m, $i, $y) == 0){
return $i - 1;
}
}
}
?>
<table width="100%" border="1" cellpadding="0" cellspacing="1">
<tr>
<td width="10%" align="center"><a href="<?=$PHP_SELF?>?today=<?=$today?>&dfMonth=<?=($month - 1)?>&dfYear=<?=$year?>"><</a></td>
<td width="80%" align="center" colspan="5" bgcolor="#F9F4DD"><?=$thmonthname[$month - 1]?> <?=($year + 543)?></td>
<td width="10%" align="center"><a href="<?=$PHP_SELF?>?today=<?=$today?>&dfMonth=<?=($month + 1)?>&dfYear=<?=$year?>">></a></td>
<tr>
<tr bgcolor="#FFCCCC">
<td align="center">อา</td>
<td align="center">จ</td>
<td align="center">อ</td>
<td align="center">พ</td>
<td align="center">พฤ</td>
<td align="center">ศ</td>
<td align="center">ส</td>
</tr>
<?
$sql = "SELECT start,end FROM mycalendar";
$result = mysql_db_query($dbname, $sql) or die(mysql_error());
$row = mysql_fetch_array($result);
// เอาวันเริ่มและสิ้นสุดมาเก็บใน array เพื่อใช้ในการเปรียบเทียบ
$st=array();
$ed=array();
$i=0;
do{
$st[$i]=$row["start"];
$ed[$i]=$row["end"];
$i++;
}while($row = mysql_fetch_array($result));
for($i=0;$i<count($st);$i++){
$ed[$i]=substr($ed[$i],0,4).substr($ed[$i],5,2).substr($ed[$i],8,2);
$st[$i]=substr($st[$i],0,4).substr($st[$i],5,2).substr($st[$i],8,2);
}
$iday = 1;
// แสดงแถวแรกของปฏิทิน
for($i=0; $i<=6; $i++){
// แสดงเซลล์ว่างก่อนวันที่ 1 ของเดือน
if($i < $wday){
// กรณีที่เป็นวันอาทิตย์
if($i == 0){
echo "<tr>\n";
echo "<td align=\"center\" class=\"sunday\"> </td>\n";
}else{
// กรณีที่เป็นวันอื่นๆที่ไม่ใช่วันอาทิตย์
echo "<td align=\"center\" class=\"norm\"> </td>\n";
}
}else{
// แสดงวันที่ในแถวแรกของปฏิทิน
if($i == 0 && ($iday != $today)){
// กรณีที่เป็นวันอาทิตย์ และไม่ใช่วันปัจจุบัน
echo "<td align=\"center\" class=\"sunday\">$iday</td>\n";
}else if($iday == $today){
// กรณีที่เป็นวันปัจจุบัน
echo "<td align=\"center\" class=\"today\">$iday</td>\n";
}else{
echo "<td align=\"center\" class=\"norm\">$iday</td>\n";
}
$iday++;
}
}
echo "</tr>\n";
// แสดงแถวที่เหลือของปฏิทิน (หลังจากแสดงแถวแรกไปแล้ว จะเหลืออย่างมาก 5 แถว)
for($j=0; $j<=4; $j++){
if($iday <= $Lday){
echo "<tr>\n";
for($i=0; $i<=6; $i++){
if($iday <= $Lday){
if($i == 0 && ($iday != $today)){
echo "<td align=\"center\" class=\"sunday\">$iday</td>\n";
}else if($i == 0 && ($iday == $today)){
echo "<td align=\"center\" class=\"today\">$iday</td>\n";
}else if($iday == $today){
echo "<td align=\"center\" class=\"today\">$iday</td>\n";
}else{
echo "<td align=\"center\" class=\"norm\">$iday</td>\n";
}
$iday++;
}else{
echo "<td align=\"center\" class=\"norm\"> </td>\n";
}
}
echo "</tr>\n";
}
}
?>
<tr>
<td align="center" colspan="7"><a href="<?=$PHP_SELF?>">วันที่ปัจจุบัน</a></td>
</tr>
</table>
Tag : - - - -
Date :
25 ก.พ. 2550 09:22:21
By :
com1com
View :
2870
Reply :
2
อยากได้เหมือนกานค่ะแต่เป็นการจองห้องนะคะ
Date :
2010-01-10 22:59:38
By :
ton
แจกฟรี ปฏิทินกิจกรรม PHP กับฐานข้อมูล MySQL Database เอาไปใช้กันแบบฟรี !!
Date :
2013-04-05 10:43:19
By :
tc
Load balance : Server 04