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 :

[Dates] Calendrier : sélectionner une date


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Par défaut [Dates] Calendrier : sélectionner une date
    Bonjour.

    J'ai récupéré sur le site le source d'un calendrier :
    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
    <?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>
    Je voudrais pouvoir récupérer une date sélectionnée en passant par javascript mais je ne sais pas où placer "onclick='javascript:afficher_date(this.value);"

    Merci de m'aider
    Dommage que l'auteur du code n'ait pas défini les class css utilisé dans le code.

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Je t'aurais bien dis de le mettre dans tes td mais il n'y en a pas, il utilise que des th ce qui n'est pas correct car les th sont des entêtes de colonnes normalement.
    Sinon tu peux toujours le mettre ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo('<th onclick="afficher_date(this.value);">'.$daytab[$i].'</th>');
    et là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo('<th onclick="afficher_date(this.value);">'.$calendar[$i][$j].'</th>');

  3. #3
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Par défaut
    Merci.

    Pour les jours de la semaine et les dates, j'ai mis td au lieu de th.
    Quand je clique sur une date, la fonction javascript me revoie "undifined" au lieu de la valeur du calendrier
    la fonction javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Script Language="Javascript">
    function afficher_date(valeur)
    {
    	alert(valeur);
    }
    </script>
    Je ne vois pas le problème

  4. #4
    Membre éprouvé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Par défaut
    Personne a une idée ???

    J'ai testé la proposition de trotters213 mais la fonction me renvoie "undifined"

    Sinon est ce que vous auriez le source d'un calendrier qui renvoie une valeur quand on clique sur une date.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    A adapter à ton 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
    <!DOCTYPE html 
         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
         "DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
      <head>
        <title>Titre</title>
    		<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1" />
    		<script type="text/javascript">
    		  function toto(valeur)
    		  {
    		    alert(valeur);
    		  }
    		</script>
      </head>
    	<body>
        <table width="50%" align="center" border="0">
          <tr>
            <td onclick="toto(this.firstChild.nodeValue)">
              test
            </td>
          </tr>
        </table>
      </body>
    </html>
    Mais puisque ta ligne est créée dynamiquement, pourquoi ne pas mettre en paramètre de ta fonction la même variable que celle qui se trouve entre les balises ?

  6. #6
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Jette un coup d'oeil à cette page sinon : http://php.developpez.com/sources/?page=dates

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

Discussions similaires

  1. [MySQL] Formater une date américaine a une date français ?
    Par melodyyy dans le forum PHP & Base de données
    Réponses: 30
    Dernier message: 18/07/2008, 16h14
  2. [SQL] Ajouter une durée à une date et obtenir une date valide
    Par bigltnt dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/06/2007, 14h55
  3. [Débutant] Calcul d'une date à partir d'une date de départ et d'une durée
    Par Marmotton76 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/04/2007, 10h39
  4. Réponses: 2
    Dernier message: 21/03/2007, 16h06
  5. Réponses: 14
    Dernier message: 09/01/2007, 16h19

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