begin process at 2010 02 10 16:34:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > CALENDRIER : ASSISTANT DE SAISIE DE DATE DANS UN FORMULAIRE

CALENDRIER : ASSISTANT DE SAISIE DE DATE DANS UN FORMULAIRE


 Information sur la source

Note :
8,25 / 10 - par 8 personnes
8,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :calendrier, date, formulaire Niveau :Initié Date de création :14/03/2005 Date de mise à jour :26/07/2005 18:10:25 Vu / téléchargé :38 588 / 3 968

Auteur : arnal69130

Ecrire un message privé
Site perso
Commentaire sur cette source (63)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Calendrier complet, avec interaction dans un formulaire. Très simple à utiliser :
Un formulaire php (index.php) avec 2 listes déroulantes (jours et mois) et un lien pour ouvrir le calendrier en popup (calend.php). En cliquant sur un jour du calendrier, les champs sont automatiquement mis à jour.
J'utilises pas mal de javascript.
Testé sous IE et FireFox.

Arn;o)

Source

  • <?php /*************** INDEX.PHP ****************/
  • function Mois_fr($mon) //retourne le mois en lettre en français
  • { setlocale(LC_TIME,""); return ucfirst(strftime("%B",strtotime("2002".sprintf("%02d",$mon)."01"))); }
  • //mois et année actuels
  • $anR=date("Y");
  • $mm=date("m");
  • //liste des jours du mois
  • $chListJ='';
  • for ($i=1; $i<=31; $i++) $chListJ.=sprintf("<option>%02d</option>",$i);
  • //liste des mois de la période
  • $chListM='<optgroup label="'.$anR.'">';
  • for ($m=1; $m<=24; $m++)
  • {
  • if ($mm==13) { $mm=1; $anR++; $chListM.= '</optgroup><optgroup label="'.$anR.'">';}
  • $chListM.= '<option value="'.sprintf("%02d",$mm).$anR.'">'.Mois_fr($mm).' '.$anR.'</option>';
  • $mm++;
  • }
  • $chListM.= '</optgroup>';
  • ?>
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//FR" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  • <head>
  • <title>Choix date</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  • <style type="text/css">
  • form {
  • border-style:ridge;
  • border-width:2px;
  • padding:10px;
  • margin:10px;
  • width:180px;
  • position:absolute;
  • }
  • label {
  • font-family:Arial,sans-serif;
  • font-size:9pt;
  • position:absolute;
  • top:-10px;
  • left:2px;
  • background-color:white;
  • padding:1px;
  • }
  • #listJour {
  • font-size:10px;
  • height:16px;
  • }
  • #listMois {
  • font-size:10px;
  • height:16px;
  • width:110px;
  • }
  • #imgCalend {
  • border-width:0px;
  • position:relative;
  • top:4px;
  • }
  • </style>
  • <script type="text/javascript">
  • //ouverture popup
  • function Calendrier(dated)
  • {
  • var h=133; var w=130;
  • var chParam="resizable=no, location=no, menubar=no, directories=no, scrollbars=no, status=no, ";
  • chParam+='width='+w+', height='+h+', left=200, top=270';
  • FenCalend=window.open('calend.php?d='+dated, 'FenCalend', chParam);
  • }
  • //remplissage de la liste des jours en fonction du mois sélectionné dans la liste
  • function AffNbj()
  • {
  • var m=document.getElementById("listMois").options[document.getElementById("listMois").selectedIndex].value;
  • var d = new Date(m.substr(2,4),m.substr(0,2),0);
  • var nbj=d.getDate();
  • var i,j,o,sel;
  • sel=document.getElementById("listJour").options.selectedIndex;
  • //vidage de la liste
  • document.getElementById("listJour").length=0;
  • for (i=1;i<=nbj;i++)
  • {
  • j=i.toString();
  • if (j.length<2) { j="0"+j; }
  • //création des options
  • o=new Option(j,j);
  • document.getElementById("listJour").options[document.getElementById("listJour").options.length]=o;
  • }
  • //sélection du jour en cours
  • if ( (sel>0) && (document.getElementById("listJour").options[sel]) )
  • { document.getElementById("listJour").options[sel].selected = 1; }
  • }
  • //cherche et sélectionne la date du jour dans les listes
  • function dateDansListe()
  • {
  • d=new Date();
  • Mois=1+d.getMonth();
  • chM=Mois.toString();
  • if (chM.length<2) { chM="0"+chM; }
  • An=d.getFullYear();
  • ch=chM+An.toString();
  • i=0;
  • while(ch!=document.getElementById("listMois").options[i].value)
  • { i++; }
  • j=d.getDate();
  • if (document.getElementById("listMois").options[i]) document.getElementById("listMois").options[i].selected = 1;
  • if (document.getElementById("listJour").options[j-1]) document.getElementById("listJour").options[j-1].selected = 1;
  • AffNbj();
  • }
  • </script>
  • </head>
  • <body>
  • <!-- formulaire -->
  • <form name="formInsert" id="formInsert" method="post" action="index.php">
  • <label for="listJour">Choix de date</label>
  • <select id="listJour" name="listJour"><?php echo $chListJ;?></select>
  • <select id="listMois" name="listMois"><?php echo $chListM;?></select>
  • <a class="lienCal" id="Calend" href="#" title="Calendrier">
  • <img id="imgCalend" src="BCalend.gif" alt="Calendrier" /></a>
  • </form>
  • <script type="text/javascript">
  • AffNbj();
  • dateDansListe();
  • //le champ jour se rafraichit automatiquement à la sélection d'un mois
  • document.getElementById("listMois").onchange=function () { AffNbj(); }
  • //lien calendrier
  • document.getElementById("Calend").onclick=function()
  • {
  • j=document.getElementById('listJour').selectedIndex+1;
  • j=j.toString();
  • if (j.length<2) { j="0"+j; }
  • m=document.getElementById('listMois').value.toString();
  • d=m.substr(2,4)+m.substr(0,2)+j;
  • //on passe en paramètre la date en cours
  • Calendrier(d);
  • }
  • </script>
  • </body>
  • </html>
  • <?php /*************** CALEND.PHP ****************/
  • function Mois_fr($mon) //retourne le mois en lettre en français
  • { setlocale(LC_TIME,""); return ucfirst(strftime("%B",strtotime("2002".sprintf("%02d",$mon)."01"))); }
  • //lecture de la date passée en paramamètre
  • //à l'ouverture de la popup, la date est passé en get
  • //lors du rechargement de la page elle est passée en post
  • if (empty($_GET["d"]))
  • {
  • if (empty($_POST))
  • { $d=date("Ymd"); }
  • else
  • {
  • $m=$_POST["Mois"];
  • $d=substr($m,2,4).substr($m,0,2).$_POST["jour"];
  • }
  • }
  • else { $d=$_GET["d"]; }
  • //lecture des jour, mois, année, nb jours du mois, et jour dans la semaine du 1er du mois
  • $jour=substr($d,6,2); $mois=substr($d,4,2); $an=substr($d,0,4);
  • $nbj=strftime("%d",mktime(8,0,0,$mois+1,0,$an));
  • $d1j=strftime("%w",strtotime($an.$mois."01"));
  • if ($d1j==0) $d1j=7;
  • //mois et année actuels
  • $anR=date("Y");
  • $mm=date("m");
  • //liste des mois de la période
  • $chListM='<optgroup label="'.$anR.'">';
  • for ($m=1; $m<=24; $m++)
  • {
  • if ($mm==13) { $mm=1; $anR++; $chListM.= '</optgroup><optgroup label="'.$anR.'">';}
  • $chListM.= '<option value="'.sprintf("%02d",$mm).$anR.'">'.Mois_fr($mm).' '.$anR.'</option>';
  • $mm++;
  • }
  • $chListM.= '</optgroup>';?>
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//FR" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  • <head>
  • <title>CALENDRIER</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  • <style type="text/css">
  • body { margin:1px; }
  • form { margin:0px; padding:0px; }
  • .Jsem { background-color:#9DCCDB; width:14.29%; font-size:10px; font-weight:normal; }
  • .cellCal { font-size:10px; background-color:white }
  • #tablCalend { font-size:10; font-family:Arial; text-align:center; width:100%; background-color:#000000; }
  • #Mois { font-size:10px; width:130px; }
  • a.lienCal { text-decoration:none; font-weight:normal; }
  • a.lienCal:link { color:#000000; }
  • a.lienCal:visited { color:#000000; }
  • a.lienCal:hover { color:#0000E0; }
  • a.lienCal:active { color:#0000E0; }
  • a.lienCal:focus { color:#0000E0; }
  • a.lienCal1 { text-decoration:none; font-weight:normal; }
  • a.lienCal1:link { color:#FF0000; }
  • a.lienCal1:visited { color:#FF0000; }
  • a.lienCal1:hover { color:#CC00FF; }
  • a.lienCal1:active { color:#CC00FF; }
  • a.lienCal1:focus { color:#CC00FF; }
  • a:link { color:#000000; }
  • a:visited { color:#000000; }
  • a:hover { color:#0000E0; }
  • a:active { color:#0000E0; }
  • a:focus { color:#0000E0; }
  • </style>
  • <script type="text/javascript"><!--
  • function clavier(n) //Echap => ferme la popup
  • {if (n==27) {this.close();} }
  • function lien(j) //lien qui sélectionne la date dans le formulaire de la fenêtre appelante
  • {
  • window.opener.document.getElementById('listMois').options[document.getElementById('Mois').selectedIndex].selected = 1;
  • window.opener.AffNbj('');
  • window.opener.document.getElementById('listJour').options[j].selected = 1;
  • window.close();
  • }
  • --></script>
  • </head>
  • <body onkeydown="clavier(event.keyCode);">
  • <form method="post" name="formMois" action="calend.php">
  • <input type="hidden" name="jour" value="<?php echo $jour;?>" />
  • <select name="Mois" id="Mois" onchange="document.formMois.submit();"><?php echo $chListM;?></select>
  • </form>
  • <!-- tableau -->
  • <table id="tablCalend" cellspacing="1">
  • <tr>
  • <?php //ligne d'entête
  • for ($i=1; $i<=7; $i++)
  • { echo '<th class="Jsem">',substr(ucfirst(strftime("%A",strtotime("200408".sprintf("%02d",$i+1)))),0,2),'</th>'; }
  • echo '</tr>';
  • $j=0;
  • $jsem=0;
  • //construction du tableau
  • for ($c=1; $c<=42; $c++) //il peut y avoir 6 semaines dans un mois (cf mai 2005) => 6*7=42 cases
  • {
  • if (fmod(($c-1),7)==0) { echo '<tr>'; } //si colonne précédente multiple de 7 => nouvelle ligne
  • $jsem++;//jour de la semaine
  • echo '<td class="cellCal" id="cell',$c,'">';
  • if ($c==$d1j) { $j=1; }
  • $jj=sprintf("%02d",$j);
  • if ($c >= $d1j)//jour dans la semaine du 1er du mois
  • {
  • if ($j<=$nbj)//nb jours du mois
  • {
  • $titre=ucfirst(strftime("%A",strtotime("200408".sprintf("%02d",$jsem+1))))." $jj/$mois/$an";
  • echo '<a title="',$titre,'" href="javascript:lien(',($j-1),');" class="lienCal',($j==$jour),'">',$j,'</a>';
  • }
  • else { echo '<br />'; }
  • $j++;
  • }
  • echo '</td>';
  • if (fmod($c,7)==0) { echo '</tr>'; $jsem=0; } //si colonne en cours multiple de 7 => fin de ligne
  • }
  • echo '</table>';
  • echo '<script type="text/javascript">';//recherche le mois en cours et le sélectionne dans la liste
  • echo 'var i=0;';
  • echo 'while(document.getElementById("Mois").options[i].value!="',$mois,$an,'") {i++;}';
  • echo 'document.getElementById("Mois").options[i].selected = 1;';
  • echo 'document.getElementById("Mois").focus();';
  • echo '</script>';?>
  • </body>
  • </html>
<?php /*************** INDEX.PHP ****************/ 
function Mois_fr($mon) //retourne le mois en lettre en français 
{ setlocale(LC_TIME,""); return ucfirst(strftime("%B",strtotime("2002".sprintf("%02d",$mon)."01"))); } 

//mois et année actuels 
$anR=date("Y"); 
$mm=date("m"); 

//liste des jours du mois 
$chListJ=''; 
for ($i=1; $i<=31; $i++) $chListJ.=sprintf("<option>%02d</option>",$i); 

//liste des mois de la période 
$chListM='<optgroup label="'.$anR.'">'; 
for ($m=1; $m<=24; $m++) 
{ 
     if ($mm==13) { $mm=1; $anR++; $chListM.= '</optgroup><optgroup label="'.$anR.'">';} 
     $chListM.= '<option value="'.sprintf("%02d",$mm).$anR.'">'.Mois_fr($mm).' '.$anR.'</option>'; 
     $mm++; 
} 
$chListM.= '</optgroup>'; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//FR" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
<head> 
    <title>Choix date</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <style type="text/css"> 
      form { 
        border-style:ridge; 
        border-width:2px; 
        padding:10px; 
        margin:10px; 
        width:180px; 
        position:absolute; 
        } 
      label { 
        font-family:Arial,sans-serif; 
        font-size:9pt; 
        position:absolute; 
        top:-10px; 
        left:2px; 
        background-color:white; 
        padding:1px; 
       } 
      #listJour { 
        font-size:10px; 
        height:16px; 
        } 
      #listMois { 
        font-size:10px; 
        height:16px; 
        width:110px; 
        } 
      #imgCalend { 
        border-width:0px; 
        position:relative; 
        top:4px; 
        } 
    </style> 
    <script type="text/javascript"> 
      //ouverture popup 
      function Calendrier(dated) 
      { 
       var h=133; var w=130; 
       var chParam="resizable=no, location=no, menubar=no, directories=no, scrollbars=no, status=no, "; 
       chParam+='width='+w+', height='+h+', left=200, top=270'; 
       FenCalend=window.open('calend.php?d='+dated, 'FenCalend', chParam); 
      } 

      //remplissage de la liste des jours en fonction du mois sélectionné dans la liste 
      function AffNbj() 
      { 
       var m=document.getElementById("listMois").options[document.getElementById("listMois").selectedIndex].value; 
       var d = new Date(m.substr(2,4),m.substr(0,2),0); 
       var nbj=d.getDate(); 
       var i,j,o,sel; 
       sel=document.getElementById("listJour").options.selectedIndex; 
       //vidage de la liste 
       document.getElementById("listJour").length=0; 
       for (i=1;i<=nbj;i++) 
       { 
          j=i.toString(); 
          if (j.length<2) { j="0"+j; } 
          //création des options 
          o=new Option(j,j); 
          document.getElementById("listJour").options[document.getElementById("listJour").options.length]=o; 
       } 
       //sélection du jour en cours 
       if ( (sel>0) && (document.getElementById("listJour").options[sel]) ) 
       { document.getElementById("listJour").options[sel].selected = 1; } 
      } 

      //cherche et sélectionne la date du jour dans les listes 
      function dateDansListe() 
      { 
          d=new Date(); 
          Mois=1+d.getMonth(); 
          chM=Mois.toString(); 
          if (chM.length<2) { chM="0"+chM; } 
          An=d.getFullYear(); 
          ch=chM+An.toString(); 
          i=0; 
          while(ch!=document.getElementById("listMois").options[i].value) 
          { i++; } 
          j=d.getDate(); 
          if (document.getElementById("listMois").options[i]) document.getElementById("listMois").options[i].selected = 1; 
          if (document.getElementById("listJour").options[j-1]) document.getElementById("listJour").options[j-1].selected = 1; 
          AffNbj(); 
      } 
    </script> 
</head> 
<body> 
    <!-- formulaire --> 
    <form name="formInsert" id="formInsert" method="post" action="index.php"> 
      <label for="listJour">Choix de date</label> 
      <select id="listJour" name="listJour"><?php echo $chListJ;?></select> 
      <select id="listMois" name="listMois"><?php echo $chListM;?></select> 
      <a class="lienCal" id="Calend" href="#" title="Calendrier"> 
      <img id="imgCalend" src="BCalend.gif" alt="Calendrier" /></a> 
    </form> 
    <script type="text/javascript"> 
    AffNbj(); 
    dateDansListe(); 
    //le champ jour se rafraichit automatiquement à la sélection d'un mois 
    document.getElementById("listMois").onchange=function () { AffNbj(); } 
    //lien calendrier 
    document.getElementById("Calend").onclick=function() 
    { 
        j=document.getElementById('listJour').selectedIndex+1; 
        j=j.toString(); 
        if (j.length<2) { j="0"+j; } 
        m=document.getElementById('listMois').value.toString(); 
        d=m.substr(2,4)+m.substr(0,2)+j; 
        //on passe en paramètre la date en cours 
        Calendrier(d); 
    } 
    </script> 
</body> 
</html> 
<?php /*************** CALEND.PHP ****************/ 
function Mois_fr($mon) //retourne le mois en lettre en français 
{ setlocale(LC_TIME,""); return ucfirst(strftime("%B",strtotime("2002".sprintf("%02d",$mon)."01"))); } 

//lecture de la date passée en paramamètre 
//à l'ouverture de la popup, la date est passé en get 
//lors du rechargement de la page elle est passée en post 
if (empty($_GET["d"])) 
{ 
    if (empty($_POST)) 
    { $d=date("Ymd"); } 
    else 
    { 
        $m=$_POST["Mois"]; 
        $d=substr($m,2,4).substr($m,0,2).$_POST["jour"]; 
    } 
} 
else { $d=$_GET["d"]; } 

//lecture des jour, mois, année, nb jours du mois, et jour dans la semaine du 1er du mois 
$jour=substr($d,6,2); $mois=substr($d,4,2); $an=substr($d,0,4); 
$nbj=strftime("%d",mktime(8,0,0,$mois+1,0,$an)); 
$d1j=strftime("%w",strtotime($an.$mois."01")); 
if ($d1j==0) $d1j=7; 

//mois et année actuels 
$anR=date("Y"); 
$mm=date("m"); 

//liste des mois de la période 
$chListM='<optgroup label="'.$anR.'">'; 
for ($m=1; $m<=24; $m++) 
{ 
     if ($mm==13) { $mm=1; $anR++; $chListM.= '</optgroup><optgroup label="'.$anR.'">';} 
     $chListM.= '<option value="'.sprintf("%02d",$mm).$anR.'">'.Mois_fr($mm).' '.$anR.'</option>'; 
     $mm++; 
} 
$chListM.= '</optgroup>';?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//FR" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> 
<head> 
    <title>CALENDRIER</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <style type="text/css"> 
     body { margin:1px; } 
     form { margin:0px; padding:0px; } 
     .Jsem { background-color:#9DCCDB; width:14.29%; font-size:10px; font-weight:normal; } 
     .cellCal { font-size:10px; background-color:white } 
     #tablCalend { font-size:10; font-family:Arial; text-align:center; width:100%; background-color:#000000; } 
     #Mois { font-size:10px; width:130px; } 
     a.lienCal { text-decoration:none; font-weight:normal; } 
     a.lienCal:link { color:#000000; } 
     a.lienCal:visited { color:#000000; } 
     a.lienCal:hover { color:#0000E0; } 
     a.lienCal:active { color:#0000E0; } 
     a.lienCal:focus { color:#0000E0; } 
     a.lienCal1 { text-decoration:none; font-weight:normal; } 
     a.lienCal1:link { color:#FF0000; } 
     a.lienCal1:visited { color:#FF0000; } 
     a.lienCal1:hover { color:#CC00FF; } 
     a.lienCal1:active { color:#CC00FF; } 
     a.lienCal1:focus { color:#CC00FF; } 
     a:link { color:#000000; } 
     a:visited { color:#000000; } 
     a:hover { color:#0000E0; } 
     a:active { color:#0000E0; } 
     a:focus { color:#0000E0; } 
    </style> 
    <script type="text/javascript"><!-- 
     function clavier(n) //Echap => ferme la popup 
     {if (n==27) {this.close();} } 

     function lien(j) //lien qui sélectionne la date dans le formulaire de la fenêtre appelante 
     { 
        window.opener.document.getElementById('listMois').options[document.getElementById('Mois').selectedIndex].selected = 1; 
        window.opener.AffNbj(''); 
        window.opener.document.getElementById('listJour').options[j].selected = 1; 
        window.close(); 
     } 
    --></script> 
</head> 
<body onkeydown="clavier(event.keyCode);"> 
<form method="post" name="formMois" action="calend.php"> 
<input type="hidden" name="jour" value="<?php echo $jour;?>" /> 
<select name="Mois" id="Mois" onchange="document.formMois.submit();"><?php echo $chListM;?></select> 
</form> 
<!-- tableau --> 
<table id="tablCalend" cellspacing="1"> 
<tr> 
<?php //ligne d'entête 
for ($i=1; $i<=7; $i++) 
{ echo '<th class="Jsem">',substr(ucfirst(strftime("%A",strtotime("200408".sprintf("%02d",$i+1)))),0,2),'</th>'; } 
echo '</tr>'; 
$j=0; 
$jsem=0; 
//construction du tableau 
for ($c=1; $c<=42; $c++) //il peut y avoir 6 semaines dans un mois (cf mai 2005) => 6*7=42 cases 
{ 
     if (fmod(($c-1),7)==0) { echo '<tr>'; } //si colonne précédente multiple de 7 => nouvelle ligne 
     $jsem++;//jour de la semaine 
     echo '<td class="cellCal" id="cell',$c,'">'; 
     if ($c==$d1j) { $j=1; } 
     $jj=sprintf("%02d",$j); 
     if ($c >= $d1j)//jour dans la semaine du 1er du mois 
     { 
        if ($j<=$nbj)//nb jours du mois 
        { 
            $titre=ucfirst(strftime("%A",strtotime("200408".sprintf("%02d",$jsem+1))))." $jj/$mois/$an"; 
            echo '<a title="',$titre,'" href="javascript:lien(',($j-1),');" class="lienCal',($j==$jour),'">',$j,'</a>'; 
        } 
        else { echo '<br />'; } 
        $j++; 
     } 
     echo '</td>'; 
     if (fmod($c,7)==0) { echo '</tr>'; $jsem=0; } //si colonne en cours multiple de 7 => fin de ligne 
} 
echo '</table>'; 
echo '<script type="text/javascript">';//recherche le mois en cours et le sélectionne dans la liste 
echo 'var i=0;'; 
echo 'while(document.getElementById("Mois").options[i].value!="',$mois,$an,'") {i++;}'; 
echo 'document.getElementById("Mois").options[i].selected = 1;'; 
echo 'document.getElementById("Mois").focus();'; 
echo '</script>';?> 
</body> 
</html> 

 Conclusion

Le formulaire est à aranger à votre goût !
N'hésitez pas à poster vos commentaires.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

15 mars 2005 18:09:14 :
Suite aux conseils de stpibou : - Remplacement des ' par des " dans les balises html - ajout de commentaires - clarification de l'alternance php / js ?
25 mars 2005 12:19:20 :
Correction syntaxe echo. Petite mise en forme du formulaire
25 mars 2005 12:24:02 :
ajout NB dans la présentation.
11 juillet 2005 10:29:57 :
Suppression du NB de l'intro car les fonctions js Date() et getDate() s'affichent maintenant bien avec un «d» majuscule.
26 juillet 2005 18:10:25 :
ajout de l'image BCalend.gif dans le zip

 Sources du même auteur

Source avec une capture HACHURES
Source avec une capture "LA PAGE NE PEUX PAS ÊTRE ACTUALISÉE SANS LE RENVOI D'INFORM...
PRÉCHARGER TOUTES LES IMAGES D'UN RÉPERTOIRE
Source avec Zip Source avec une capture DÉGRADÉ

 Sources de la même categorie

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER DES RÉSERVATIONS EN PHP par mathieubond
Source avec Zip GÉNÉRATEUR DE DATE DANS TOUTES LES LANGUES DU MONDE EN (PHP)... par abdelaziz_info
CALCULER LA PHASE DE LA LUNE - MOON PHASE par CristianCCDB
Source avec Zip Source avec une capture UN CALENDRIER SOUS LA FORME D'UN TABLEAU par d54

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALENDRIER + AGENDA TRÈS SIMPLE (GERER LES JOURS FÉRIÉS ET L... par mondherclubiste
Source avec Zip Source avec une capture CALENDRIER par pichpoich
CALCUL SIMPLE DU NOMBRE DE JOURS OUVRÉS ENTRE DEUX DATES (JO... par Astemius
CLASS CALENDRIER AVEC AFFICHAGE D'UN INTERVALE DE JOURS DÉFI... par caviar
Source avec Zip Source avec une capture GÉNÉRATEUR D'IMAGES GIF AFFICHANT UN CALENDRIER TYPE FEUILLE... par webrunner

Commentaires et avis

Commentaire de stepibou le 14/03/2005 20:57:47

hello arnal,

ca continue en php à ce que je vois,
c'est bien.

tu t'y connais pas mal en javascript, pas comme moi. ;-)

et c'est super cool, car c'est justemement ce que je cherchais, je galere en javascript, c un langage un peu chelou quand meme.

je veux ouvrir une popup, remplir un formulaire dans la popup ( avec upload), et l'envoyer dans la page principale, et fermer automatiquement la popup.
donc c un peu ce que tu fais sauf que t'as un calendrier, et non un formulaire dans ta popup.

j'ai essayé d'adapter un script tout nul et ca marche pas :
<A HREF=# onClick="window.opener.location.href='page.html';return(true)">lien</A>

<script language="Javascript">
function lien(url) {
eval("window.opener.parent.document.location.href='"+url'";");
window.close(); }
</script>

a metter dans le <a> du lien:

onClick=lien('Page_a_appeler')

voila , donc si tu pouvais m'extraire de ta source, un script java et le reste, qui pourrai faire ca, avec dans la popup juste un bouton submit. ca serait tres sympas.

sinon je chercherai moi meme.

voila, sinon la source à l'aire tres bien. je noterai.

a+

Commentaire de arnal69130 le 15/03/2005 09:57:55

Salut Stepibou,
Si tu regardes d'un peu plus près mon calendrier, tu verras qu'il contient a un formulaire ;o)
Cela dit, dans ma source dans la popup on modifie la valeur d'un champ sur la page appelante.
Je ne suis pas sur que ce soit ça que tu veuilles faire, si ?

Dans ta popup, tu peux essayer de faire un formulaire avec action=popup, et au rechargement tu fermes la popup... ça donnerait un truc du genre :
/****popup.php****/
<?php
if (empty($_POST['ficUpload']))
{ echo "<form action='popup.php' ...>" formulaire d'upload..."; }
else
{ echo "<script type='text/javascript'>window.close();</script>"; }
?>
J'ai pas essayé, mais ça te permettera sans doute d'avancer...

Juste une petite suggestion, essaye d'écrire tes balises et attributs en minuscule, et avec des quotes autour des valeurs : <a href="#" ...>...</a>...

Au passage, il s'agit bien de javascript (et non pas de java qui n'a rien à voir) ;o) et les balises ouvrantes doivent être de la forme <script type="text/javascript">

a+
Arno

Commentaire de stepibou le 15/03/2005 14:57:38

un arnal , des arnox...
merci,  c bon grace à toi, voici mon script :

je sais c du javascript, et on est sur phpcs, mais bon,
on peut malheureusement pas y echaper, les sources recentes le montre.

voila ca marche, mais je suis obligé de traiter le formulaire dans la popup. c'est mieux dans un sens car ca rafraichi la page principale : (pour ceux que ca interesse, ce script ouvre une popup, traite un formulaire dans la popup, et ferme automatiquement la popup...)

------script de la page principale : ------
<A HREF="#" id="upload" onClick="Openpop()">inscrivez vous!</A>
<script type="text/javascript">
  function Openpop()  {
   window.open('diaporama.php','Fenupload','toolbar=0,location=0,directories=0,status=0,scrollbars=0,resizable=1,copyhistory=0,menuBar=0,width=400,height=200'); }
</script>

------script de la popup : ------
<?php
traitement du formulaire... avec un if bien sure...
print("<script type='text/javascript'>\n");
print("window.close();
</script>");
?>
<head>
<script type='text/javascript'>
function lien() {
window.opener.parent.document.location.href='pageprincipale.php'; }
</script>
</head>
<body>
<a href="javascript: window.opener.parent.document.location.href='pageprincipale.php';
window.close();
">retour</a>
<form ...>
<input type="submit" name="" value="ok" onClick="lien()" />
</form>

-----------------------------

tres bien, je te met 8 et pas 9, je t'explique pourquoi :
-dans tes balise html utilise des doubles quotes " et non '.
c'est mieux comme dirai grenard...
- le script marche mais je comprend pas tout y a pas de commentaire.
- et aussi y a des problemes dans l'insersion du javascript dans php : dans calend.php tu commence en javascript puis tu ouvre php à la ligne 44 alors que c le contraire c du javascript dans php. et surement encore des pbs de place de quotes,..  

voila, bonne prog a tous <?php (o; !-) ?>

Commentaire de arnal69130 le 15/03/2005 18:11:22

J'ai essayé d'arranger un peu ça.
Merci stepibou pour tes suggestions.

Arnaud

Commentaire de arnal69130 le 16/03/2005 11:34:20

NB : Je sais pas pourquoi, mais le code source affiché est légèrement différent de celui que j'ai posté :
En javascript, il faut bien écrire Date() et getDate() avec un d majuscule !!!

Commentaire de cedricM le 29/03/2005 09:45:33

SUPER!!!!! je cherchais à faire cette source depuis longtemps!!!! Merci à vous deux!
On peut même penser à mettre une variable dans l'appel de la fonction lien()
du style:

function lien(test) {
window.opener.parent.document.location.href='pageprincipale.php?test='+test; }

<input type="submit" name="" value="ok1" onClick="lien(1)" />
<input type="submit" name="" value="ok2" onClick="lien(2)" />
Ce qui laisse pas mal de possibilités ensuite sur la saisie de liste déroulante etc...

j'ai une question en plus pour vous, je sais que c'est plus du javascript que du php mais elle colle parfaitement aux commentaires précédents.
peut on mettre à jour des infos dans une iframe (ou autres mais c'est la seule solution que je vois) de la page principale toujours à partir du popup, sans recharger toute la page principale (pour éviter de tout resaisir?
en utilsant target... ou un truc du stule peut etre...

Merci
zevak

Commentaire de arnal69130 le 29/03/2005 09:59:28

Content que ça t'aide à avancer !

Pour répondre à ta question, je pense qu'il est tout à fait possible de modifier un champ dans une iframe de la page appelante à partir d'une popup.
En revanche, j'utiliserais plutôt une syntaxe du type window.opener.getElementById('NomIframe').élémentAmodifier que l'attribut target. A voir...

Arn;o)

Commentaire de cedricM le 29/03/2005 10:25:45

Merci de ta réactivité!
pour l'IFRAME c'est ok, j'ai réussi mais tu as raison ce n'est surement pas la meilleure solution...

du coup j'ai essayé ce que tu m'as dit mais en changeant le nom de l'iframe par le nom d'un formulaire, ca doit marcher aussi non?
J'ai regardé des ex sur selfHTML et voila le code que j'ai fait et qui ne marche pas....

dans le popup
<script type='text/javascript'>
function lien(test) {
window.opener.parent.document.getElementById('cp').champCP = test;
}
</script>

dans la page princpale:
<form name="cp" action="valider.php" method="POST">
<input type="text" name="champCP" value="">
</form>

Je dois forcement utiliser les zones (id=...) ?
si tu pôuvais me lacer sur la bonne piste..
merci d'avance :)

Commentaire de arnal69130 le 29/03/2005 12:08:36

Là, tu rejoins le code initiale de cette source, sauf que tu as un champ texte au lieu de combos ;o)

L'utilisation de getElementById('...') est, à mon avis, la plus efficace, la plus propre, et la plus portable (ou standard, comme tu veux).

Mais forcément, elle implique de mettre un attribut id="..." dans la balise du champ auquel tu veux accéder.
Dans ton exemple,  il n'y a pas d'élément dont l'id est "cp", donc ça ne risque pas de marcher ;o)

Essaie ça :

<script type="text/javascript">
function lien(test) {
window.opener.document.getElementById('champCP').value='test';
}
</script>

et

<form name="cp" action="valider.php" method="POST">
<input type="text" name="champCP" id="champCP" value="" />
</form>

Voila, j'espère que ça t'aidera. Si ça ne marche tjs pas comme tu veux, décris un peu plus précisemment ton problème. Juste dire «ça ne marche pas» n'est pas très explicite ;o)

Arno

Commentaire de cedricM le 29/03/2005 13:57:47

Merci beaucoup pour ton aide et de ta réactivité ! Cela va me permettre d'avancer dans mon projet.

Commentaire de yakob59 le 02/05/2005 15:51:07

Salut arnal !
Il est très bien ton script, il marche a fond, mais ya un ptit truc que j'arrive pas à faire avec :
ton code est fait pour etre encapsulé dans un formulaire. Tout est ok pour cela, les données sont bien intégrées dans ma base de données.
Mais j'ai également créé un autre formulaire pour faire des modifications, et la, je n'arrive pas à récupérer la date entrée dans la base de données, il me met toujours par défaut la date du jour.
Pourrais-tu m'aider, car pour moi le php ca va encore mais le javascript !!!! :-/

Merci d'avance

Commentaire de arnal69130 le 12/05/2005 10:54:42

salut yakob,
mieux vaut tard que jamais...
Il faut que tu regarde la fonction javascript Date() :
http://fr.selfhtml.org/javascript/objets/date.htm
Dans la fonction dateDansListe (index.php), dans mon script il n'y a pas de paramètre, donc on prend la date du jour.
Mais si tu mets une autre date en paramètre, c'est cette date qui sera sélectionnée.

En espérant t'avoir aidé,
Arn;o)

Commentaire de yakob59 le 20/05/2005 12:00:18

C'est bon j'ai reussi grâce à tes conseils arnal. A toute fin utile, je joint la nouvelle fonction dateDansListe()

function dateDansListe()
      {  
      <?php if (isset($_POST["listJour"]) && !empty($_POST["listJour"]) && isset($_POST["listMois"]) && !empty($_POST["listMois"])) {
          $mois=substr($_POST["listMois"],0,2)-1;
          echo "d=new Date(" . substr($_POST["listMois"],2,4) . "," . $mois . "," . $_POST["listJour"] . ");\n";
        } else{
          echo "d=new Date();\n"; }
  ?>
          Mois=1+d.getMonth();
          chM=Mois.toString();
          if (chM.length<2) { chM="0"+chM; }
          An=d.getFullYear();
          ch=chM+An.toString();
          i=0;
          while(ch!=document.getElementById("listMois").options[i].value)
          { i++; }
          j=d.getDate();
          alert(j.toString());  
          if (document.getElementById("listMois").options[i]) document.getElementById("listMois").options[i].selected = 1;
          if (document.getElementById("listJour").options[j-1]) document.getElementById("listJour").options[j-1].selected = 1;
          AffNbj();
      }

Commentaire de yakob59 le 20/05/2005 12:07:44

euh vous pouvez virer le   alert(j.toString());  c'etait juste pour le debogage, pour moi mieux comprendre le truc.
En tout cas je le redis, MERCI ARNAL !

Commentaire de matsuda le 08/07/2005 13:53:50

merci pour cette code!!
Je me demande seulement comment récupérer la date est les stoker dans 3 variable $jour $mois $annee dan une base de donnée apré validation du date?
merci..

Commentaire de arnal69130 le 11/07/2005 10:27:09

Bonjour Matsuda,
Peux-tu préciser un peu ta question... Ton problème vient-il de l'envoi du formulaire en POST, de la requête d'insertion dans ta BD, ou de la récupération de $mois et $année distinctement à partir du champ $moisAnnée ?
Arn;o)

Commentaire de arnal69130 le 26/07/2005 17:43:50

Pour que tout le monde en profite, voila un message de inabil :

--- inabil :
bonjour,

voila, j'ai esseyé d'executer le code mais ça marche pas.
Est ce qu'il y a une MAJ ou le probléme viens de chez moi.
merci d'avance

--- arnal69130 :
bonjour,
chez moi ça marche !
quel est ton problème ?

--- inabil :
voila, il y a les deux liste qui s'affiche ,mais le calendrier pas

--- arnal69130 :
suite ici http://www.phpcs.com/code.aspx?ID=30101#commentaires

Commentaire de arnal69130 le 26/07/2005 17:45:37

->inabil, as-tu cliqué sur "calendrier" ?
as-tu un message d'erreur ?
as-tu un avertissement de pop-up bloquée ?

Commentaire de inabil le 26/07/2005 17:49:04

non pas du tout, simplement a la place du calendrier il y a une croix rouge  ecrit a coté calendrier

Commentaire de arnal69130 le 26/07/2005 17:55:32

cette croix rouge, c'est parce que l'image du "bouton" n'a pas été trouvée :
<img id="imgCalend" src="BCalend.gif" alt="Calendrier" />
Il faut que tu places une image BCalend.gif dans ton répertoire.
C'est ton seul problème ?

Commentaire de inabil le 26/07/2005 18:02:10

qd je telecharge le script, elle n'y est pas dedans?
envoie la moi si c possible par mail :
nazaca@caramail.com
merci

Commentaire de arnal69130 le 26/07/2005 18:11:36

j'ai ajouté l'image au zip, mais tu peux bien prendre celle que tu veux !
Arn;o)

Commentaire de yooooohito le 11/10/2005 10:52:06

Salut et merci pour ton code.

Je voudrais le modifier (newbie inside) pour pouvoir sélectionner le mois précédent la date du jour : Est-ce possible? et pourrais-tu me mettre sur la piste stp.

Ex : on est le 11 octobre 2005, je voudrais pouvoir sélectionner une date de septembre 2005

Merci d'avance

Commentaire de yooooohito le 11/10/2005 11:00:12

Oups, c'était tt simple et j'ai trouvé :

//mois et année actuels
$anR=date("Y");
$mm=date("m")-1;

Merci encore pour ton boulot

Commentaire de ohmusan le 15/01/2006 13:37:22

Salut et merci pour ton code ! Depuis le temps que j'en cherchais un simple d'utilisation et propre !
Par contre, j'ai un piti pb : comme Yooooohito je voudrais pouvoir choisir des mois précédant le mois actuel mais en remontant au moins à 6 mois (voir un an)
Si je fais comme lui et que je mets "$mm=date("m")-12;", je me retrouve face à 12 fois "janvier 2006" mais pas trace de 2005...
J'ai bidouillé un peu mais sans obtenir de résultat satisfaisant... :(
HELP grand maître !

Merci encore

Commentaire de gilels le 02/02/2006 23:49:12

Salut et bravo pour ce petit calendrier bien pratique, il y a t'il un moyen de rendre non selectionnable certains jours , je pense aux dimanches par exemple.

Merci

Commentaire de arnal69130 le 03/02/2006 09:26:41

Salut GILELS,

Tu peux ajouter un test sur le jour, dans la boucle de construction du tableau de calend.php :

...
if ($j<=$nbj)//nb jours du mois {
   $titre=ucfirst(strftime("%A",strtotime("200408".sprintf("%02d",$jsem+1))))." $jj/$mois/$an";
   if (fmod($c,7)!=0) { //si pas 7e colonne
      echo '<a title="',$titre,'" href="javascript:lien(',($j-1),');" class="lienCal',($j==$jour),'">',$j,'</a>';
   } else {
      echo $j;
   }
} else {
   echo '<br />';
}
...

Je n'ai pas tester, mais ça doit être qqch dans le genre.

Ensuite, il peut être judicieux d'utiliser un style pour ces jours là, par exemple en mettant le texte en gris...

Arn;o)

Commentaire de arnal69130 le 03/02/2006 09:35:39

Salut ohmusan,

Au lieu de modifier le mois de départ, tu peux modifier l'année (dans calend.php):

//mois et année actuels
$anR=date("Y")-1;
$mm=date("m");

Arn;o)

Commentaire de rvcg le 03/02/2006 21:15:49

Merci pour ce précieux code !

Comment alimenter une variable ($date par exemple) au format date avant insertion dans la bdd à partir de ton code ?
Comment aussi utiliser 2 fois le script dans un même formulaire ($datedeb,$datefin).

Merci.

Commentaire de jvergoby le 28/02/2006 10:56:19

Salut Arnal,
je viens de récupérer ton code, il est super et facilement intégrable dans mes scripts. Nickel. Juste une question, je récupère dans deux variables le jour et le mois que j'envoie dans une autre page pour faire une entête de page. Mais j'ai un soucis avec la date. Elle est au format :
exemple pour 28 février 2006 : 28 022006.
Comment faire pour récupérer le mois février en lettre et non en chiffre ?

Merci

Commentaire de arnal69130 le 28/02/2006 17:11:39

Salut,
Il y a au tout début du code, une fonction qui fait ce que tu veux :

function Mois_fr($mon) //retourne le mois en lettre en français

Arn;o)

Commentaire de jvergoby le 28/02/2006 17:16:39

Salut Arnal,
je te remercie pour ta réponse.

A bientôt.

Commentaire de santy_lamy le 02/04/2006 10:17:08

slt tt le monde moi j'ai essayé d'éxecuter le code et j'ai un message d'erreur
sur le fichier calend.php ligne 99 il trouve pas la fonction fmod()

Commentaire de arnal69130 le 02/04/2006 10:48:58

Salut,
Quel message d'erreur as-tu ?
Quelle est la version de php que tu utilises (>=4.2.0 ?)

Cette fonction retourne le reste de la division entière des 2 paramètres.
http://fr3.php.net/manual/fr/function.fmod.php

Tu dois pouvoir la remplacer par l'opérateur % :
Au lieu de
fmod(a,b)
utilises
a%b

if (fmod(($c-1),7)==0)
devient
if ((($c-1)%7)==0)
...

Arn;o)

Commentaire de santy_lamy le 02/04/2006 13:02:04

merci arnal pour la précision...

Commentaire de gilels le 04/04/2006 11:37:22

salut
Il y a t'il un moyen d'extraire le numero de la semaine ?

Commentaire de arnal69130 le 04/04/2006 11:43:01

Salut,
Qu'entends-tu par extraire, à quel moment ?

Commentaire de gilels le 04/04/2006 11:55:20

Je veux dire que plutot que, lorsque je selectionne le lundi 3 par exemple, de recuperer la date sous la forme yyyy-mm-dd, je puisse recuperer le numero de la semaine, par exemple 32.

Commentaire de mizushima le 15/10/2006 21:28:19

Merci, je trouve ce code génial du fait que la récupération du choix dans calend.php arrive sur index.php en menus déroulants et pas en champs texte, je fais du php mais le javascript ça me dépasse complètement donc respect.

Deux petites questions
1°) je ne comprends pas comment on fait pour activer la fonction
function Mois_fr($mon) //retourne le mois en lettre en français
chez moi, les mois restent en lettre en anglais
quelque chose m'échape

2°) Puisque dans la popup calendrier, les jours de la semaine (Lundi, mardi... etc.) correspondent bien à la date (là encore c'est génial et ça me dépasse) serait-il possible de récupérer dans le menu déroulant de la page index.php aussi le jour de la semaine pour le conserver avec la date dans la base
(parce que je trouve important de savoir quel jour de la semaine tombe une date, si tu me demande si je suis libre le 22 novembre 2006 je te demande : "ça tombe quel jour de la semaine ?")
ou sinon y-a-t-il possibilité d'un post-traitement de la date pour le retrouver, je trouve sur google "Formule de Zeller" mais est-ce que ça se transcrit en php, je pousse peut-être le bouchon un peu trop loin :-)
merci

Commentaire de arnal69130 le 16/10/2006 10:44:39

Salut Mizushima,

- Pour ton 1er point, tu dois avoir une erreur javascript, non ? quelle est-elle ?

- Pour savoir à quel jour de la semaine correspond une date, tu peux comparer cette date avec une date fixe dont tu connais le jour (pourquoi pas le 15/10/06=dimanche).
Par exemple -> Quel jour est le 05/06/07 ? Tu calcules le nombre de jour entre cette date et le 15/10/06 = 233 jours je crois (de tête, mais il faut utiliser des fonctions javascript ou php)
le reste de la division 232/7 est 2 donc le 05/06/07 sera un mardi.
Je ne connaissais pas la "Formule de Zeller", mais je pense qu'elle est plus simple (et plus propre) que mon raisonnement. En cherchant un peu, je suis sur que tu arriveras à l'écrire en php...

Arn;o)

Commentaire de mizushima le 17/10/2006 19:55:27

alors pour le 1er point, une erreur javascript ?
j'ai seulement copié les 3 fichiers de phpcs_source_30101.zip
et j'ai toujours les mois en anglais dans le menu déroulant "choix de date"
2006
October 2006
November 2006
December 2006
2007
January 2007
February 2007
et caetera

pour la formule de Zeller en php
z = (E(2.6 *mz -0.2) +jj + az + (az div 4) + (sz div 4) - 2* sz) modulo 7)
le E majuscule doit être l'entier, je vais faire des test je vous dirais

merci

Commentaire de toniok05 le 19/10/2006 19:55:54

Bonjour à tous et bravo pour ce script.
J'ai le meme probleme que Mizushima, mes dates s'affichent en anglais.
Je n'ai pas modifié du tout la source...

Comment faire pour afficher les dates en anglais SVP ??

Commentaire de toniok05 le 19/10/2006 20:08:06

C'est encore moi ! Dans le post ci dessus il fallait lire : Comment faire pour afficher les dates en FRANCAIS SVP ??

Désolé pour l'erreur...

Commentaire de serialmother le 15/12/2006 18:35:53

Bonjour,
Il a été répondu à jvergoby le 28/02/2006 d'utiliser la function Mois_fr($mon) //retourne le mois en lettre en français.

Dans la page suivante de mon formulaire, j'ai indiqué : <?=$listMois ?> qui s'affiche aussi "022006" et j'ai repris la fonction :
function Mois_fr($mon) //retourne le mois en lettre en français
{ setlocale(LC_TIME,""); return ucfirst(strftime("%B",strtotime("2002".sprintf("%02d",$mon)."01"))); }

mais la date s'affiche toujours en chiffre collé.

J'ai essayé d'insérer $listMois= Mois_fr($mm).' '.$anR;
ça reprend la date et l'année dans le bon format mais par défaut c'est le mois et l'année du jour :"décembre 2006"

Peux-tu m'indiquer s'il faut ajouter quelque chose à la fonction ? ou si c'est le $listMois qu'il faut modifier ?

merci

Commentaire de mizushima le 15/12/2006 19:50:07

alors là le commentaire de serialmother le 15/12/2006 18:35:53
ça me dépasse totalement.
Le code de ce script est peut-être naturellement et logiquement fait comme ça,
mais à mon niveau, je n'y trouve rien d'intuitif qui permette de comprendre quelque chose a son fonctionnement.

En php quand je veux convertir les mois en clair et en français, je fais ça :
array ("01" => "janv.", "02" => "fév.", "03" => "mars", "04" => "avril", "05" => "mai", "06" => "juin", "07" => "juil.", "08" => "août", "09" => "sept.", "10" => "oct.", "11" => "nov.", "12" => "déc.");

mais dans ce script je ne trouve aucune trace de variable chaine en clair,
non plus de nom de mois en anglais d'ailleurs, je ne sais pas d'où vous faites sortir ça.

Pour la formule de Zeller, le fait que le calendrier automatique sache bien faire concorder les jour de semaine avec les date laisse présentir qu'il doit bien y avoir quelque part dans le code un traitement de ce genre pour retrouver si tel jour de tel mois est un lundi ou un dimanche non ?
Alors pourquoi ne pas pouvoir récupérer aussi cette donnée dans le formulaire au rechargement ?

Commentaire de serialmother le 15/12/2006 21:38:46

Bonsoir mizushima,

Le calendrier fonctionne parfaitement bien en local sur mon PC avec easyphp, tout est en français.
Mais quand je le transfère sur mon serveur linux, tout passe en anglais. Je cherche à faire une modification pour le passer en anglais en local pour voir si ça va changer quelque chose sur le linux.

Commentaire de serialmother le 15/12/2006 21:58:50

Pour ceux que ça intéresse, pour que les jours soient bien affichés en français, il faut modifier le code suivant :

setlocale(LC_TIME,"") par setlocale(LC_TIME,"fr")ou setlocale(LC_TIME,"fr_FR")ou setlocale(LC_TIME,"fr_FR.ISO8859-1")
en fait, ça dépend des serveurs...

Commentaire de mizushima le 16/12/2006 12:46:48

setlocale(LC_TIME,"fr") fonctionne chez free.fr et online.net

Commentaire de azertr le 14/01/2007 15:36:10

Bonjour !!! Merci pr le code de calendrier mais j'ai du mal à le POSTER à une autre page comment je peux faire SVP ?

Commentaire de mizushima le 15/01/2007 21:16:31

AZERT
pour poster la date dans une autre page
regarde dans le script ici en haut c'est la ligne 115
<form name="formInsert" id="formInsert" method="post" action="index.php">
il suffit de modifier action="index.php" par l'url de la page dans laquelle tu veux poster
puis dans ta page tu récupère les 2 variables
$listJour et $listMois
regarde-le fonctionner ici
http://qatsi.free.fr/test-calendrier/index.php
dans mon test j'ai conservé action="index.php" parce que je veux une prévisualisation
la première fois qu'on arrive sur la page
$listJour et $listMois n'ont pas encore de valeur,
quand on poste dans index.php ils prennent les valeur du calendrier
$listJour = 15
$listMois = 012007
et cela grâce à l'astuce de
yakob59 le 20/05/2005 12:00:18
(que je remercie au passage)
les 6 lignes de php après function dateDansListe(){

et c'est là que je voudrais appliquer la formule de Zeller pour récupérer le jour de la semaine,
mais je n'ai pas encore fait de test... à suivre

Commentaire de serialmother le 25/01/2007 11:18:00

Bonjour,
Je reviens sur mon pb de récupération de données.
Dans le mail que je reçois avec les champs "$listJour" et "$listMois",
le mois est toujours collé à l'année et je n'arrive pas à faire d'espace.
Exemple 25 012007 - Comment faire pour récupérer 25 01 2007 ?
Est-ce possible ? Merci de me donner une piste...

Commentaire de serialmother le 11/02/2007 21:05:45

Je n'arrive toujours pas à récupérer dans une deuxième page de mon formulaire la date avec un espace entre le mois et l'année ou avec le mois en lettres.
Une âme charitable pourrait t'elle m'expliquer comment intégrer la fonction :
function Mois_fr($mon)
au début de cette dexième page
pour que <? echo $listMois ?> soit lisible ?

Commentaire de azymuth le 20/02/2007 00:41:55

Bonjour et bravo pour ce script !

Comment utiliser "proprement" ce script 2 fois dans le même formulaire afin de traiter par exemple un champ date début suivi d'un champ date fin ?

Merci

Commentaire de chris_du_05 le 07/12/2007 10:25:52 9/10

Cool ! Merci bcp pour ce code... J'te met une bonne note ;)

Commentaire de jeanDresde le 21/01/2008 21:49:13 8/10

Désolé d'arriver après la guerre, mais j'ai la même question que azymuth :

Bonjour et bravo pour ce script !

Comment utiliser "proprement" ce script 2 fois dans le même formulaire afin de traiter par exemple un champ date début suivi d'un champ date fin ?

Est-ce qu'une âme charitable renseignerais un newbie comme moi ?

Commentaire de Gecko62 le 21/01/2008 22:27:12

Pour utiliser deux fois ce formulaire, il suffit de nommer différement les paramètres associés

<tr>
  <td><b>Date de début :</b></td>
  <td>
    <input type="text" name="DateD" readonly="readonly" value="<?php if (isset($_POST['DateD'])) echo $_POST['DateD']; ?>" />
      <a href="#" onClick="window.open('pop.php?frm=frm&ch=DateD','calendrier','width=350,height=160,scrollbars=0').focus();">
<img src="petit_calendrier.gif" border="0"/></a>
  </td>
</tr>
<tr>
  <td><b>Date de fin :</b></td>
  <td>
    <input type="text" name="DateF" readonly="readonly" value="<?php if (isset($_POST['DateF'])) echo $_POST['DateF']; ?>" />
      <a href="#" onClick="window.open('pop.php?frm=frm&ch=DateF','calendrier','width=350,height=160,scrollbars=0').focus();">
<img src="petit_calendrier.gif" border="0"/></a>
  </td>
</tr>
Et voilà avec ce petit bout de code cela devrait fonctionner
BàV Gecko

Commentaire de frank_85 le 11/09/2008 11:25:58

Bonjour,
je viens d'installer le script et malgré lecture de tous les posts je n'arrive pas à récupérer les différents éléments de date
afin de les utiliser pour un traitement de formulaire; j'ai essayé $listJour et $listMois mais cela me fait remonter une erreur.
Pour etre plus explicite sur mon but, je souhaite insérer ce script dans un formulaire qui comprendra d'autres champs puis effectuer un envoi par mail de toutes les données.
Un grand merci pour votre aide!
Frank

Commentaire de arnal69130 le 11/09/2008 19:23:28

Bonjour,
Quelle est l'erreur remontée ?

Commentaire de mizushima le 11/09/2008 20:05:33

Réponse à la question de serialmother le 11/02/2007 21:05:45
"la date avec un espace entre le mois et l'année ou avec le mois en lettres."

en php c'est un jeu d'enfant, c'est la variable $listMois qui renvoie le mois et l'année collés ensemble,
donc déjà cette variable est mal nommée.

Il faut pour commencer une variable array (à plusieurs cases)

$convertmois = array ("01" =&gt; "janv.", "02" =&gt; "fév.", "03" =&gt; "mars", "04" =&gt; "avril", "05" =&gt; "mai", "06" =&gt; "juin", "07" =&gt; "juil.", "08" =&gt; "août", "09" =&gt; "sept.", "10" =&gt; "oct.", "11" =&gt; "nov.", "12" =&gt; "déc.");

puis on extrait les deux partie qui nous intéressent dans la variable $listMois

si $listMois = 012007
01 c'est le mois donc le morceau de chaîne de caractère à partir de la position 0 (c'est à dire le premier caractère)
et d'une longueur de 2 carctères

$moisdate = substr($listMois, 0, 2);


2007 c'est l'année, le morceau de chaîne à partir de la position 2 (3e caractère)
et d'une longueur de 4 caractères

$anneedate = substr($listMois, 2, 4);

donc dans notre exemple

$moisdate vaut 01
$anneedate vaut 2007

pour afficher le mois en lettres

echo $convertmois[$moisdate];

c'est à dire janv.

voilà

Commentaire de mizushima le 11/09/2008 20:08:06

bon alors puisque les codes de caractères spéciaux ne sont pas interprétés ici je redonne
le bon code php pour $convertmois

$convertmois = array ("01" => "janv.", "02" => "fév.", "03" => "mars", "04" => "avril", "05" => "mai", "06" => "juin", "07" => "juil.", "08" => "août", "09" => "sept.", "10" => "oct.", "11" => "nov.", "12" => "déc.");

Commentaire de mizushima le 11/09/2008 20:39:10

dans mon post du 15/10/2006 21:28:19  je demandais en 2°
comment récupérer dans le menu déroulant de la page index.php aussi le jour de la semaine pour le conserver avec la date dans la base
(parce que je trouve important de savoir quel jour de la semaine tombe une date, si tu me demande si je suis libre le 22 mars 2012 je te demande : "ça tombe quel jour de la semaine ?")

j'ai trouvé un site qui le fait,
celui des chemins de fer Belges
http://www.b-rail.be/main/F/

tu veux aller de
gare/arrêt : bruxelles
à
gare/arrêt : Geraardsbergen

tu laisses par défaut la date et le reste et tu cliques sur [RECHERCHER]

et oh miracle sur la page de confirmation on peut voir
date : Je, 11/09/08

donc avec le jour de la semaine,
il y a un petit calendrier dans une popup comme dans le script ici
et si je clique sur 12 septembre j'ai
date : Ve, 12/09/08

donc C'EST POSSIBLE JE VEUX CE SCRIPT ! :-))))))

Commentaire de arnal69130 le 12/09/2008 07:51:35

Et la formule de Zeller dont tu parlais dans ton post du 17/10/06 ?

Commentaire de mizushima le 07/10/2009 21:51:23 10/10

// ON OUBLIE LA FORMULE DE ZELLER !
// il y a des fonctions en php qui font ça très bien : mktime et strtotime

// choisir comment construire le contenu de la variable qu'on va traiter par ces fonctions

// $date_strtotime = mktime(21, 52, 0, 2, 10, 96); // 21h 52mn 0s 2eme-mois 10eme-jour année
// $date_strtotime = strtotime("10 February 1996 21:52");
// $date_strtotime = strtotime("1996-02-10 21:52");

// je prends l'exemple avec les variables du script ici et la 2e version de strtotime en chiffres
// admettons que l'on récupère les variables
// $listJour = 15
// $listMois = 012007

// il faut d'abord dissocier le mois de l'année
// on récupère les 2 premiers chiffres de la chaine $listMois avec la fonction substr
$mois = substr($listMois, 0, 2)
// ça donne $mois = 01

// puis les 4 derniers chiffres pour l'année
$annee = substr($listMois, 2, 4)
// ça donne $annee = 2007

// on colle tout ça en concaténation pour respecter le format de strtotime("1996-02-10 21:52")
$formate_date = $annee.'-'.$mois.'-'$listJour.' 00:00';
// si on omet l'heure 00:00 ça fonctionne aussi dans une certaine mesure

// puis on traite avec la fonction magique strtotime

$date_strtotime = strtotime($formate_date);

// maintenant la variable $date_strtotime est un tableau
// qui contient peut-être toutes les valeurs de la foncton date()
// voir sur http://fr2.php.net/manual/fr/function.date.php
// j'ai pas tout testé :-)
// comme par exemple

$jour_numerique = date("d", $date_strtotime);
$mois_numerique = date("m", $date_strtotime);
$annee_4_chiffres = date("Y", $date_strtotime);

// et donc ce qui nous intéresse le plus, le jour de la semaine en anglais, YOUPI !

$joursemaine_anglais = date("D", $date_strtotime);

// $joursemaine_anglais aura alors une de ces valeurs :
// Mon, Tue, Wed, Thu, Fri, Sat ou Sun
// il suffit d'un array pour convertir en français

$convertjoursemaine_en_fr = array ('Mon' => 'Lu.', 'Tue' => 'Ma.', 'Wed' => 'Me.', 'Thu' => 'Je.', 'Fri' => 'Ve.', 'Sat' => 'Sa.', 'Sun' => 'Di.');

// à la place de 'Lu.' 'Ma.' ...etc on pourrait bien sûr mettre 'Lundi' "Mardi'

$joursemaine_fr = $convertjoursemaine_en_fr[$joursemaine_anglais];

// et on affiche le tout

echo $joursemaine_fr.''.$jour_numerique.''.$mois_numerique.''.$annee_4_chiffres;

// soit : Lu. 15 01 2007

// merci à Dany qui m'a donné le tuyau ;-)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

calendrier avec date reccuprable dans un formulaire [ par gaafouri ] bonjour à tt le monde j'ai besoin d'un script ou programe php qui me permet d'intégrer une calendrier dans une page bien spécifique de mno site.e code Formulaire saisie champ pour ecrire dans un fichier texte. [ par ExSter ] Bonjour, voila, ca parait fort simple à réaliser, mais j'aimerais créer un formulaire, sous php, qui demande les champs suivants : Date , Auteur , le Cherche Source Calendrier [ par christobal ] Bonjour, Pour mon asso, je recherche un calendrier qui afficherais les dates de réservations.plus précisément si la réservation et comprise entre le 0 Pb avec un renvoi d'une date dans un formulaire [ par helene38000 ] Bonjours,  je suis entrain de faire un site de reservation en php. Et j'ai un probleme voila j'ai un calendrier que j'ai rendu cliquable. Mon pro calendrier reservation dynamique [ par belkaiednaim ] bonjour,je suis a la recherche d'une calendrier de réservation de gites un peu compliqué car cette calendrier a des couleurs de date modifiable selon probleme d'affectation de variable dans un objet [ par nemetos ] Bonjour,je crée l'objet suivant : class calendrier {     var $date_courante;     var $annee_courante;     var $mois_courant;     var $jour_courant;    code php [ par parrain3000 ] salut j'ai besoin de votre aide au sujet du code php d'une sélection de date sous forme de calendrier c'est à dire j'aierais selectionner une date en CALENDRIER PHP OU JAVASCRIPT [ par eric93 ] Bonjour à tous.Je suis débutant, et je suis en stage.Je dois réaliser un formulaire php pour la saisi d'un menu avec la date.Et mon tuteur veut que je Recupérer la date depui un calendrier [ par lebasketeur ] bonjour tt le monde,voila je suis nouveau dans le php et je travaille actuellement sur un premier projet.dans un formulaire d'ajout, j'ai une zone de calendrier sur une semaine [ par SataN_sTn ] Bonjour,Travaillant sur un calendrier sur une semaine qui reprendre des données dans une base mysql suivant les jours, heures etc, j'ai donc cherché l


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales