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 :

Récupérer des événements pour les afficher dans le calendrier


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut Récupérer des événements pour les afficher dans le calendrier
    Bonjour,
    j'essaye de créer un calendrier mais j'ai un petit souci au niveau de la récupération des événements à afficher dans mon calendrier.
    Le calendrier s'affiche correctement, il n'y a aucun souci de ce côté-là.
    En revanche, j'ai plusieurs événements qui devraient être marqués dans mon calendrier mais seul le premier est pris en compte ( celui avec l'id 1 ). Voici mon 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
     
    <?php
    $req_recup_events = mysql_query('SELECT * FROM events');
    $recup_events = mysql_fetch_assoc($req_recup_events);
    $date_events = $recup_events['date'];
    $date_format =  date('d-n-Y', $date_events);
    $date = explode('-', $date_format);
     
    // Boucle pour générer le calendrier
    for($i=1;$i<40;$i++)
    {
    if($i < $premierdumois)
    {	
    if($jour == $date[0] && $mois == $date[1] && $annee == $date[2])
    {
    // Si la variable $jour correspond à l'événement d'aujourd'hui,
    // la case est en lien
    echo '<td class="calendrier_td_non_actif"><a href="#contenu"
    class="info">'.$joursmoisavant.'</a></td>';
    }
    else
    {
    // Tant que la variable i ne correspond pas au premier jour du mois,
    // on fait des cellules de tableau avec les derniers jours du mois précédent
    echo '<td class="calendrier_td_non_actif">'.$joursmoisavant.'</td>';
    }
    $joursmoisavant++;
    }
    else
    {
    if($jour == date("d") && $mois == date("n"))
    {
    if($jour == $date[0] && $mois == $date[1] && $annee == $date[2])
    {
    // Si la variable $jour correspond à l'événement d'aujourd'hui,
    // la case est en lien
    echo '<td class="calendrier_td_aujourdhui"><a href="#contenu"
    class="info">'.$jour.'</a></td>';
    }
    else
    {
    // Si la variable $jour correspond à la date d'aujourd'hui,
    // la case est d'une couleur différente
    echo '<td class="calendrier_td_aujourdhui">'.$jour.'</td>';
    }
    }
     
    else
    {
    if($jour == $date[0] && $mois == $date[1] && $annee == $date[2])
    {
    // Si la variable $jour correspond à l'événement d'aujourd'hui,
    // la case est en lien
    echo '<td class="calendrier_td_actif"><a href="#contenu"
    class="info">'.$jour.'<span>'.htmlspecialchars($recup_events['evenement'],
    ENT_QUOTES).'</span></a></td>';
    }
    else
    {
    // Si la variable $jour correspond à la date d'aujourd'hui,
    // la case est d'une couleur différente
    echo '<td class="calendrier_td_actif">'.$jour.'</td>';
    }
    }
    $jour++;	//On passe au lendemain
     
    /*Si la variable $jour est plus élevée que le nombre de jours du mois,
    c'est que c'est la fin du mois! 
    On remplit les cases vides avec les premiers jours des mois suivants
    Hop on ferme le tableau, 
    et on met la variable $i à 41 pour sortir de la boucle */
    if($jour > ($nbrjour[$mois])){
    while($i % 7 != 0)
    {
    if($jour == $date[0] && $mois == $date[1] && $annee == $date[2])
    {
    // Si la variable $jour correspond à l'événement d'aujourd'hui,
    // la case est en lien
    echo '<td class="calendrier_td_non_actif"><a href="#contenu"
    class="info">'.$jourmoissuivant.'</a></td>';
    }
    else
    {
    // Tant que la variable i ne correspond pas au premier jour du mois,
    // on fait des cellules de tableau avec les derniers jours du mois précédent
    echo '<td class="calendrier_td_non_actif">'.$jourmoissuivant.'</td>';
    }
    $i++;
    $jourmoissuivant++;
    }
    echo '</tr></table>';
    $i=41;
    }
    }	
    // Si la variable i correspond à un dimanche (multiple de 7), 
    // on passe à la ligne suivante dans le tableau
    if($i % 7 == 0)
    {
    echo '</tr><tr>';
    }
     
    }
    ?>
    Le problème vient, je pense, des premières lignes, avec la requête SQL. Mais je ne sais pas comment m'y prendre, j'suis saturé
    Merci d'avance à tous ceux qui m'aideront

    PS : la date enregistrée dans ma bdd est sous forme de timestamp alors je le formate pour faire des comparaisons correctes dans le calendrier.
    De plus, j'ai également essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $req_recup_events = mysql_query('SELECT * FROM events');
    while($recup_events = mysql_fetch_assoc($req_recup_events))
    {
    $date_events = $recup_events['date'];
    $date_format =  date('d-n-Y', $date_events);
    $date = explode('-', $date_format);
    }
    Mais ça ne m'a pas aidé énormément.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà dans tous les cas, n'appelle pas ton champ mysql "date".
    Utilise plutot un champ DATE mais sinon tu as déja tout en mysql pour faire des conversions et du formatage de date.
    Tu places tes données d’événement dans un tableau classé par jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req_recup_events = mysql_query('SELECT FROM_UNIXTIME(`date`) as event_date, event_description FROM events');
    while($row = mysql_fetch_assoc($req_recup_events))
    {
    $tblEvenements[$row['event_date']][] = [$row['event_description']
    }
    Pour la suite, tu as juste a regarder dans le tableau, si tu as quelque chose pour le jour que tu affiches.

    Ta construction du calendrier me parait cependant inutilement compliqué.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    le problème vient de la façon dont tu récupère le résultat de ta requête, tu ne récupère que la première ligne alors que tu devrais parcourir tout le résultat avec une boucle while et éventuellement créer un tableau dans lequel tu rangerais chaque ligne...
    sabotage à été plus rapide que moi...
    Développeur informatique contrarié...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Merci pour votre aide.
    J'ai essayé de comprendre votre code, sabotage mais sans succès, je ne saisis toujours pas...

    vorace, d'après vous, dois - je prendre les valeurs de la boucle dans un array() ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je ne saisis toujours pas
    il n'y a que 3 lignes dont 2 pour la requête, qu'est ce qui te pose problème ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Je voudrais savoir à quoi sert le UNIXTIME dans la requête ?
    Ensuite, comment exploiter correctement la boucle ?
    Car je reçois des erreurs lors des tentatives de comparaison de date dans le calendrier...

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je voudrais savoir à quoi sert le UNIXTIME dans la requête ?
    as-tu consulté la documentation ?

    Par exemple si tu veux controler s'il y a un evenement aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($tblEvenements['2011-03-05'])) {
        foreach($tblEvenements['2011-03-05'] as $description) {
          echo $description . '<br/>';
        }
    }
    ]
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Récupérer des données pour les insérer dans un schéma "radar"
    Par Onex3891 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/10/2013, 18h45
  2. récupération des données pour les afficher dans une ListView
    Par khoukha1 dans le forum Composants graphiques
    Réponses: 5
    Dernier message: 14/06/2012, 14h59
  3. [XL-2007] CheckBox ou Listbox pour sélectionner des critères et les afficher dans une autre feuille
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 19/08/2009, 15h19
  4. Réponses: 3
    Dernier message: 25/09/2008, 10h26
  5. Réponses: 6
    Dernier message: 30/11/2007, 12h01

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