簡體   English   中英

javascript 和 php 飛行日歷

[英]javascript and php on the fly calendar

我有 javascript 日歷的代碼,它在頁面加載時創建它時完美運行。 但是我想知道是否可以向其中添加事件。 我找到了一個插件(jQuery),它使用戶能夠在帶有 class “事件”的 td 上使用 hover,並且將顯示一個事件。 因此,由於這個日歷不會被我使用,而是被其他對開發一無所知的人使用,我想知道是否有辦法制作 php 文件或上傳或其他東西,以便她可以上傳活動。 I mean, let's say she wants an event on the 3rd then she uploads a file php reads it and tells javascript to add the class "event" that date and jQuery does the rest. 可能嗎? 我什至不知道該怎么做,我真的希望我自己解釋一下。 這是我的 javascript 順便說一句。

function buildCal(){
    var d = new Date();
    var month = d.getMonth()+1;
    var year = d.getFullYear();
    var monthName=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
    var daysInMonth=[31,0,31,30,31,30,31,31,30,31,30,31];

    var objectDay = new Date(year, month-1, 1); //fix date bug when current day is 31st
    objectDay.od=objectDay.getDay()+1; //fix date bug when current day is 31st

    var todaydate=new Date() 
    var scanfortoday=(year==todaydate.getFullYear() && month==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added

    daysInMonth[1]=(((objectDay.getFullYear()%100!=0)&&(objectDay.getFullYear()%4==0))||(objectDay.getFullYear()%400==0))?29:28;

    var t='<div class="main"><table class="main" cols="7" cellpadding="0" border="0" cellspacing="0">';
    t+='<h3 class="monthCSS" align="center">'+monthName[month-1]+' - '+year+'</h3><tr align="center">';


    for(s=0;s<7;s++)t+='<td class="daysofweek">'+"DoLuMaMiJuViSa".substr(s*2,2)+'</td>';

    t+='</tr><tr align="center">';
    for(i=2;i<=42;i++){
        var x=((i-objectDay.od>=0)&&(i-objectDay.od<daysInMonth[month-1]))? i-objectDay.od+1 : '&nbsp;';
            if (x==scanfortoday)
                x='<td class="today">'+x+'</td>'
            t+='<td class="days">'+x+'</td>';
        if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
    }
    return t+='</tr></table></div>';
}

正如您在此處看到的,它會添加空格,直到到達實際日期。 我試圖讓它檢查 if(x is not a number) 然后添加一個 td class="padding" 但是為此我試圖使用 x.match(/[0-9]+/) 但它沒有t 似乎有效,這也是我第一次嘗試將正則表達式與 javascript 一起使用,有人知道為什么錯了嗎? 或者如何實際檢查它?


編輯

這個腳本發生了一些奇怪的事情,我不知道為什么,我試圖改變

t+='<td class="days">'+x+'</td>';

t+='<td class="days' + x +'">'+x+'</td>';

這個,所以我可以 select 每個 td,但是當我這樣做時,會生成一個新的 td,其中包含

<td id="days&lt;td class=" today="">1</td>

我不知道為什么會發生這種情況,我只知道它弄亂了代碼,因為之后我得到一個 "> 打印(因為這個新 td 引起的引號不匹配......為什么會這樣?

我創建的日歷系統使用了當月的完整 php 數組。 這樣您就可以對其進行迭代,並且對於每個相應的空白日期表單元格,該天都有一個空白數組。

例如

$calendar_dates = array(
              [week_1] = array(
                     [sun] = Null
                     [mon] = NULL
                     [tue] = array(
                            [events] = array(
                                    event_id => 'event name'
                                    event_name => ''
                                    event_time => ''
                             )
                     [wed]
                     ...
                 )
              [week_1] => array()
              ...........
  )

我通過從指定的日期和當前周創建一個數組來構建天數數組

然后我點擊數據庫以獲取該范圍內的事件

然后循環瀏覽事件並將它們附加到日歷數組。

像魅力一樣工作。

要讓它與 javascript 一起工作,只需讓它在控制日歷日的打開和關閉的 html 文件的頭部中回顯一些特定的 javascript。

為您的客戶提供一個簡單的登錄頁面,以在 Web 表單中輸入/編輯事件。

聽起來您想將事件數據從服務器推送到包含日歷的網頁。 雖然這是可能的,但這很困難,而且通常不值得付出努力。 您最好在日歷中構建一些 AJAX 並每隔 5 或 10 分鍾左右輪詢服務器以獲取事件更新。 這將在新事件上傳和它們顯示在日歷上之間引入一些延遲,但會更容易開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM