Calendario completamente in php

ClaudioMalorgio

Nuovo Utente
4 Ago 2010
15
0
0
34
Milano
www.malorgio.it
Ciao ragazzi.

Vi volevo postare un calendario php fatto interamente da me. Le peculiarità di tale calendario sono :
- Formattazione data italiana dd/mm/YY
- Abilitato per mese successivo e precedente
- Può inviare (tramite metodo post) il giorno , il mese e l'anno selezionati in una pagina in cui possono servire
- Fatto in php
- Sicuro e affidabile.

Spero vi possa essere utile

PHP:
<?php
// Classe calendario 
// Autore : Malorgio CLaudio Ludovico - Dalli Guido 
// Questa classe crea un calendario perpetuo che cliccando sul giorno selezionato manda in POST la data selezionata
// ShowCalendar(date("m"),date("Y")) per chiamare il calendario in qualsiasi pagina php

// Inizializzo funzione ShowCalendar passandogli MESE e ANNO 

function ShowCalendar($m,$y)
{		
	if(isset($_POST['dp'])){
		 	//echo 1;
		   $m = (int)date( "m" ,(int)$_POST['precedente']); 
		  // $m = date("m", strtotime($_POST['precedente'])) ;
		   $y = (int)date( "Y" ,(int)$_POST['precedente']);
		  // $m = date("Y", strtotime($_POST['precedente'])) ;
		   //echo $m;
		   //echo $y;
	  }
     elseif(isset($_POST['ds'])){
		 	 //echo 2;
		    $m = (int)date( "m" ,(int)$_POST['successivo']); 
		   // $m = date("m", strtotime($_POST['successivo'])) ;
		    $y = (int)date( "Y" ,(int)$_POST['successivo']);
		   // $m = date("Y", strtotime($_POST['successivo'])) ;
		  $m = $m;
   		  $y = $y;
		   //echo $m;
		   //echo $y;
	 }
	 elseif(isset($_POST['giorno'])){
		 $giorno = $_POST['giorno'];
	 }
	 else{
		 	//echo 3;
		   $m = $m;
		   $y = $y;
		    //echo $m;
		    //echo $y;
	 }	
	// Creo i tasti mese precedente e mese successivo
  $precedente = mktime(0, 0, 0, $m -1, 1, $y);
  //echo $precedente;
  $successivo = mktime(0, 0, 0, $m +1, 1, $y);
  //echo $successivo;

	// Array dei mesi 
  $nomi_mesi = array(
    "Gennaio",
    "Febbraio",
    "Marzo",
    "Aprile",
    "Maggio",
    "Giugno", 
    "Luglio",
    "Agosto",
    "Settembre",
    "Ottobre",
    "Novembre",
    "Dicembre"
  );
	// Array dei giorni
  $nomi_giorni = array(
    "Lun",
    "Mar",
    "Mer",
    "Gio",
    "Ven",
    "Sab",
    "Dom"
  );

	// Imposto le colonne del calendario
  $cols = 7;
  // Credo i giorni
  $days = @date("t",@mktime(0, 0, 0, $m, 1, $y)); 
  // Ricavo lunedi
  $lunedi= @date("w",@mktime(0, 0, 0, $m, 1, $y));
  // controllo del lunedi (Banale)
  if($lunedi==0) $lunedi = 7;
  // Inizializzo la tabella
  echo "<form  method=\"post\">\n";
  echo "<table>\n";
  echo "<tr>\n
  <td  id=\"td_calendario\" colspan=\"".$cols."\">
  <input type=\"submit\" id=\"form_calendario\" name=\"dp\" value=\"&lt&lt\"/>
  <input type=\"hidden\" name=\"precedente\" value=\"".$precedente."\"/>
  " . $nomi_mesi[$m-1] . " " . $y . "
  <input type=\"submit\" id=\"form_calendario\" name=\"ds\" value=\"&gt&gt\"/>
  <input type=\"hidden\" name=\"successivo\" value=\"".$successivo."\"/>
  </td>
  </tr>
  </table>
  </form>
  <form method=\"post\" action=\"index.php\">\n
  <table>
  <tr>\n";
  // ricavo i giorni con un for_each 
  foreach($nomi_giorni as $v)
  {
    echo "<td id=\"td_calendario\">".$v."</td>\n";
  }
  echo "</tr>";
	// Ciclo for che è il cuore della tabella molto scolastico ma preciso , mi crea la tabella tenendo conto dell incremento dei giorni e dei lunedi di ogni mese 
  for($j = 1; $j<$days+$lunedi; $j++)
  {
    if($j%$cols+1==0)
    {
      echo "<tr>\n";
    }
	// Controllo per vedere se devo riepire o meno delle celle 
    if($j<$lunedi)
    {
      echo "<td><input type=\"hidden\" name=\"anno\" value=\"".$y."\"/><input type=\"hidden\" name=\"mese\" value=\"".$m."\"/></td>\n";
    }else{
      $day= $j-($lunedi-1);
      $data = @strtotime(@date($y."-".$m."-".$day));
      $oggi = @strtotime(@date("Y-m-d"));
	 // Mando in post i giorni cosi posso passarli ad altre pagine se necessario
      if($data != $oggi)
      {
        echo "<td id=\"td_calendario\"><input id=\"form_calendario\" type=\"submit\" name=\"giorno\" value=\"".$day."\"/></td>";
      }else{
        echo "<td id=\"td_calendario\"><input id=\"oggi\" type=\"submit\" name=\"giorno\" value=\"".$day."\"/></td>";
      }
    }
	// Se le colonne sono finite chiudo 
    if($j%$cols==0)
    {
      echo "</tr>";
    }
  }
  // Chiudo la tabella e il form
  echo "<tr></tr>";
  echo "</table>";
  echo "</form>";  
  
}
?>

Ancora lo sto utilmando ben accetti commenti e critiche :cool:
 

Discussioni simili