Salve ho trovato un semplice calendario che si generava in php, e mi sono messo a smanettare per vedere di inserirci anche delle freccette per andare avanti o indietro nei mesi, e la cosa pareva andare bene fino a che, andando avanti con le freccette mi sono reso conto che non mi veniva visualizzato novembre
e non riesco a capire per quale barbaro motivo non voglia uscire
non fate caso ai numeri che appaiono quando provata a farlo funzionare perche erano una prova..............spero che mi possiate aiutare a capire questa cosa strana
Codice PHP:
//Trovo i dati fondamentali:
$dati['giorni_mesi'] = array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); // Array con i giorni dei mesi
$dati['mese_num'] = date("n", time()); // Mese corrente ( numerico )
if ($st==1 ){ $p=$_GET['p']; $p++; $dati['mese_num']=$dati['mese_num']+$p; $m=$dati['mese_num']; } elseif ($st==2){ $p=$_GET['p']; if ($p==0){echo "NO";} else{ $p--; $m=$_GET['m']; $dati['mese_num']=$m-1; $m=$dati['mese_num']; }} else{ $p=0; }
$dati['mese_text'] = date("F", time()); // Mese Corrente ( testuale )
$dati['oggi'] = date("j", time()); // Oggi ( numerico senza eventuali zeri ) $dati['oggi_sett'] = date("w", time()); // Oggi ( nella settimana, numerico )
$dati['anno'] = date("Y", time()); // Anno $dati['start'] = date("w", mktime(0,0,0, $dati['mese_num'], 1, $dati['anno'])); // Giorno della settimana del primo giorno dell'anno $dati['giorni_mesi'][1] = (($dati['mese_num']%400) == 0) ? 29 : 28; // Calcolo dei giorni di febbraio
$dati['giorni_mese'] = $dati['giorni_mesi'][$dati['mese_num']-1]; // Giorni del mese corrente
$dati['settimane_mese'] = ceil($dati['giorni_mese']/7); // Settimane del mese corrente arrotondato per eccesso. echo "$p "; echo $dati['mese_num']; $info['can_start'] = FALSE; // Se il conteggio reale dei giorni può partire $info['to_less'] = 0; // Giorni da accumulare $text = '<div align="center" class="lista"> <tr> <td> <form action="calendarioprenotazioni.php?st=2&m='.$m.'&p='.$p.'" method="post"> <input value="<<" type="submit"> </form> </td>
<td>'.$dati['mese_text'].'</td>
<td><form action="calendarioprenotazioni.php?st=1&p='.$p.'" method="post"> <input value=">>" type="submit" > </form> </td>
</tr> </div>'. '<table align="center" border="1">
<tr> <td class="lista">LU</td> <td class="lista">MA</td> <td class="lista">ME</td> <td class="lista">GI</td> <td class="lista">VE</td> <td class="lista">SA</td> <td class="lista">DO</td> </tr>'; // Schema fisso dei giorni della settimana
for($ciclo = 0; $ciclo < $dati['settimane_mese']; $ciclo++)
{ $text .= '<tr>'; // Aggiungo una griglia for($subciclo = 1; $subciclo <= 7; $subciclo++) { if($subciclo != $dati['start'] && $info['can_start'] == FALSE) { $text .= '<td class="lista"></td>'; //
1) Aggiungo una casella vuota
$info['to_less']++; // 2) Aggiungo un giorno da levare continue; // 3) Faccio ricominciare il ciclo finchè uno dei due casi si riveli TRUE }
else {
$info['can_start'] = TRUE; // Muto il valore di can_start in TRUE }
$dati['current_day'] = $subciclo+($ciclo*7)-$info['to_less']; // Calcolo il giorno da mostrare
if($dati['current_day'] <= $dati['giorni_mese']) { if($dati['current_day'] == $dati['oggi']) // Controllo se il giorno da mostrare è quello di oggi {
$tdclass = 'cale'; // Cambio stile in 'oggi' se è oggi } else { $tdclass = 'lista'; // Cambio stile in 'Default' se non è oggi }
$text .= '<td class="'.$tdclass.'">'.$dati['current_day'].'</td>'; // Poi aggiungo la cella }
else { break; } } $text .= '</tr>'; // Chiudo la griglia } $text .= '</table>'; // Chiudo la tabella echo $text; ?>