Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2011, 11h18   #1
Invité de passage
 
rolland rahajason
Inscription : octobre 2009
Messages : 3
Détails du profil
Informations personnelles :
Nom : rolland rahajason
Localisation : Madagascar

Informations forums :
Inscription : octobre 2009
Messages : 3
Points : 0
Points : 0
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 :
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.
kimpak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h22   #2
Membre chevronné
 
Homme Taoufiq Ben
Développeur Web
Inscription : mai 2009
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Taoufiq Ben
Âge : 25
Localisation : Maroc

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

Informations forums :
Inscription : mai 2009
Messages : 460
Points : 644
Points : 644
Est ce que un group by dans ta requête ne fera pas l'affaire.
m4riachi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h26   #3
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
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.
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h30   #4
Invité de passage
 
rolland rahajason
Inscription : octobre 2009
Messages : 3
Détails du profil
Informations personnelles :
Nom : rolland rahajason
Localisation : Madagascar

Informations forums :
Inscription : octobre 2009
Messages : 3
Points : 0
Points : 0
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 :
$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.
kimpak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h33   #5
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
Citation:
Envoyé par kimpak Voir le message
ca reviens au même,

Code :
$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
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h48   #6
Invité de passage
 
rolland rahajason
Inscription : octobre 2009
Messages : 3
Détails du profil
Informations personnelles :
Nom : rolland rahajason
Localisation : Madagascar

Informations forums :
Inscription : octobre 2009
Messages : 3
Points : 0
Points : 0
cout() était déjà passé mais la répétition des résultats veux toujours être à la mode , hors si j'enleve
Code :
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.

kimpak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 13h28   #7
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 773
Points : 2 332
Points : 2 332
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.
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h53.


 
 
 
 
Partenaires

Hébergement Web