2009-04-01 5 views
0

J'ai le code pour un calendrier javascript et il fonctionne parfaitement comme il le crée lors du chargement de la page. Cependant, je me demandais s'il était possible d'ajouter des événements. J'ai trouvé un plugin (jQuery) qui permet à l'utilisateur de survoler un td avec la classe "event" et un évènement sera affiché. Donc, puisque ce calendrier ne sera pas utilisé par moi mais par quelqu'un d'autre qui ne sait rien sur le développement, je me demandais s'il y avait un moyen de faire un fichier php ou de télécharger ou quelque chose pour télécharger l'événement. Je veux dire, disons qu'elle veut un événement sur le 3, puis elle télécharge un fichier php le lit et dit à javascript d'ajouter la classe "événement" à cette date et jQuery fait le reste. C'est possible? Je n'arrive même pas à comprendre comment le faire et j'espère vraiment que je me suis expliqué. Voici mon javascript btw.javascript et php à la volée calendrier

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

Quelque chose d'autre, comme vous pouvez le voir ici, il ajoute blankspaces jusqu'à ce qu'il arrive à une date réelle. J'essayais de le faire vérifier si (x n'était pas un nombre) puis ajouter un td class = "padding" mais pour ce faire j'essayais d'utiliser x.match (/ [0-9] + /) mais ça ne l'a pas fait T semble fonctionner et ce serait aussi la première fois que j'essaie d'utiliser regex avec javascript quelqu'un serait-il savoir pourquoi est-ce faux? ou comment vérifier réellement pour cela?


Modifier

quelque chose d'étrange se passe avec ce script et je ne sais pas pourquoi, j'ai essayé de changer de

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

à

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

cette , donc je pourrais sélectionner chaque td, mais quand je fais cela, un nouveau td est généré qui CONTIENT

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

Je ne sais pas pourquoi cela se produit, je sais qu'il est tout simplement de jouer avec le code, car après, je reçois un « > imprimé (à cause des citations désadaptation provoquée par ce nouveau td ... pourquoi est cela arrive?

Répondre

0

Les systèmes de calendrier que j'ai créés utilisent un tableau php complet du mois. de sorte que vous pouvez itérer dessus et pour chaque cellule de tableau de jour vide correspondante il y a un tableau vide pour la journée.

par exemple.

$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() 
       ........... 
) 

Je construis les jours tableau en simplement la création d'un tableau à partir de la date et la semaine en cours

alors je frappe le databse pour obtenir des événements dans cette gamme

puis faire défiler les événements et attatch les à la matrice de calendrier.

fonctionne comme charme. Pour le faire fonctionner avec javascript il suffit de faire écho à un javascript spécifique dans la tête du fichier html qui contrôlent l'ouverture et la fermeture des jours calendaires.

donnez au client une page de connexion simple pour entrer/modifier des événements dans un formulaire Web.

+0

question, vous proposez d'ajouter le php comme vous me montrez ici ou que je le fais complètement en php? – Tsundoku

+0

En regardant votre javascript, vous feriez mieux de tout faire en php. La fonction JQuery pour afficher les jours est tout ce que vous devez avoir en javascript. –

0

Il semble que vous souhaitiez transférer les données d'événement du serveur vers votre page Web contenant le calendrier. Bien que cela soit possible, c'est difficile et ne vaut généralement pas la peine.Il vaudrait mieux construire AJAX dans votre calendrier et interroger le serveur pour les mises à jour d'événements toutes les 5 ou 10 minutes environ. Cela introduira un certain délai entre le moment du chargement des nouveaux événements et leur affichage dans le calendrier, mais sera beaucoup plus facile à développer.