io ho uno script di un calendario, l'avevo trovato su freephp e l'ho riadattato alle mie esigenze, ti permette di navigare fra i vari mesi, puoi selezionare qualsiasi data e automaticamente te la mette nel campo di testo del form.
Dunque lo script è questo, è lungo, ma basta che lo copi e lo metti per intero in un tuo file, poi te lo potrai studiare con calma:
la funzione in js che vedi all'inizio:codice:<link href="up.css" rel="stylesheet" type="text/css"> <script language="Javascript"> function Selezionato(data) { window.opener.document.form1.data.value = data; window.close(); } </script> <? //----------------- This function is to do the HTML header chore --------------------- function print_HTML_header() { global $flag; /* echo "Mese: ".$_GET['month']; echo " Anno: ".$_GET['year']; */ $flag = (isset($_GET['month']) && ($_GET['month'] <> date("n") || $_GET['year'] <> date("Y"))) ? 1 : 0; echo "<HTML>\n<HEAD>\n<STYLE>\n". "\n</STYLE>". "<TITLE>Calendario\n</TITLE>\n</HEAD>\n<BODY BACKGROUND='images/bg.gif'>\n\n". "<P ALIGN='center' CLASS='content'>Seleziona la data in cui pubblicare la news:</P>"; } //----------------- Funzione per la chiusura dei tag HTML -----------------// function print_HTML_footer() { echo "</BODY></HTML>"; } //----------------- Funzione che stampa il calendario -----------------// function print_calendar($mon,$year) { global $dates, $first_day, $start_day, $flag; $first_day = mktime(0,0,0,$mon,1,$year); $start_day = date("w",$first_day); $res = getdate($first_day); $month_name = $res["month"]; $no_days_in_month = date("t", $first_day); // t -> numero dei giorno del mese //Controllo se il primo giorno del mese è una Domenica altrimenti riempio di spazi fino ad arrivare al primo giorno for ($i = 1; $i <= $start_day;$i++) $dates[1][$i] = " "; $row = 1; $col = $start_day + 1; $num = 1; //contatore dei giorni del mese while($num <= 31){ if ($num > $no_days_in_month) break; //se non ci sono più giorni nel mese esco da ciclo else{ $dates[$row][$col] = $num; if (($col + 1) > 7){ //se sono arrivato alla fine della settimana devo scendere di una riga $row += 1; $col = 1; }else $col += 1; $num += 1; }//fine if-else }//fine while $mon_num = date("n",$first_day); //calcolo del numero del mese -> n = senza eventuali 0 $temp_yr = $next_yr = $prev_yr = $year; //imposto l'anno di visualizzazione $prev = $mon_num - 1; $next = $mon_num + 1; //Se Gennaio è il mese corrente imposto il mese precedente a Dicembre dell'anno precedente if ($mon_num == 1){ $prev_yr = $year - 1; $prev = 12; } //Se il dicembre è il mese corrente imposto il mese successivo a Gennaio dell'anno successivo if ($mon_num == 12){ $next_yr = $year + 1; $next = 1; } echo "<DIV ALIGN='center'><TABLE BORDER=0 WIDTH=350 CELLSPACING=0"; //trasformo i mesi dal formato standard a quello italiano if (date("F", $first_day) == 'January') { $mese = 'Gennaio'; $n = '01'; } elseif (date("F", $first_day) == 'February') { $mese = 'Febbraio'; $n = '02'; } elseif (date("F", $first_day) == 'March') { $mese = 'Marzo'; $n = '03'; } elseif (date("F", $first_day) == 'April') { $mese = 'Aprile'; $n = '04'; } elseif (date("F", $first_day) == 'May') { $mese = 'Maggio'; $n = '05'; } elseif (date("F", $first_day) == 'June') { $mese = 'Giugno'; $n = '06'; } elseif (date("F", $first_day) == 'July') { $mese = 'Luglio'; $n = '07'; } elseif (date("F", $first_day) == 'August') { $mese = 'Agosto'; $n = '08'; } elseif (date("F", $first_day) == 'September') { $mese = 'Settembre'; $n = '09'; } elseif (date("F", $first_day) == 'October') { $mese = 'Ottobre'; $n = '10'; } elseif (date("F", $first_day) == 'November') { $mese = 'Novembre'; $n = '11'; } elseif (date("F", $first_day) == 'December') { $mese = 'Dicembre'; $n = '12'; } //imposto le variabili per navigare negli anni $anno_dopo = $year + 1; $anno_prima = $year - 1; //ricevo da GET la variabile contenente il mese in visualizzazione $month = $_GET['month']; if ($month == ''){ $month = date("n"); } echo "\n<TR ALIGN='center'><TD BGCOLOR='#4682B4' ALIGN='left' CLASS='titoli'> ". "<img src=\"images/prev_month.gif\" border=0 title=\"Mese precedente\"> </TD>". "<TD COLSPAN=5 BGCOLOR='#4682B4' ALIGN='center' CLASS='corrente'>".$mese." ".$temp_yr."</TD>". "<TD BGCOLOR='#4682B4' ALIGN='right' CLASS='titoli'> ". "<img src=\"images/next_month.gif\" border=0 title=\"Mese Successivo\"> </TD></TR>"; echo "\n<TR ALIGN='center' CLASS='content'><TD CLASS='content' BGCOLOR=\"#87CEFA\">Dom</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Lun</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Mar</TD>"; echo "<TD CLASS='content' BGCOLOR=\"#87CEFA\">Mer</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Gio</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Ven</TD><TD CLASS='content' BGCOLOR=\"#87CEFA\">Sab</TD></TR>"; echo "<TR><TD COLSPAN=7> </TR><TR ALIGN='center'>"; $end = ($start_day > 4)? 6:5; //ciclo che mi scrive i giorni!! for ($row = 1; $row <= $end; $row++){ for ($col = 1; $col <= 7; $col++){ if ($dates[$row][$col] == '') $dates[$row][$col] = ' '; if (!strcmp($dates[$row][$col], ' ')) $count += 1; $t = $dates[$row][$col]; $var = $t.'/'.$mon.'/'.$year; //Controllo se la data è oggi la evidenzio if (($t == date("j")) && ($mon == date("n")) && ($year == date("Y"))){ echo "\n<TD CLASS='corrente' BGCOLOR=\"#4682B4\">"; echo "<a href=\"javascript:Selezionato('$var')\" TITLE=\"$var\">"; echo $t."</a></TD>"; }else{ //Se il giorno non c'è metto uno spazio echo "\n<TD CLASS='titoli' BGCOLOR=\"#87CEFA\">".(($t == " " )? "" :"<a href=\"javascript:Selezionato('$var')\" TITLE=\"$var\">".$t)."</a></TD>"; } }//fine for -colonne if (($row + 1) != ($end+1)) echo "</TR>\n<TR ALIGN='center'>"; else echo "</TR>"; }//fine for - righe echo "<TR><TD ALIGN=\"left\" BGCOLOR=\"#4682B4\"><a href=\"phpcalendar.php?month=$month&year=$anno_prima\" title=\"Anno precedente\"><img src=\"images/prev_year.gif\" border=0 title=\"Anno precedente\"></a></TD><TD COLSPAN=5 BGCOLOR=\"#4682B4\"></TD><TD ALIGN=\"right\" BGCOLOR=\"#4682B4\"><a href=\"phpcalendar.php?month=$month&year=$anno_dopo\" title=\"Anno Successivo\"><img src=\"images/next_year.gif\" border=0 title=\"Anno successivo\"></a></TD></TR>"; echo "\n</TABLE> "; /* echo $flag. ' - '; */ if ($flag == '1') echo "<A HREF=\"phpcalendar.php\" CLASS=\"content\">Visualizza il mese corrente</A></DIV>"; } //----------Main Loop----------- //Se il mese non è presente lo setto a quello corrente $month = (empty($month)) ? date("n") : $month; //Se l'anno non è presente lo setto a quello corrente $year = (empty($year)) ? date("Y") : $year; print_HTML_header(); print_calendar($month,$year); print_HTML_footer(); ?>
<script language="Javascript">
function Selezionato(data)
{
window.opener.document.form1.data.value = data;
window.close();
}
</script>
è quella che ti permette di mettere la data che hai selezionato nel campo data del tuo form (mi raccomando controlla i nomi dei campi). In questo caso naturalmente il calendario si deve aprire in una popUp, altrimenti non funziona.
![]()

Rispondi quotando