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 :

Problème du boucle while en PHP


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème du boucle while en PHP
    Bonjour,

    Voilà je met en place un calendrier d'évènement et je bloque sur l'affichage des nombres d'évènement par date et par mois.
    le but c'est d'afficher le nombre d'evenement par date. J'arrive bien à les affiché mais en nombre multiple a cause de "while".

    exemple :
    pour la date du 9 Aôut j'ai deux events et le code m'affiche : nb event = 2 nb event = 2
    pour la date du 20 Aôut j'ai quatre events et le code m'affiche : nb event = 4 nb event = 4 nb event = 4 nb event = 4
    pour la date du 8 Aôut j'ai qu'un seul event et le code m'affiche : nb event = 1


    Ma question c'est comment n'affiché qu'une seule fois mon résultat. sans l'enlever dans la boucle?

    ci-dessous 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
    $nbt = mysql_query("SELECT * FROM calendar_events WHERE stat=0"); 
     
    while($devent = mysql_fetch_array($nbt)) { 
    $nbt2 = mysql_query("SELECT nb FROM calendar_events WHERE stat=0 AND event_day=".$devent["event_day"]." AND event_month=".$devent["event_month"].""); 
    $Fnbt = mysql_num_rows($nbt2); 
    $event = $calendar->event() 
        ->condition('month', $devent["event_month"]) 
        ->condition('day', $devent["event_day"]) 
        ->title('Tâches à faire') 
        ->output($Fnbt) //nombre d'event  
        ->add_class('custom-event-class'); 
    // affichage de l'event dans le calendrier 
    $calendar->attach($event); 
    }




    Merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Est ce que un group by dans ta requête ne fera pas l'affaire.

  3. #3
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Bonjour,

    Tu as essayé avec un DISTINCT pour ne pas avoir de doublons ? Car en fait actuellement, tu fais un SELECT *. Donc de TOUS les évènements, et forcément, quand il y en a plusieurs, il les prends en compte à chaque fois, d'où ton résultat.
    Ta première requête ne doit prendre en compte chaque date qu'une seule fois.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Est ce que un group by dans ta requête ne fera pas l'affaire.
    ca reviens au même,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbt2 = mysql_query("SELECT nb FROM calendar_events WHERE stat=0 AND event_day=".$devent["event_day"]." AND event_month=".$devent["event_month"]." group by event_day");
    pour la date du 9 Aôut j'ai deux events et le code m'affiche : nb event = 1 nb event = 1

    c'est surtout la répétition du résultat que je veux enlever, tout en gardant le bon nombre d'event par date.

  5. #5
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Citation Envoyé par kimpak Voir le message
    ca reviens au même,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbt2 = mysql_query("SELECT nb FROM calendar_events WHERE stat=0 AND event_day=".$devent["event_day"]." AND event_month=".$devent["event_month"]." group by event_day");
    pour la date du 9 Aôut j'ai deux events et le code m'affiche : nb event = 1 nb event = 1

    c'est surtout la répétition du résultat que je veux enlever, tout en gardant le bon nombre d'event par date.
    Avec un COUNT() ça fonctionnerait sans doute mieux

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations forums :
    Inscription : Octobre 2009
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    cout() était déjà passé mais la répétition des résultats veux toujours être à la mode , hors si j'enleve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // affichage de l'event dans le calendrier
    $calendar->attach($event);
    dans la boucle, il m'affiche exactement ce que je veux et en une seule fois. s'auf que je pers les autres résultats et je n'ai qu'une seule date avec un seul event d'afficher.

    Sinon distinct me retourne des erreur de syntaxe au niveau mysql_fetch_array.


  7. #7
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Ah ben oui logique, là vu que c'est dans ton while, ça va afficher pour chaque nb ( donc X fois par date si une date a plusieurs évènements ).
    Utilise un foreach.

Discussions similaires

  1. Problème de boucle while
    Par lecra dans le forum Langage
    Réponses: 4
    Dernier message: 30/01/2012, 13h55
  2. Problème de boucle while dans un popup
    Par drogba72 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2009, 14h19
  3. [MySQL] Problème sur Boucle While après un LEFT JOIN
    Par matperino dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/05/2007, 17h43
  4. [MySQL] Problème de boucle while
    Par Justin_C dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/12/2006, 19h16
  5. [MySQL] Problème de boucle while sur base de données
    Par Darhyl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/05/2006, 15h11

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