Salve,
ho scaricato e modificato questo script php per la visualizzazione di un semplice ma potente calendario.

In particolare ho inserito una fuzione che permette di inserire un link in un giorno da me indicato (vedi riga 63).

Ora vorrei poter inserire un determinato link in un determinato giorno non appartenente al mese stampato (per esempio inserire il 25 dicembre 'BUON NATALE').

mi basta anche sapere come far leggere una determinata data allo script.

Codice PHP:
<?php 
# PHP Calendar (version 2.3), written by Keith Devens 
# [url]http://keithdevens.com/software/php_calendar[/url] 
#  see example at [url]http://keithdevens.com/weblog[/url] 
# License: [url]http://keithdevens.com/software/license[/url] 

function generate_calendar($year$month$days = array(), $day_name_length 2$month_href NULL$first_day 0$pn = array()){ 
    
$first_of_month gmmktime(0,0,0,$month,1,$year); 
    
#remember that mktime will automatically correct if invalid dates are entered 
    # for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998 
    # this provides a built in "rounding" feature to generate_calendar() 

    
$day_names = array(); #generate all the day names according to the current locale 
    
for($n=0,$t=(3+$first_day)*86400$n<7$n++,$t+=86400#January 4, 1970 was a Sunday 
        
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name 

    
list($month$year$month_name$weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month)); 
    
$weekday = ($weekday $first_day) % 7#adjust for $first_day 
    
$title   htmlentities(ucfirst($month_name)).''.$year;  #note that some locales don't capitalize month and day names 

    #Begin calendar. Uses a real <caption>. See [url]http://diveintomark.org/archives/2002/07/03[/url] 
    
@list($p$pl) = each($pn); @list($n$nl) = each($pn); #previous and next links, if applicable 
    
if($p$p '<span class="calendar-prev">'.($pl '[url="'.htmlspecialchars($pl).'"]'.$p.'[/url]' $p).'</span>'
    if(
$n$n '<span class="calendar-next">'.($nl '[url="'.htmlspecialchars($nl).'"]'.$n.'[/url]' $n).'</span>'
    
$calendar '<table class="calendar">'."\n"
        
'<caption class="calendar-month">'.$p.($month_href '[url="'.htmlspecialchars($month_href).'"]'.$title.'[/url]' $title).$n."</caption>\n<tr>"

    if(
$day_name_length){ #if the day names should be shown ($day_name_length > 0) 
        #if day_name_length is >3, the full name of the day will be printed 
        
foreach($day_names as $d
            
$calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($day_name_length substr($d,0,$day_name_length) : $d).'</th>'
        
$calendar .= "</tr>\n<tr>"
    } 

    if(
$weekday 0$calendar .= '<td colspan="'.$weekday.'"></td>'#initial 'empty' days 
    
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month$day++,$weekday++){ 
        if(
$weekday == 7){ 
            
$weekday   0#start a new week 
            
$calendar .= "</tr>\n<tr>"
        } 
        if(isset(
$days[$day]) and is_array($days[$day])){ 
            @list(
$link$classes$content) = $days[$day]; 
            if(
is_null($content))  $content  $day
            
$calendar .= '<td'.($classes ' class="'.htmlspecialchars($classes).'">' '>'). 
                (
$link '[url="'.htmlspecialchars($link).'"]'.$content.'[/url]' $content).'</td>'
        } 
        else 
$calendar .= "<td>$day</td>"
    } 
    if(
$weekday != 7$calendar .= '<td colspan="'.(7-$weekday).'"></td>'#remaining "empty" days 

    
return $calendar."</tr>\n</table>\n"




 
$time time();
$today date('j',$time);
    
$days = array($today=>array(NULL,NULL,'<span style="color: red; font-weight: bold; font-size: larger; text-decoration: blink;">'.$today.'</span>'),#evidenzia il giorno corrente



       
9=>array('http://www.liceomoscati.it/incontroautore.php','linked-day'), #inserisce un link nel giorno indicato
       
       
       
);
              
$oldlocale setlocale(LC_TIMENULL); #save current locale 
    
setlocale(LC_TIME'it_IT');
?>
questo è la stampa:

Codice PHP:
<?php 
include("calendario.php");
echo 
generate_calendar(date('Y'$time), date('n'$time), $days2NULL1);
setlocale(LC_TIME$oldlocale);
?>