PHP calendario, come inserire i giorni precedenti?

Andrix1185

Nuovo Utente
5 Apr 2012
1
0
0
PHP calendario:inserire i giorni
Ciao a tutti!
Vi scrivo perchè avrei dei dubbi da risolvere...
Sto costruendo un calendario eventi in php. Il calendario va da lunedì a domenica e visualizza correttamente i giorni del mese all'interno. Il mio problema è che vorrei inserire, prima dell'inizio del mese, gli ultimi giorni relativi al mese precedente, e non riesco. Inoltre, vorrei fare la stessa cosa alla fine, cioè dopo l'ultimo giorno inserire i primi giorni del mese successivo.

Al momento, nei giorni precedenti l'1 ho scritto l'ultimo giorno del mese precedente, ripetuto.

Ecco il codice:

PHP:
<?php

for($i=1; $i<$num_giorni+$primo_lunedi;$i++) {

if($i%$colonne+1==0){
print("\nt<tr>");                                                              
}                                                        
  if($i<$primo_lunedi){         

print("\n\t\t<td align=center>"[COLOR="#000080"][B][U].$giorni_prec[/U][/B][/COLOR]</td>");                                       
  }     

        else {

$giorno_= $i-($primo_lunedi-1);
$a = strtotime(date($start_year."-".$start_mon."-".$start_day));     
$b = strtotime(date("Y--d")); 

if($a != $b) {             
print("\n\t\t<td align=center>".$a.$giorno_."/td>");                                                                          if($i>$num_giorni+$primo_lunedi){                                         
print("\n\t\t<td align=center>".$giorni."</td>");                                    
 }                                
 }                                                                  
else {             
print("\n\t\t<td align=center>".$a."<span>".$giorno_."</span></td>");                                 }                                                                                                                              
  }                                                                            
   if($i%$colonne==0){                                         
         print("\nt</tr>");                                                       
       }                                                      
}


print("\n\t<tr>&nbsp;\n\t</tr>");                                                
  print("\n</table>");                                                          
     ?>




in blu ho segnato quello che stampo..in pratica al posto di quello dovrei avere una funzione o qualsiasi cosa che mi stampi in ogni casellina i giorni finali del mese precedente. Come posso fare?? calendario.png
In allegato trovate uno screenshot del risultato

Grazie
 
Ciao,
io non sono riuscito a farlo funzionare il tuo script

magari postalo completo

intanto ti posto quello che uso io

PHP:
function calendario($month, $year) {

        $time_primo_del_mese = mktime(0, 0, 0, $month, 1, $year);
        $time_primo_del_mese_precedente = mktime(0, 0, 0, $month - 1, 1, $year);

        $primo_del_mese = date('w', $time_primo_del_mese);

        $giorni_nel_mese_precedente = date('t', $time_primo_del_mese_precedente);
        $giorni_nel_mese = cal_days_in_month(CAL_GREGORIAN, $month, $year);

        echo "<table>";
        echo "<tr>";
        echo "<td>D</td>";
        echo "<td>L</td>";
        echo "<td>M</td>";
        echo "<td>M</td>";
        echo "<td>G</td>";
        echo "<td>V</td>";
        echo "<td>S</td>";
        echo "</tr>\n";
        $o = 0;
        for ($i = 0; $i < 6; $i++) {
            echo "<tr>";
            for ($x = 1; $x <= 7; $x++) {
                $y = $x + ($i * 7) - $primo_del_mese;
                echo "<td";
                if ($y > 0 && $y <= $giorni_nel_mese) {
                    if ($y == date('d') && $month == date('m') && $year == date('Y')) {
                        echo " class='daycolor' ";
                    }
                    echo ">$y";
                } else if ($y <= 0) {
                    echo " class='empty'>" . ($giorni_nel_mese_precedente + $y);
                } else {
                    $o++;
                    echo " class='empty'>$o";
                }
                echo "</td>";
            }
            echo "</tr>";
            if ($y >= $giorni_nel_mese && $i < 6)
                break;
        }
        echo "</table>";
    }

con un po di css lo puoi personalizzare

calendario.png
 

Discussioni simili