Calendario Ajax

Matteo - 23 Settembre 2006

Avevamo già presentato qualche giorno fa il calendario di questo sito in versione Ajax. Lo potete "ammirare" in tutto il suo splendore nella colonna sinistra del sito. Ora viene rilasciato il suo codice sorgente, commentato in italiano ed inglese, per la gioia di grandi e piccini :)

Il pacchetto comprende il sorgente php del calendario (ajax_calendar.php), il file del foglio di stile utilizzato (ajax_calendar.css), un'immagine di background usata dal css (calBg.png) e alcuni file per l'esempio di uso (sample.php).

Per utilizzare in una pagina questo calendario è necessario:

  • controllare lo script ajax_calendar.php per modifiche da apportare, in particolare alla generazione degli eventi, delle url relative e per l'inizializzazione delle connessioni al database;
  • impostare all'inizio della pagina in cui inserire il calendario il locale su quello desiderato per il nome dei mesi e delle iniziali dei giorni della settimana con setlocale(LC_ALL, nome_locale) (opzionale);
  • dentro il tag <head> della pagina inserire un "echo AddCalHelperScript();" per permettere l'aggiunta delle funzioni javascript necessarie e del foglio di stile;
  • dentro il <body> della pagina inserire un "echo GetCompleteCalendar();" per inserire il calendario iniziale con tutto quanto il necessario.

Tutto qua. Insomma via, un gioco da ragazzi, no?

(come al solito la licenza è Creative Commons BY NC SA

 

ottimo

Sabrina - 18 Giugno 2007 14:43

Ciao,
questo è perfetto da adattare solo che non so come poter gestire 'amministrazione puoi aiutarmi perfavore? :)

grazie.

Re: ottimo

Juna - 24 Giugno 2007 12:18

Che tipo di problemi hai avuto con l'amministrazione?

non funziona

MpMp - 23 Agosto 2007 13:37

non funziona la lingua e lo spostamento tra i mesi....

re:non funziona

Matteo - 24 Agosto 2007 20:53

@mpmp: forse non hai definito la variabile globale $language (o alternativamente non l'hai sostituita con la cosa relativa opportuna)? Se vuoi puoi mandarci per email l'html che ti genera per vedere cosa c'e' che non va.

Considera che il codice è praticamente lo stesso del calendario in alto a sinistra su questo sito, che mi pare funzioni senza problemi.

problema

luca - 11 Settembre 2007 01:32

bello lo script.. però ho un piccolo problema.. noto che i giorni che hanno un evento si ripetono anche negli altri mesi. Come devo fare per fare vedere il giorno colorato solo nel MESE in cui cè l'evento?? In modo tale che se avanzo di 1/2 mesi quel giorno non è evidenziato.

re: problema

Matteo - 11 Settembre 2007 20:24

@luca: penso che tu stia male interpretando l'esempio che sostituisce la query SQL che dovrebbe generare l'array degli eventi: nell'esempio gli eventi vengono messi sugli stessi giorni di tutti i mesi.
Se non desideri interfacciarti con MySQL come previsto dal codice commentato, devi scrivere del codice aggiuntivo per assegnare l'array "$query" in base al mese visualizzato (dato da $mese e $anno) e per generare il link relativo al giorno specifico (al posto della chiamata a funzione GenUrlFromDate che nel codice rilasciato è commentata).

re:re:problema

luca - 11 Settembre 2007 23:23

ciao e grazie della risposta! Attenzione, voglio e devo interfacciarmi a MYSQL. Solo che vorrei che il calendario mi facesse vedere evidenziati solo quei giorni in cui ci sono le notizie inserite per quella data (giorno e mese). Se inserisco nel database un articolo oggi (11/09), il giorno deve essere evidenziato solo per l'11 settembre e non anche negli altri mesi. non so' se mi sono spiegato bene.

re:re:re:problema

Matteo - 12 Settembre 2007 02:56

ti sei spiegato benissimo. Ma se ti succede dipende dalla query sql che ci hai messo: come già detto il codice è lo stesso del calendario che vedi su questo sito. Assicurati che nella query che fai ci sia una condizione where in cui mese e anno dell'articolo vengono controllati.

Aiutino

Daniele - 4 Ottobre 2007 18:56

Bellissimo però ho un problema?
Non riesco a far funzionare lo spostamento dei mesi avanti dietro quando lo includo nella pagina php.
Non funziona anche se inserisco direttamente il codice nella pagina?
Invece con l'esempio sample tutto funziona anche se non c'è la compatibilità con internet explorer
Puoi aiutarmi?
Ciao

Risolto

Daniele - 5 Ottobre 2007 22:09

Funziona tutto OK, ho risolto
Grazie

Opera

smal - 12 Dicembre 2007 09:01

lo script non funziona con Opera.

re: Opera

Matteo - 12 Dicembre 2007 13:41

mi pare che il calendario su questo sito funzioni correttamente su Opera, almeno sulla versione che ho io su Mac (non recentissima). Cosa non funziona?

permesso negato

daniele - 10 Gennaio 2008 23:14

scusate ma volevo sottoporvi il mio problema: nonostante riesca a visualizzare il sample, cercando di cambiare mese no accade nulla...la console degli errori mi dice:

uncaught exception: permesso negato al metodo di chiamata XMLHttpRequest.open

come potrei risolvere???

tabella db

alex - 26 Gennaio 2008 18:18

Qualcuno sa come costruire la tabella del db per la query?

Grazie

dbms

marco - 14 Febbraio 2008 18:30

ho rivisto il file ajax_calendar ed ho impostato i vari eventi a mano, in attesa di collegarlo ad un database! mi potete dare una mano a creare un database e il codice relativo al corretto funzionamento all'interno del calendar_ajax.php?
nel database mi interessa solo 1 campo count, 1 data, 1 evento (20 caratteri bastano). Il database può essere creato anche in access, per me non è un problema! la difficoltà sta nel collegarlo con il file da quello che ho capito....Sarò grado a chi mi darà una mano!

Complimenti agli autori di questo calendario, mi piace davvero...Uno dei pochi così raffinato che circolano nella rete!

Ciao a tutti!"

db

Dany - 12 Marzo 2008 17:10

Salve a tutti e prima di tutto complimenti per il bellissimo calendario ed i sorgenti resi visibili a tutti!

Anche io però ho lo stesso problema relativo al db, ho visto il codice in ajax_calendar, e di base c'è l'aggiunta a mano degli eventi, ma per farli interagire invece con un db?
Ho visto che c'è da cambiare i commenti dalla riga del codice 158 (array di esempio sostitutivo della query:)e scommentare la parte subito sopra riga 152.. e poi in fondo riga 305 inserire i dati con server, nome e password di di un db mysql creato in precedenza. Ma mi dà errore.. Forse non ho ben capito bene tutto il procedimento :-(
Insomma... quando e se avrete tempo potreste fare un piccolo tutorial o spiegare come farlo interagire con un db?
Ve ne sarei veramente grato!
Saluti!
Daniele

componente e modulo joomla

alessandro - 18 Marzo 2008 18:10

Salve a tutti e complimenti.
Sto lavorando ad un componente di gestione eventi e modulo calendario per joomla versione 1.5 che si basano su questo bel calendario.
Interessa a qualcuno?
Ciao,
Alessandro

Domandina stupidina...

GPJ - 19 Marzo 2008 14:26

Ciao a tutti, questo calendario è fantastico, è proprio quello che stavo cercando! Però... a me servirebbe molto più semplicemente in Java, basta che abbia i tooltip: sapete per caso dove posso trovarne uno? Grazie ;)
iperek (at) yahoo (punto) it

problema scorrimento

xedy - 22 Aprile 2008 01:41

premetto ke il calendario mi funziona alla perfeziona senza il collegamento al db ma quando lo collego al db nn mi funziona lo scorrimento qualcuno mi sa dire xkè?
grazie

Non riesco a far funzionare lo

Milena - 7 Agosto 2008 17:06

Ciao, il calendario di questo sito funziona... ma utilizzando il codice sorgente non riesco a far funzionare lo scorrimento dei mesi...

italiano su ubuntu

ken - 16 Agosto 2008 02:33

Ciao!

Molto utile e ben fatto questo calendario, grazie.

Volevo segnalarvi pero' che sulla macchina su cui sto lavorando, una ubuntu 7.10, per ottenere le date in Italiano ho dovuto settare il locale in questo modo:

setlocale (LC_ALL,"it_IT.utf8");

In caso contrario le date appaiono sempre in Inglese.

Aiuto

andrea - 22 Settembre 2008 13:02

Non riesco a capire cosa inserire nella query per interrogare il db!
"$query = "SELECT DAYOFMONTH(data) as Day, count(id) as Count FROM calendar ".
"WHERE ... AND MONTH(data)=$mese AND YEAR(data)=$anno AND ... ".
"GROUP BY DAYOFMONTH(data) ORDER BY DAYOFMONTH(data)";
$res = mysql_query($query);
$nextDayArr = mysql_fetch_array($res);"



next($query);//mysql_fetch_array($res);

che mettere al poeto dei puntini?

re: Aiuto

Matteo - 22 Settembre 2008 23:06

Al posto dei puntini vanno messe eventuali condizioni tue specifiche. Ad esempio se vuoi contare solo righe che hanno valore 'blog' nella colonna 'tipo' metterai "WHERE tipo='blog' AND MONTH..."

scorrimento

Mirco - 8 Ottobre 2008 11:17

Ciao, anch'io non riesco a fare lo scorrimento dei mesi proprio col codice che ho scaricato senza fare nessuna ulteriore modifica se non quello della lingua.

scorrimento [Solved]

Mirco - 8 Ottobre 2008 15:24

Per tutti quelli che potranno avere nel futuro qualche problema per quanto riguarda lo scorrimento:

1. Assicurarsi bene che $base_url = chiami ajax_calendar.php col giusto path. Il controllo può essere fatto via html nell'output.
2. Uno dei motivi per cui col db non si ha passaggio da un mese al altro è che lo script può non stabilire la connessione o perderla nel momento della chiamata quando si tenta di passare da un mese all'altro. Personalmente l'ho risolto cosi:
$con = (Connessione col DB Mysql)
$query = array(array('Day'=>0, 'Count'=>0));
$nextDayArr = current($query);
$query = "Select ....";
$res = mysql_query($query, $con)

if($res = @mysql_query($query, $con)) {
$nextDayArr = mysql_fetch_array($res);
}

Spero che sia d'aiuto...

Great script by the way!

Bellissimo!

Francesco - 30 Ottobre 2008 12:01

Complimenti, veramente utile e ben scritto!

Errore connessione DB

Michele - 8 Novembre 2008 15:49

Ciao a tutti e complimenti per lo script, davvero ben fatto! Ho un problema nella connessione al db, cioè collegandosi non mi restituisce nessun "die" però quando richiama la query mi dà il seguente errore:

mysql_query(): Access denied for user '*******'@'localhost' (using password: NO) in /calendar/ajax_calendar.php

mysql_query(): A link to the server could not be established in /try/calendar/ajax_calendar.php

mysql_fetch_array(): Supplied argument is not a valid MySQL result resource in /try/calendar/ajax_calendar.php

La query è la seguente:
"SELECT DAYOFMONTH(date) as Day, count(id) as Count FROM db_globale WHERE posizione = 'calendario' AND MONTH(date)=$mese AND YEAR(date)=$anno GROUP BY DAYOFMONTH(date) ORDER BY DAYOFMONTH(date)"

Il db è formato dal campo ID auto_increment e da DATE in formato AAAA-MM-GG.

Come risolvo? Grazie

Mesi

Beverly - 5 Febbraio 2009 15:42

Bene eccomi qui, complimenti per il calendario.

Io ho un piccolo problema.. non mi cambia i mesi cliccando sulle apposite freccette.

Grazie.
Weblog Koan Progetti Foto Contatti