2009-04-01 2 views
0

나는 자바 스크립트 달력을위한 코드를 가지고 있으며 페이지가로드 될 때 완벽하게 작동합니다. 그러나 이벤트를 추가 할 수 있는지 궁금합니다. 사용자가 클래스 "이벤트"와 함께 td 위로 마우스를 가져갈 수있는 플러그인 (jQuery)을 발견하고 이벤트가 표시됩니다. 그래서이 캘린더가 나에게 사용되지는 않을 것이기 때문에 개발에 관해 전혀 모르는 다른 사람이 PHP 파일을 만들거나 업로드 할 수있는 방법이 있는지 궁금해서 그 이벤트를 업로드 할 수 있습니다. 내 말은, 그녀가 3 일에 이벤트를 원한다고 말하면, PHP가 파일을 업로드하고 javascript에 날짜와 jQuery가 나머지를 수행하는 클래스 "이벤트"를 추가하도록 알려줍니다. 가능한가? 나는 그것을하는 방법을 알아낼조차 수 없다. 그리고 나는 정말로 나 자신을 설명하기를 바란다. 내 자바 스크립트는 여기에있다.javascript 및 PHP on the fly 캘린더

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>'; 
} 

여기서 볼 수 있듯이 실제 날짜가 될 때까지 빈 공간이 추가됩니다. 나는 (x가 숫자가 아니 었는지) 확인한 다음, td class = "padding"을 추가하지만 x.match (/ [0-9] + /)를 사용하려고했지만 이렇게하지 않았다. T는 작동하는 것처럼 보입니다. 그리고 자바 스크립트로 정규 표현식을 사용하려고 시도하는 것은 처음 일 것입니다. 또는 실제로 그것을 확인하는 방법?


편집

뭔가 이상한이 스크립트로 발생하고, 내가

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

이에

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

에서 변경하려고하는 이유 나도 몰라 , 그래서 각 td를 선택할 수 있었지만, 이렇게하면 새로운 td가 생성됩니다.

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

나는이 일이 왜 생각이 없다 포함, 난 그냥 이후 나는이 "> (이 때문에 새로운 TD으로 인한 따옴표가 일치하지의 인쇄 ... 이유가 얻을 수 있기 때문에 코드 덤비는 알고 이 일이 일어난거야?

답변

0

내가 만든 캘린더 시스템은 이번 달 전체 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() 
       ........... 
) 

난 그냥 내가 이벤트와 attatch을 통해

다음 사이클을 그 범위에 이벤트를 얻을 수있는, 데이타베이스에 충돌 한 후

지정된 날짜와 현재의 주에서 배열을 작성하여 일 배열을 구축 캘린더 배열로 가져옵니다.

은 매력처럼 작동합니다.

javascript와 함께 작동 시키려면 캘린더 날짜의 시작과 종료를 제어하는 ​​HTML 파일의 머리 부분에 특정 자바 스크립트를 반향 시키십시오.

은 클라이언트에게 웹 양식의 이벤트를 입력/편집 할 수있는 간단한 로그인 페이지를 제공합니다.

+0

질문, 내가 여기에 나를 보여 주거나 PHP에서 완전히하는 것처럼 PHP를 추가하는 것이 좋습니다? – Tsundoku

+0

자바 스크립트를 보면 PHP로 만드는 것이 더 낫다. 요일을 표시하는 JQuery 함수는 자바 스크립트에서 모두 필요합니다. –

0

서버에서 일정이 포함 된 웹 페이지로 이벤트 데이터를 보내려는 것 같습니다. 이것이 가능하지만, 어렵고 일반적으로 노력할 가치가 없습니다.일정에 AJAX를 구축하고 5 ~ 10 분마다 이벤트 업데이트를 위해 서버를 폴링하는 것이 좋습니다. 새로운 이벤트가 업로드되고 캘린더에 표시 될 때까지 약간의 지연이 발생하지만 훨씬 쉽게 개발할 수 있습니다.

관련 문제