php日歷插件
A. php怎樣添加JS日歷控制項
日期插件的包為:mydate.js。
1:首先將日期插件的包引入到頁面中
<scriptlanguage="javaScript"src="../Inc/Js/mydate.js"></script>
2:設置滑鼠點擊事件,當滑鼠點擊獲得焦點的時候,觸發事件,調用方法
<inputtype="text"name="starttime"onfocus="MyCalendar.SetDate(this)"value="<?phpecho$rq;?>">
<inputtype="text"name="endtime"onfocus="MyCalendar.SetDate(this)"value="<?phpecho$rq;?>">
3:完整頁面代碼
<?php
date_default_timezone_set("PRC");
$nowtime=time();
$rq=date("Y-m-d",$nowtime);
?>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<metaname="generator"content="FFKJ.Net"/>
<linkrev="MADE"href="mailto:[email protected]">
<title>在線--後台</title>
<linkrel="stylesheet"type="text/css"href="../Skins/Admin_Style.Css"/>
<scriptlanguage="JavaScript"src="../Inc/Js/mydate.js"></script>
</head>
<body>
開始時間:<inputtype="text"name="starttime"onfocus="MyCalendar.SetDate(this)"value="<?phpecho$rq;?>">
結束時間:<inputtype="text"name="endtime"onfocus="MyCalendar.SetDate(this)"value="<?phpecho$rq;?>">
</body>
</html>
B. 如何使用PHP製作一個日期的下拉菜單啊求PHP大神賜教啊
php是伺服器端語言,不管你是下拉框方式的日歷還是使用日歷插件都是html和js的事情,和php無關。
你可以直接搜索3級聯動日歷選擇代碼或者直接用jQuery的日歷插件,非常方便,官網有示例。
C. php日歷模塊的運算邏輯求解!如何求日期對應的星期幾!
現在以2010年6月14日為例說明。6月份共有30天,在這個日歷表中共5行,首先需要確定當前所在的日期(當然也可以指定一個日期),比如14日,通過表格可以知道它在第3行對應星期一那列(第3周)。通常每個月第1天不是在表格開始的位置,位置並不固定,同樣不固定的還有每個月的周數,有時候是4周,有時候是5周。這樣,想要完成這個日歷表格就需要確定一些基礎的日期變數,下面具體來看需要設定的基礎變數。
PHP提供了date()函數,該函數提供了豐富的日期處理功能。現在需要獲得的數據有兩個,第一個是當月的總天數;第二個是該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。通過date()函數可以很容易獲得上面的數據。
<?php
//date()函數的基本用法
$year = date('Y'); //獲得年份,例如2006
$month = date('n'); //獲得月份,例如04
$day = date('j'); //獲得日期,例如3
?>
通過mktime()函數和date()函數獲得當月的總天數。
//獲得當月的總天數
$daysInMonth = date("t",mktime(0,0,0,$month,1,$year));
同樣是組合使用mktime()函數和date()函數,獲得該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。
//獲得每個月的第一天,例如4
$firstDay = date("w", mktime(0,0,0,$month,1,$year));
現在重新來觀察下這個日歷表格,我們發現,表格中的值是從1到x(當月的總天數)。我們可以形象地通過一個坐標來表示每一個位置(x,y),表格的起始位置是(0,0),結束位置是(5,4),當月第一天的起始位置是(0,3)。現在來創建一個二維數組來存儲對應的日期。
(1)需要獲得表格的數目。
//計算數組中的日歷表格數
$tempDays = $firstDay + $daysInMonth;
(2)需要算出該月一共有幾周(即表格的行數)。
//獲得表格行數
$weeksInMonth = ceil($tempDays/7);
(3)在獲得行數的變數之後,創建一個二維數組用來存放日期信息,代碼如下:
<?php
for($j=0;$j<$weeksInMonth;$j++)
{
for($i=0;$i<7
;$i++)
{
$counter ++;
$week [$j] [$i] = $counter;
}
}
?>
(4)細心的讀者可能發現,上面的代碼其實是一個雛型,因為它處理出來的數據並沒有過濾那些空白的表格單元。下面來繼續改造下這段代碼,加入過濾和構造的部分。改造後的代碼如下:
<?php
//創建日期二維數組
for($j = 0; $j < $weeksInMonth; $j ++) {
for($i = 0; $i < 7; $i ++) {
$counter ++;
$week [$j] [$i] = $counter;
//日期偏移量
$week [$j] [$i] -= $firstDay;
if (($week [$j] [$i] < 1) || ($week [$j] [$i] > $daysInMonth)) {
$week [$j] [$i] = "";
}
}
}
?>
(5)在獲得正確的二維數組之後,就可以通過foreach()函數將存儲的日期信息遍歷出來,同時插入HTML標簽創建日期
不知是否正確,轉自我的一個朋友
D. php如何 獲取 my97datepicker日歷控制項提交的值!
表單提交的話。
若是get請求,$_GET['startDate'], post請求則是$_POST['startDate']
E. php行程日歷怎麼做
1 這個不是php做的這個是js效果
2 這個網上好又多的日歷插件網路搜一個「 jquery 日歷插件」
歡迎關注我的博客www.chengtao.org
F. php怎麼等到當前日期時間還可以修改
在前端html實現的時候,用時間插件做比較簡單。你也可以用js寫一段代碼:當文本框獲得焦點時文本框的值為當前的日期和時間。
G. php如何給input加上日歷的功能
用My97日期控制項吧
http://www.my97.net/dp/demo/index.htm
裡面例子很多,超級好用,什麼情況都有,收藏起來吧。
如果你要用jquery 比較漂亮的UI的
http://www.oschina.net/project/tag/278/jquery-calendar
這里要什麼有什麼
H. php在日歷上面顯示天氣預報這么顯示 我日歷代碼已經寫好在下面這么添加天氣預報
直接用中國天氣網的插件就可以
I. php日歷插件的製作方法,求思路
<?phpheader("content-type:text/html;charset=utf-8");?>
<?php?>
<tableclass="tabletable-stripedtable-hover">
<?php
//註:32位機器或者32位PHP版本可能只能計算到2038年之前的月份
//若沒有GET方法傳入參數,則使用伺服器本地當前日期;否則使用傳入的參數,方便跳轉月份
$year=date("Y");
$month=date("n");
$alert="<divclass='alertalert-warning'>輸入的日期格式有誤!</div>";
$alertYear="<divclass='alertalert-warning'>無法計算1901年以前的日歷!</div>";
if($_REQUEST){
$year=$_REQUEST["year"];
$month=$_REQUEST["month"];
}
if(!in_array($month,array("1","2","3","4","5","6","7","8","9","10","11","12"))){echo$alert;exit;}
if($year<1901){echo$alertYear;exit;}
?>
<caption><h4><?phpecho$year;?> 年 <?phpecho$month;?> 月</h4></caption>
<?php
//計算當前日期,當月天數,獲得星期數據,將默認星期天數字0改為7,方便處理循環
$today=date("j");
$days=date("t",strtotime("$year-$month-01"));
$week=date("w",strtotime("$year-$month-01"));
if($week==0){$week=7;}
?>
<tr>
<th>一</th>
<th>二</th>
<th>三</th>
<th>四</th>
<th>五</th>
<th>六</th>
<th>日</th>
</tr>
<tr>
<?php
//插入空白無日期區域,循環次數為當前月第一天的星期數-1
for($space=1;$space<$week;$space++){
echo"<td>-</td>";
}
//循環插入數據,當到達周日時換行輸出;標記當前日期為紅色
for($day=1;$day<=$days;$day++){
if(($day+$week-1)%7===0){
if($day==$today&&$year==date("Y")&&$month==date("n")){
echo"<tdstyle='background-color:pink;'>$day</td>";
echo"</tr>";
echo"<tr>";
}
echo"<td>$day</td>";
echo"</tr>";
echo"<tr>";
}else{
if($day==$today&&$year==date("Y")&&$month==date("n")){
echo"<tdstyle='background-color:pink;'>$day</td>";
}else{
echo"<td>$day</td>";
}
}
}
//尾部補足
$spacing=36-$days-$week<0?43-$days-$week:36-$days-$week;
for($footer=1;$footer<=$spacing;$footer++){
echo"<td>-</td>";
}
?>
</tr>
</table>
我以前寫的,你隨意看看~~
J. FullCalendar修改事件的時間格式
FullCalendar用日歷的形式直觀的展示了日程安排、代辦事宜等事件,那麼日歷中的事件是怎麼添加進去的呢?本文將結合實例使用PHP+Mysql+jQuery講解如何在FullCalendar中新建事件。
查看演示 下載源碼
本站之前已經推出的FullCalendar應用系列文章中,有介紹FullCalendar的基本使用,FullCalendar的選項配置API,以及FullCalendar如何讀取資料庫中的數據,本文是建立在前面幾個知識點之上的,如果您對FullCalendar還不了解,那建議您先看下本站關於FullCalendar的文章。本文除了您具備基本的html,css知識外,還需要您對PHP,MySQL以及jQuery技術有一定的基礎,對於如何連接資料庫,以及PHP和jQuery的基本函數方法的使用本文不做講解。
HTML
我們新建一個名稱為cal_opt.html的文件,然後載入必須的CSS和JS文件。
<link rel="stylesheet" type="text/css" href="css/fullcalendar.css">
<link rel="stylesheet" type="text/css" href="css/fancybox.css">
<script src='js/jquery-1.9.1.min.js'></script>
<script src='js/jquery-ui-1.10.3.custom.min.js'></script>
<script src='js/fullcalendar.min.js'></script>
<script src='js/jquery.fancybox-1.3.1.pack.js'></script>
以上文件中,jquery-ui是提供事件拖動、和日期選擇器功能,fancybox是點擊新建事件時提供彈出層功能。
接著,我們在body中加入以下代碼:
<div id="calendar"></div>
jQuery
我們調用fullCalendar日歷插件,日歷中的events事件數據源來源於json.php,在上一篇文章中我們已經講解,它是通過PHP讀取mysql數據然後生成JSON數據格式返回給fullCalendar渲染事件。
好,到這里我們關鍵的一步到來了,我們通過單擊日歷中的任意日期空白格子時,彈出一個要求輸入事件相關信息的層,通過在層中的表單輸入相關信息並提交來完成新建事件的操作。
FullCalendar提供了dayClick方法,當dayClick發生時,調用回調函數,這里首先要將fullCalendar的日期格式化處理(fullCalendar文檔中有說明),因為我們需要將日期作為參數傳給彈出層的表單。然後調用fancybox彈出層,我們使用ajax調用,調用的url是event.php,並追加參數,以下是完整代碼:
$(function() {
$('#calendar').fullCalendar({
events: 'json.php', //事件數據源
dayClick: function(date, allDay, jsEvent, view) {
var selDate =$.fullCalendar.formatDate(date,'yyyy-MM-dd');//格式化日期
$.fancybox({//調用fancybox彈出層
'type':'ajax',
'href':'event.php?action=add&date='+selDate
});
}
});
});
關於fancybox彈出層的應用,您可以參閱本站文章的相關介紹: Fancybox豐富的彈出層效果
event.php
Fancybox通過ajax調用了event.php中的內容。event.php通過獲取參數,在彈出層中展示一個新建事件的表單,內容如下:
<div class="fancy">
<h3>新建事件</h3>
<form id="add_form" action="do.php" method="post">
<input type="hidden" name="action" value="add">
<p>日程內容:<input type="text" class="input" name="event" id="event" style="width:320px"
placeholder="記錄你將要做的一件事..."></p>
<p>開始時間:<input type="text" class="input datepicker" name="startdate" id="startdate"
value="<?php echo $_GET['date'];?>">
<span id="sel_start" style="display:none"><select name="s_hour">
<option value="00">00</option>
...<!--省略多個option,下同-->
</select>:
<select name="s_minute">
<option value="00" selected>00</option>
...
</select>
</span>
</p>
<p id="p_endtime" style="display:none">結束時間:<input type="text" class="input datepicker"
name="enddate" id="enddate" value="<?php echo $_GET['date'];?>">
<span id="sel_end" style="display:none"><select name="e_hour">
<option value="00">00</option>
...
</select>:
<select name="e_minute">
<option value="00" selected>00</option>
...
</select>
</span>
</p>
<p>
<label><input type="checkbox" value="1" id="isallday" name="isallday" checked> 全天</label>
<label><input type="checkbox" value="1" id="isend" name="isend"> 結束時間</label>
</p>
<div class="sub_btn"><span class="del"><input type="button" class="btn btn_del"
id="del_event" value="刪除"></span>
<input type="submit" class="btn btn_ok" value="確定"> <input type="button"
class="btn btn_cancel" value="取消" onClick="$.fancybox.close()"></div>
</form>
</div>
在彈出層中,我們要處理幾個交互動作,一是點擊日期輸入框時調用jquery ui的datepicker日期選擇器,二是選擇「全天」和「結束時間」復選框時需要顯示與隱藏的表單控制項,最後是「確定」和「取消」按鈕的操作。
首先我們要在event.php中載入jquery ui的樣式以及ajax處理表單的插件:jquery.form.js。
<link rel="stylesheet" type="text/css" href="css/jquery-ui.css"<
<script type="text/javascript" src="js/jquery.form.min.js"></script>
接著我們來處理調用日期選擇器和選擇「全天」及「結束時間」復選框時的動作。
$(function(){
$(".datepicker").datepicker();//調用日歷選擇器
$("#isallday").click(function(){//是否是全天事件
if($("#sel_start").css("display")=="none"){
$("#sel_start,#sel_end").show();
}else{
$("#sel_start,#sel_end").hide();
}
});
$("#isend").click(function(){//是否有結束時間
if($("#p_endtime").css("display")=="none"){
$("#p_endtime").show();
}else{
$("#p_endtime").hide();
}
$.fancybox.resize();//調整高度自適應
});
});
關於日歷選擇器的使用,本站文章:日期選擇器:jquery datepicker的使用有相關介紹。而復選框勾選時,對應的表單內容進行顯示與隱藏的操作,需要大家多試試,值得一提的是在勾選「結束時間」選項時,彈出層的高度會變化,這時可以調用$.fancybox.resize()來進行自動調整高度,否則在彈出層中會出現滾動條影響視覺效果。
彈出層的最後操作時提交表單,很顯然,event.php表單代碼中的action提交到了do.php來處理的。我們調用jquery.form.js進行非同步處理,提交表單時進行表單驗證,這里的beforeSubmit調用回調函數showRequest(),然後就是提交成功後,success回調函數showResponse()。關於jquery.form.js的使用,後面筆者會在helloweba中專門講解,敬請關注。
$(function(){
//提交表單
$('#add_form').ajaxForm({
beforeSubmit: showRequest, //表單驗證
success: showResponse //成功返回
});
});
function showRequest(){
var events = $("#event").val();
if(events==''){
alert("請輸入日程內容!");
$("#event").focus();
return false;
}
}
function showResponse(responseText, statusText, xhr, $form){
if(statusText=="success"){
if(responseText==1){
$.fancybox.close();//關閉彈出層
$('#calendar').fullCalendar('refetchEvents'); //重新獲取所有事件數據
}else{
alert(responseText);
}
}else{
alert(statusText);
}
}
showResponse()根據接收狀態,獲取do.php返回的內容,如果成功(指插入數據成功),則關閉彈出層,並且通過fullcalendar的refetchEvents方法重新載入所有日歷事件(局部刷新了日歷區的內容),否則提示相關出錯信息。
do.php
do.php用來處理表單提交,包括後面會講解的修改和刪除日歷事件的操作。通過處理表單數據,然後將數據寫入MySQL數據表中,並且返回執行結果。
include_once('connect.php');//連接資料庫
$action = $_POST['action'];
if($action=='add'){
$events = stripslashes(trim($_POST['event']));//事件內容
$events=mysql_real_escape_string(strip_tags($events),$link); //過濾HTML標簽,並轉義特殊字元
$isallday = $_POST['isallday'];//是否是全天事件
$isend = $_POST['isend'];//是否有結束時間
$startdate = trim($_POST['startdate']);//開始日期
$enddate = trim($_POST['enddate']);//結束日期
$s_time = $_POST['s_hour'].':'.$_POST['s_minute'].':00';//開始時間
$e_time = $_POST['e_hour'].':'.$_POST['e_minute'].':00';//結束時間
if($isallday==1 && $isend==1){
$starttime = strtotime($startdate);
$endtime = strtotime($enddate);
}elseif($isallday==1 && $isend==""){
$starttime = strtotime($startdate);
}elseif($isallday=="" && $isend==1){
$starttime = strtotime($startdate.' '.$s_time);
$endtime = strtotime($enddate.' '.$e_time);
}else{
$starttime = strtotime($startdate.' '.$s_time);
}
$colors = array("#360","#f30","#06c");
$key = array_rand($colors);
$color = $colors[$key];
$isallday = $isallday?1:0;
$query = mysql_query("insert into `calendar` (`title`,`starttime`,`endtime`,`allday`,`color`)
values ('$events','$starttime','$endtime','$isallday','$color')");
if(mysql_insert_id()>0){
echo '1';
}else{
echo '寫入失敗!';
}
}