Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Auteur : 10-nice
Version : 17/01/2006
Afficher un calendrier
<?php
//Creating general vars
$year = date("Y");
if(!isset($_GET['month'])) $monthnb = date("n");
else {
    $monthnb = $_GET['month'];
    $year = $_GET['year'];
    if($monthnb <= 0) {
        $monthnb = 12;
        $year = $year - 1;
    }
    elseif($monthnb > 12) {
        $monthnb = 1;
        $year = $year + 1;
    }
}
$day = date("w");
$nbdays = date("t", mktime(0,0,0,$monthnb,1,$year));
$firstday = date("w",mktime(0,0,0,$monthnb,1,$year));

//Replace the number of the day by its french name
$daytab[1] = 'Lu';
$daytab[2] = 'Ma';
$daytab[3] = 'Me';
$daytab[4] = 'Je';
$daytab[5] = 'Ve';
$daytab[6] = 'Sa';
$daytab[7] = 'Di';

//Build the calendar table
$calendar = array();
$z = (int)$firstday;
if($z == 0) $z =7;
for($i = 1; $i <= ($nbdays/5); $i++){
    for($j = 1; $j <= 7 && $j-$z+1+(($i*7)-7) <= $nbdays; $j++){
        if($j < $z && ($j-$z+1+(($i*7)-7)) <= 0){
                $calendar[$i][$j] = null;
        }
        else {
            $calendar[$i][$j] = $j-$z+1+(($i*7)-7);            
        }
    }
}

//Replace the number of the month by its french name
switch($monthnb) {
    case 1: $month = 'Janvier'; break;
    case 2: $month = 'Fevrier'; break;
    case 3: $month = 'Mars'; break;
    case 4: $month = 'Avril'; break;
    case 5: $month = 'Mai'; break;
    case 6: $month = 'Juin'; break;
    case 7: $month = 'Juillet'; break;
    case 8: $month = 'Août'; break;
    case 9: $month = 'Septembre';    break;
    case 10: $month = 'Octobre'; break;
    case 11:    $month = 'Novembre';    break;
    case 12:    $month = 'Décembre';    break;
}
?>
<div id="calendrier">
    <table>
        <tr>
            <th><span class="linkcal"><a href="index.php?month=<?php echo $monthnb - 1; ?>&year=<?php echo $year; ?>"><<</a></span></th>
            <th colspan="5" class="headcal"><?php echo($month.' '.$year);  ?></th>
            <th><span class="linkcal"><a href="index.php?month=<?php echo $monthnb + 1; ?>&year=<?php echo $year; ?>">>></a></span></th>
        </tr>
        <?php
            echo('<tr>');
            for($i = 1; $i <= 7; $i++){
                echo('<th>'.$daytab[$i].'</th>');
            }
            echo('</tr>');
            for($i = 1; $i <= count($calendar); $i++) {
                echo('<tr>');
                for($j = 1; $j <= 7 && $j-$z+1+(($i*7)-7) <= $nbdays; $j++){
                    if($j-$z+1+(($i*7)-7) == date("j") && $monthnb == date("n") && $year == date("Y")) echo('<th class="current">'.$calendar[$i][$j].'</th>');
                    else echo('<th>'.$calendar[$i][$j].'</th>');
                }
                echo('</tr>');
            }
        ?>
    </table>
</div>

Auteur : SnakemaN
Version : 27/07/2006
Calcul d'une durée
C'est un formulaire permettant la saisie de deux heures, puis calcul la différence entre les deux quelques soit la difference dans le temps.
<?php
/************************************************************************************
* COde PHP montrant un peu la gestion des Dates en Heures en php                    *
* notament le calcul entre deux heures indifferement dans le temps,                 *
* heure 1 peut etre plus tôt ou plus tard que heure 2 et inversement, le script     *
* fera le calcul suivant un journée de 24h                                          *
* Notes :      Le format utilisé est le format 24h avec  hh:mm:ss                   *
*                   mais on peut le changer facilement ;p                           *
*                                                                                   *
*@author =)C!S(=_SnaKemaN                                                           *
*@version 1.0                                                                       *
*@version 1.2  + Contrôle des variable super-globale (php 4.3.10 oblige...)         *
************************************************************************************/
//Controle des valeurs, c'est certes aberrant mais c'est un exemple apres vous gerez
//comme vous voulez
if(isset($_POST['heure1']))
$my_strh1=$_POST['heure1'];
else
$_POST['heure1'] = "00-00-00";

if(isset($_POST['heure2']))
$my_strh2=$_POST['heure2'];
else
$_POST['heure2'] = "00-00-00";

if(!isset($h3))
$h3 = 0;

echo "<TABLE cellpadding=5 cellspacing=0 align=center border=1>";
            echo "<TR>";
                  echo "<TD>";
                  //note Changer le "action" pour avoir le nom de votre page ou se fera le traitement
                  echo "<FORM method=\"POST\" name=\"mf\" action=\"./calcul_date.php\">";
                        echo "<TABLE cellpadding=5 cellspacing=0 align=center border=1>";
                              echo "<TR>";
                                    echo "<TD><strong>Heure 1:</strong></TD>";
                                    //Une heure est deja présaisie pour faciliter le test
                                    echo "<TD><INPUT type\"text\" name=\"heure1\" value=\"07:00:00\"></TD>";
                              echo "</TR>";
                              echo "<TR>";
                                    echo "<TD><strong>Heure 2 :</strong></TD>";
                                    //Une heure est deja présaisie pour faciliter le test
                                    echo "<TD><INPUT type\"text\" name=\"heure2\" value=\"17:00:00\"></TD>";
                              echo "</TR>";
                              echo "<TR>";
                                    echo "<TD colspan=2 align=center>";
                                    echo "<INPUT type=\"submit\" name=\"go\" value=\"Valider\">";
                              echo "</TD>";
                              echo "</TR>";
                        echo "</TABLE>";
                  echo "</FORM>";
                  echo "</TD>";
                  echo "<TD>";
                  echo "<strong>Date et heure courante :</strong><br>";
                  echo date('d/m/Y @ H:i:s',time());
                  echo "<br>";
                  echo "</TD>";
                  echo "<TD>";
                  $my_strh1=$_POST['heure1'];
                  $my_strh2=$_POST['heure2'];
                  //Conversion des heures en TimeStamp
                  $h1=strtotime($my_strh1);
                  $h2=strtotime($my_strh2);
                  //Si la deuxieme heure est bien plus tard que la premiere
                  if($h2 > $h1)
                  {$h3=($h2-$h1);
                  }
                  //Si c'est la premiere heure qui est plus tard que la deuxieme
                  if($h1 > $h2)
                  {$h3=86400-($h1-$h2)-3600;
                  }
                  echo "<strong>Heure 1 :</strong>".$my_strh1."<br>";
                  @$date1 = getdate($h1);
                  //Controle du format de l'heure h 00 < hh < 24 ; 00 < mm < 59 ; 00 < ss < 59
                  if($h1 == -1 ){
                  echo "Heure_1 incorrecte ! <br>";
                  }else{
                  echo "Heure_1 OK <br>";
                                                      
                  echo "<strong>Heure 2 :</strong>".$my_strh2."<br>";
                  //Controle du format de l'heure h 00 < hh < 24 ; 00 < mm < 59 ; 00 < ss < 59
                  @$date2 = getdate($h2);
                  if($h2 == -1 ){
                  echo "Heure_2 incorrecte ! <br>";
                  }else{
                  echo "Heure_2 OK <br>";
                  
                  echo "<strong>Valeur de h1 :</strong>".$h1."<br>";
                  echo "<strong>Valeur de h2 :</strong>".$h2."<br>";
                  $h3=$h3-3600;//Retrait d'une heure de decalage o_O
                  echo "<strong>Valeur de h3 :</strong>".$h3."<br>";
                  echo "<strong>Decalage heure :</strong>";
                  //reconversion du timestamp en heure préformatée (ici H M)
                  echo strftime("%H:%M",$h3);
                  }//Fin if else heure 2
                  }//Fin if else heure 1
                  echo "<br>";
                  echo "</TD>";
                  //Et vouala ^_^
            echo "</TR>";
echo "</TABLE>";
?>

Auteur : Yogui
Auteur : BrYs
Version : 24/11/2006
Gestion d'un calendrier avec les jours fériés
<?php   
  function joursFeries($months, $years)
  {  
    // Pour avoir tous les jours feries de l'annee,  
    // passez un tableau de mois : joursFeries(range(1, 12), 2006);  
    // Pour les avoir sur plusieurs annees,  
    // passez un tableau d'années : joursFeries(range(1, 12), array(2000, 2002, 2006));   
    // Appel récursif pour les années  
    if(!is_array($years))  
    {  
      $year = $years; 
    }  
    else  
    {  
      $days['years'] = array(); 
      foreach($years as $year)  
      {  
        $days['years'][$year] = joursFeries($months, $year); 
      }  
      return $days; 
    }   
    // Appel récursif pour les mois  
    if(!is_array($months))  
    {  
      $month = $months; 
    }  
    else  
    {  
      $days[$year]['months'] = array(); 
      foreach($months as $month)  
      {  
        $days[$year]['months'][$month] = joursFeries($month, $year); 
      }  
    }   
    // En cas d'erreur  
    if(mktime(0, 0, 0, $month, 1, $year) == -1)  
    {  
      return FALSE; 
    }     
    // Calcul des jours fériés pour un seul mois  
    list($month, $year) = explode('-', date('m-Y', mktime(0, 0, 0, $month, 1, $year))); 
    $year = intval($year); 
    $month = intval($month);   
    // une constante  $jour = 3600*24;   
    // calcul paques  
    $G = $year % 19; 
    $C = intval($year / 100); 
    $H = intval($C - ($C / 4) - ((8*$C+13) / 25) + 19*$G + 15) % 30; 
    $I = intval($H) - intval($H / 28)*(1 - intval($H / 28)*intval(29 / ($H +1))*(intval(21 - $G) / 11)); 
    $J = ($year + intval($year/4) + $I + 2 - $C + intval($C/4)) % 7; 
    $L = $I - $J; 
    $m = 3 + intval(($L + 40) / 44); 
    $d = $L + 28 - 31 * (intval($m / 4)); 
    $date_paques = mktime(0, 0, 0, $m, $d, $year);   
    // quelques fetes mobiles  
    $paques = array(  'mois' => date( "n", $date_paques + 1 * $jour), 'jour' => date( "j", $date_paques + 1 * $jour), 'nom' => 'Lundi de Pâques'  );   
    $ascension = array(  'mois' => date( "n", $date_paques + 39 * $jour), 'jour' => date( "j", $date_paques + 39 * $jour), 'nom' => "Jeudi de l'ascension"  );   
    $vendredi_saint = array(  'mois' => date( "n", $date_paques - 2 * $jour), 'jour' => date( "j", $date_paques - 2 * $jour), 'nom' => 'Vendredi Saint (Alsace)'  );   
    $pentecote = array(  'mois' => date( "n", $date_paques + 50 * $jour), 'jour' => date( "j", $date_paques + 50 * $jour), 'nom' => 'Lundi de Pentecôte'  );   
    // France  
    $feries = array();   
    $feries[1] = array(  1 => "Jour de l'an"  );   
    $feries[5] = array(  1 => 'Fête du travail', 8 => 'Armistice 39-45'  );   
    $feries[7] = array(  14 => 'Fête nationale'  );   
    $feries[8] = array(  15 => 'Assomption'  );   
    $feries[11] = array(  1 => 'Toussaint', 11 => 'Armistice'  );   
    $feries[12] = array(  25 => 'Noël', 26 => 'Lendemain de Noël (Alsace seulement)'  );   
    $feries[$paques['mois']] = array(  $paques['jour'] => $paques['nom']  );   
    $feries[$pentecote['mois']] = array(  $pentecote['jour'] => $pentecote['nom']  );   
    $feries[$ascension['mois']] = array(  $ascension['jour'] => $ascension['nom']  );   
    $feries[$paques['mois']] = array(  $paques['jour'] => $paques['nom']  );   
    ksort($feries); return $feries; 
  }   
  
  if(function_exists('date_default_timezone_set')) 
  {  
    date_default_timezone_set('Europe/Paris'); 
  }   
  echo '<pre>'; 
  $mois = range(1, 12); 
  $annees = array(2000, 2002, 2006); 
  print_r(joursFeries($mois, $annees)); 
  echo '</pre>';   
?>

precedent    sommaire    suivant   

Consultez les autres pages sources


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com