IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Calendrier semaine a semaine


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut Calendrier semaine a semaine
    Bonjour,

    Je souhaite faire un calendrier semaine a semaine afin d'afficher des locations, l'ideal serait ceci :



    Mais pour le moment je n'ai que ceci :



    Voici le code de cette page :



    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <?php 
      function reservation()
      {
        //-- tableau pour simuler une BDD --------------------------------
        $reservation = array(
                              '2008-01-05',
                              '2008-02-16',
                              '2008-03-29',
                              '2008-04-12',
                              '2008-05-10',
                              '2008-08-30',
                              '2008-10-11',
                              '2008-12-20',
                            );
        return $reservation;
      }
     
      function chercheBorne($jour, $numJourDeb, $jourDeb, $decalage)
      {
        $tsDate = strtotime($jour);
        if(date('N', $tsDate) != $numJourDeb)
        {
          $tsDate = strtotime($decalage . ' ' . $jourDeb, $tsDate);
        }
        return $tsDate;
      }
     
      function creeDate($tsDeb, $tsFin)
      {    
        while ($tsDeb <= $tsFin)
        {
          $mois = strftime('%B', $tsDeb);
          $date[$mois][] = $tsDeb;
          $tsDeb = strtotime('next week', $tsDeb);
        }
        return $date;
      }
     
      function affichage($date, $annee)
      {
        $reservation = reservation();
        $tableau = '';
        foreach($date as $cle => $valeur)
        {
          $fin = (sizeof($valeur) < 5) ? '<td>&nbsp;</td>' : '';
          $tableau .= '<tr><td>' . $cle . '</td>';
          foreach ($valeur as $tsJour)
          {
            $couleur = (! in_array(date('Y-m-d', $tsJour), $reservation)) ? ' bgcolor="#99FF99"' : '';
            $tableau .= '<td' . $couleur . '>' . date('d', $tsJour) . '</td>';
          }
          $tableau .= $fin . '</tr>' . "\n";
        }
        return $tableau;
      }
      //-----------------------------------------------------------------------
      //-----------------------------------------------------------------------
      //-----------------------------------------------------------------------
      setlocale (LC_TIME, 'fr_FR.utf8','fra'); 
     
      $annee = (isset($_GET['annee'])) ? $_GET['annee'] : date('Y');
      $numJourDeb = (isset($_GET['jour'])) ? $_GET['jour'] : 6;
      $jourDeb = ($numJourDeb == 6) ? 'saturday' : 'sunday';
     
      $tsDeb = chercheBorne($annee . '-01-01', $numJourDeb, $jourDeb, 'next');
      $tsFin = chercheBorne($annee . '-12-31', $numJourDeb, $jourDeb, 'last');
      $date = creeDate($tsDeb, $tsFin);
     
      $page = $_SERVER['PHP_SELF'];
      $nomJourDeb = strftime('%A', $tsDeb);
      $anneePrecedente = date('Y', strtotime('last year', $tsDeb));
      $anneeSuivante = date('Y', strtotime('next year', $tsDeb));
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>test</title>
            <script type="text/javascript">
        </script>
      </head>
        <body onload="// init()">
            <table align="center" border="1">
              <tr>
                <td colspan="6">DISPONIBILITES <?php echo $annee; ?></td>
              </tr>
          <tr>
            <td width="23" bgcolor="#99FF99"class="td3"></td>
            <td height="5" colspan="6" class="td3"><div align="left">Disponible</div></td>
          </tr>
          <tr >
          <td colspan="6" class="td6"><div align="center">Semaines d&eacute;butant un <?php echo $nomJourDeb; ?></div></td>
          </tr>      
               <?php echo affichage($date, $annee); ?>
          <tr>
            <td width="199" colspan="6">
              <div align="center">
                <a href="<?php echo $page . '?annee=' . $anneePrecedente . '&jour=' . $numJourDeb; ?>"/><< <?php echo $anneePrecedente; ?></a>
                 - - 
                <a href="<?php echo $page . '?annee=' . $anneeSuivante . '&jour=' . $numJourDeb; ?>"/><?php echo $anneeSuivante; ?>>></a> 
              </div>
            </td>
          </tr>           
          <tr>
            <td width="199" colspan="6">
              <div align="center">jour début</div>
            </td>
          </tr>           
          <tr>
            <td width="199" colspan="6">
              <div align="center">
                <a href="<?php echo $page . '?annee=' . $annee . '&jour=6' ?>"/>samedi</a>
                 - - 
                <a href="<?php echo $page . '?annee=' . $annee . '&jour=7' ?>"/>dimanche</a>
              </div>
            </td>
          </tr>           
            </table>
        </body>
    </html>
    Ce n'est pas mon code et je ne sais pas comment le modifier afin d'avoir la couleur rouge (dans ma base SQL j'ai une champs ETAT dans ma table Reservation Etat ==> 1 = Loué Etat ==> 0 = Libre). Il n' a pas de couleur particuliere ni d'etat dans la table lorsque la semaine n'a pas ete mise a dispo par le proprietaire (les semaines en blanc sur le ideal.gif)

    Pourriez vous me donner un coup de main SVP
    Images attachées Images attachées   

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            $couleur = (! in_array(date('Y-m-d', $tsJour), $reservation)) ? ' bgcolor="#99FF99"' : '';
            $tableau .= '<td' . $couleur . '>' . date('d', $tsJour) . '</td>';
    Voila la ligne qui permet de faire du vert, à toi de faire du rouge

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut
    Merci, c'est ce que je pensais, mais comment faire ce changement de couleurs ? un test ?
    Dsl de ma reponse tardive, un heureux evenement de 3.200kg est arrivé entre les deux posts (Un heureux evenement qui ne dort pas la nuit ...)

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par epoc.01 Voir le message
    Merci, c'est ce que je pensais, mais comment faire ce changement de couleurs ? un test ?
    Dsl de ma reponse tardive, un heureux evenement de 3.200kg est arrivé entre les deux posts (Un heureux evenement qui ne dort pas la nuit ...)
    Felicitations et a la maman surtout
    Je comprends que de ce fait, la couleur du calendrier va passer au bleu pale et rose

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut
    pratriquement Je la felicite, pas de probleme, mais j'etais la aussi; c'est ma main qu'elle a broyé pendant 10 heures

    Concernant mon probleme, quelqu'un aurait une idée ?

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    J'ai testé ça et ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
      function affichage($date, $annee)
      {
        $reservation = reservation();
        $tableau = '';
        foreach($date as $cle => $valeur)
        {
          $fin = (sizeof($valeur) < 5) ? '<td>&nbsp;</td>' : '';
          $tableau .= '<tr><td>' . $cle . '</td>';
          foreach ($valeur as $tsJour)
          {
            if (! in_array(date('Y-m-d', $tsJour), $reservation)){$couleur= ' bgcolor="#99FF99"';} else {$couleur=' bgcolor="#FF0000"';} 
            $tableau .= '<td' . $couleur . '>' . date('d', $tsJour) . '</td>';
          }
          $tableau .= $fin . '</tr>' . "\n";
        }
        return $tableau;
      }

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut
    Je vais recommencer mon script afin de l'adapter a ma base :
    Voici le debut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function reservation()
      {
        $reservation = array(
    	while($row = mysql_fetch_row($reservationlibre))
    	{
    	echo "'".$row[2]."'".',<br>';
    	}
     
    );
    Mais il me retourne ceci :

    Parse error: parse error, unexpected T_WHILE, expecting ')' in C:\Program Files\EasyPHP 2.0b1\www\final\user\testsem.php on line 9

    Je suppose qu'on ne peut gerer un fetch dans un array. Mais je ne sais pas comment faire.

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 172
    Points : 56
    Points
    56
    Par défaut
    Ca marche, je laisse le code si ca peut servir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $reservationlibre = mysql_query("SELECT * from reserv WHERE idannonce='".$annonce."'");
     
    function reservation($reservationlibre)
      {
        $date = array();
    $etat = array();
     while($row = mysql_fetch_row($reservationlibre))
     {
      array_push($date,$row[2]);
      array_push($etat,$row[6]);
     }
     $reservation= array($date,$etat);
       return $reservation;
      }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Affichage calendrier pour la semaine
    Par fife59 dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 22/10/2010, 08h39
  2. Calendrier/Planning par semaine
    Par bobosh dans le forum C#
    Réponses: 4
    Dernier message: 16/03/2010, 11h30
  3. transformation date calendrier en numéro semaine
    Par creunch dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/03/2010, 14h16
  4. [XL-2003] Calendrier avec N° semaines
    Par jejette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/07/2009, 15h54
  5. [Dates] Calendrier mensuel par semaine / inversé
    Par bisvan dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2008, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo