registerFunction('getMemo'); // 註冊回應函式  $xajax->processRequest(); // 處理回應 //---------------------------------------------------------------------- // 滑鼠停在有備忘錄的日期時, 用戶端即會呼叫此函式 // 函式會到資料庫查詢指定日期的備忘錄, 並傳回給用戶端 function getMemo($date_str) { include('../Ch12/Ch12db.inc.php'); // 引用資料庫設定檔 // 設定以參數 $date_str 為日期條件的查詢字串, 並執行查詢 $query = 'SELECT memo FROM todoList WHERE sdate =' . $mdb2->quote($date_str); $res =& $mdb2->query($query); // 執行查詢 if (PEAR::isError($res)) // 若查詢發生錯誤 $memo = '查詢發生錯誤:' . $res->getMessage(); else { // 若查詢未發生錯誤 $memo = $res->fetchOne(); // 取出備忘錄資料 $memo = htmlspecialchars($memo); // 轉換為適合顯示於網頁的形式 } $objResponse = new xajaxResponse(); if (!empty($memo)) { // 若備忘錄不是空字串 $objResponse->assign($date_str, // 將備忘錄 'innerHTML', // 指定給 id=指定日期的 nl2br($memo)); // 標籤之 innerHTML 屬性 $objResponse->assign($date_str, // 將該標籤 'style.width', // 的寬度樣式 '10em'); // 設為 10em } return $objResponse; } ?> 簡易行事曆 printJavascript('..'); // 輸出用戶端程式碼 ?> 12 || $_GET['m']<1)) $_GET['m']=$now['mon']; //---------------------------------------------------------------------- // 由 GET 參數建立月物件 $month = new Calendar_Month_Weekdays($_GET['y'],$_GET['m']); // 建立去年和明年的連結字串 $prevYear = buildURL($month->prevYear(),$month->thisMonth()); $nextYear = buildURL($month->nextYear(),$month->thisMonth()); ?> quote($_GET['y']), $mdb2->quote($_GET['m'])); $res =& $mdb2->query($query); // 執行查詢 if (PEAR::isError($res)) die('查詢發生錯誤:' . $res->getMessage()); $rows = $res->fetchAll(); if (PEAR::isError($rows)) die('存取資料失敗:' . $rows->getMessage()); // 以迴圈將查詢結果中的日期建立成 Calendar_Day 物件 // 並將之加到 $selected 陣列當成特殊日期陣列 foreach($rows as $date) $selected[] = new Calendar_Day($_GET['y'], $_GET['m'] , $date[0] ); // 以含備忘錄的日期為特殊日期, 建立本月的日期子物件 $month->build($selected); // 以下迴圈負責輸出表格中的日曆內容 while ( $day = $month->fetch() ) { $date_str = $day->thisYear() . '-' . $day->thisMonth() . '-' . $day->thisDay(); if ( $day->isFirst() ) // 若是該週第1天 echo ( "\n" ); // 則輸出 , 開始新的1列 if ( $day->isEmpty() ) // 若為空白日期 echo ( "\n" ); // 輸出空白 else { if($day->isSelected()) // 若為特殊日期 echo '\n"; } if ( $day->isLast() ) // 若是該週最後1天 echo ( "\n" ); // 則輸出 結束此列 } ?>
 thisYear(); // 輸出目前年份 ?> 
prevYear() $prevMonth = buildURL($month->thisMonth()==1?$month->prevYear(): $month->thisYear(), $month->prevMonth()); // 同理, 當月份為 12 時, 下個月的連結需指向次年的 1 月 // 所以第 1 個參數需用 $month->nextYear() $nextMonth = buildURL($month->thisMonth()==12?$month->nextYear(): $month->thisYear(), $month->nextMonth()); ?> thisMonth()-1]; ?>
 '; // 則替標籤設定類別 else echo ''; // 否則只輸出 // 將日期設為會呼叫 JavaScript 函式 popUp()的連結 // 並以年月日字串 $date_str 當呼叫的參數 // 用 onmouseover 屬性設定當滑鼠移上來時, // 即以年月日字串為參數呼叫 xajax_getMemo() echo "" . // 在 標籤中加入
區塊 // 其中使用 thisXXX() 取得年月日數值 // 當成呼叫 JavaScript 函式 popUp() 的參數 "" . $day->thisDay() . "

滑鼠停在日期上即可瀏覽當天行事備忘錄,按日期則可進行編輯。