- Home
- Categorie
- Coding e Sistemistica
- PHP
- Creare calendario in PHP
-
Ciao talkoman,
basta un po' di pazienza... vedila così: quella è una semplice tabella colorata con un po' di numeri, che sai perfettamente impostare una volta noto l'anno e il mese, che se osservi nell'esempio che hai indicato vengono passati nell'URL come variabile*** $_GET***.Di default ovviamente userai la funzione date() di ***php ***per ottenere il mese e l'anno di riferimento...
-
allora ho fatto così:
[PHP]$giorno = Array("L","M","M","G","V","S","D");
$nomemese = Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno", "Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");
$aa=$_REQUEST['aa'];
if ($aa=="")
$aa=date("Y");
$mm=$_REQUEST['mm'];
if ($mm=="")
$mm=date("n");
$anno=$aa;
$mese=$mm;
if ($mese==1)
$back="aa=".($anno-1)."&mm=12";
else
$back="aa=".$anno."&mm=".($mese-1);
if ($mese==12)
$next="aa=".($anno+1)."&mm=1";
else
$next="aa=".$anno."&mm=".($mese+1);
echo " <div align='center'><div class='mese'>";
echo "<a href='".$_SERVER['PHP_SELF']."?".$back."'>«</a> ";
echo "<b>".$nomemese[$mm-1]." ".$aa."</b> ";
echo "<a href='".$_SERVER['PHP_SELF']."?".$next."'>»</a>";
echo " </div></div>";
echo "<table align='center'>";
// ciclo per i giorni della settimana
echo " <tr>";
for ($i=0;$i<7;$i++)
echo " <th class='cal_days'>".$giorno*."</th>";
echo " </tr>";
$primo=mktime(0,0,0,$mm,1,$aa); //calcolo il primo giorno del mese
$delta=date("w",$primo)-1;
echo " <tr>";
for ($i=0;$i<$delta;$i++){
echo " <td> </td>";
}
for ($i=1;$i<=date("t",$primo);$i++){
if (($i+$delta)%7==1)
echo " <tr>"; //inizio riga
if (($i==date("d"))&&($mm==date("n"))&&($aa==date("Y")))
echo " <td style='border:1px solid #f00' class='oggi'><a class='".$oggi."' href='calendario.php?m=".$mm."&g=".$i."&a=".$aa."'>".$i."</td>";
elseif((($i<date("d"))&&($mm==date("n"))&&($aa<=("Y"))) || (($mm<date("n"))&&($aa<=("Y"))))
echo " <td class='default'><a class='".$default."' href='calendario.php?m=".$mm."&g=".$i."&a=".$aa."'>".$i."</td>";
else
echo " <td class='default'>".$i."</td>";
if (($i+$delta)%7==0)
echo " </tr>"; //chiusura riga
}
echo "</table>";
}[/PHP]in modo che posso aprire le news per esempio di tutte le date inferiori a quella odierna e funziona. Ma appena arrivo a gennaio 2009 mi fa cliccare tutte le date.....
capito?
se no cerco di spiegare meglio....
-
ti sei perso le due date alla 9a riga dal basso:
elseif((($i<date("d"))&&($mm==date("n"))&&($aa<=date("Y"))) || (($mm<date("n"))&&($aa<=date("Y"))))
rimettile e funiona tutto!
-
ok grazie!!! e quando clicco su una data di ottobre, per esempio, si apre la pagina come nel link sopra....ma il calendario ritorna a novembre...come faccio a farlo restare nel mese della data cliccata?
grazie!
-
Basta che nella URL del link metti anche tutti i paramentri $_GET della URL visualizzata nella barra.
-
ok fatto!!!
grazie!!!
se vuoi posto il codice completo e corretto se pensi che possa servire a qualcuno...
-
Si, posta pure il codice, che credo possa essere utile ad altri.
Grazie!
-
eccolo sottoforma di funzione...
[PHP]<?php function cal(){
echo "<br /><br /><br />";
$giorno = Array("L","M","M","G","V","S","D");
$nomemese = Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno", "Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");
$aa=$_REQUEST['aa'];
if ($aa=="")
$aa=date("Y");
$mm=$_REQUEST['mm'];
if ($mm=="")
$mm=date("n");
$anno=$aa;
$mese=$mm;
if ($mese==1)
$back="aa=".($anno-1)."&mm=12";
else
$back="aa=".$anno."&mm=".($mese-1);
if ($mese==12)
$next="aa=".($anno+1)."&mm=1";
else
$next="aa=".$anno."&mm=".($mese+1);
echo " <div align='center'><div class='mese'>";
echo "<a href='".$_SERVER['PHP_SELF']."?".$back."'>«</a> ";
echo "<b>".$nomemese[$mm-1]." ".$aa."</b> ";
echo "<a href='".$_SERVER['PHP_SELF']."?".$next."'>»</a>";
echo " </div></div>";
echo "<table align='center'>";
// ciclo per i giorni della settimana
echo " <tr>";
for ($i=0;$i<7;$i++)
echo " <th class='cal_days'>".$giorno*."</th>";
echo " </tr>";
$primo=mktime(0,0,0,$mm,1,$aa); //calcolo il primo giorno del mese
$delta=date("w",$primo)-1;
echo " <tr>";
for ($i=0;$i<$delta;$i++){
echo " <td> </td>";
}
for ($i=1;$i<=date("t",$primo);$i++){
if (($i+$delta)%7==1)
echo " <tr>"; //inizio riga
if (($i==date("d"))&&($mm==date("n"))&&($aa==date("Y")))
echo " <td style='border:1px solid #f00' class='oggi'><a class='".$oggi."' href='calendario.php?mm=".$mm."&gg=".$i."&aa=".$aa."'>".$i."</td>";
elseif((($i<date("d"))&&($mm==date("n"))&&($aa<=date("Y"))) || (($mm<date("n"))&&($aa<=date("Y"))))
echo " <td class='default'><a class='".$default."' href='calendario.php?mm=".$mm."&gg=".$i."&aa=".$aa."'>".$i."</td>";
else
echo " <td class='default'>".$i."</td>";
if (($i+$delta)%7==0)
echo " </tr>"; //chiusura riga
}
echo "</table>";
}
?>[/PHP]
-
Ciao!
Ho provato ad usare questo calendario ed a febbraio di quest'anno, ma anche a marzo, (in pratica ogni volta che il primo del mese è domenica) viene impaginato come lunedì...
Succede solo a me?
:bho:
-
No....purtroppo succede anche a me...non capisco perchè....