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 :

[Tableaux] Addition de nombres dans une boucle.


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut [Tableaux] Addition de nombres dans une boucle.
    Bonjour.

    J'effectue une requete.
    Après cette requête je fais cette boucle suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($val=mysql_fetch_assoc($result))
      { 
       $nom_projet=$val['nom_projet'];
       $nb_heures += $val['nb_heures'];
    Maintenant toujours dans la boucle de tant que, c'est obligatoire dans mon cas il faut que je puisse afficher $nom_projet avec unicité du nom et le nombre d'heures.

    Imaginions je récupérer comme nom de projet (cela sous entends qu'on a bouclé 5 fois):
    projet,projet1,projet1,projet2,projet3
    et commes heures : 10,5,20,10,5

    J'aurais donc récupérer du coup 5 heures.

    Comme on peux le voir j'ai 3 projet1 qui au final ne devra s'afficher qu'une fois et a cote on devra afficher le nombre d'heures de ce projet.

    Mais chose pas très évidente il faudra donc afficher la somme des 3 premiers résultats sachant que cela s'effectue dans la boucle (la est ma difficulté).

    Au final moi je veux afficher
    Projet 1 : 35 heures
    Projet 2 : 10 heures
    Projet 3 : 5 heures.

    Quelqu'un a une idée dans la manière de procéder.

    Merci

  2. #2
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Utilise un tableau associatif :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $projets = array();
    while($val=mysql_fetch_assoc($result))
    { 
        $nom_projet = $val['nom_projet'];
        $nb_heures += $val['nb_heures'];
     
        // Par défaut PHP prend la valeur 0 à ton tableau.
        $projets[$nom_projet] += $nb_heures;
    }
     
    print_r($projets);

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Ou sinon je pense qu'il y a moyen de faire ça au propre directement dans la requête SQL avec en se basant sur SUM et GROUP BY.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Amara
    Ou sinon je pense qu'il y a moyen de faire ça au propre directement dans la requête SQL avec en se basant sur SUM et GROUP BY.
    Ma requete est deja celle ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *, SUM(nb_heures) AS nb_heures  FROM `pointage`  WHERE `id_utilisateur` LIKE '$bilan_personne' AND `nom_projet` = '$code_projet' AND (`date` between '$bilan_du' and '$bilan_au') AND `nature` LIKE '$bilan_nature' GROUP BY 'nature'
    Pour Korko Fain, en fait je ne vois pas en quoi ca peux m'aider.
    Merci bien, quand même.

  5. #5
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Si tu remplaces * par nature ça te regroupe pas les résultats comme il faut ?

    Le regroupement c'est pas plutôt sur nom_projet qu'il faut le faire d'ailleurs au lieu de nature ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Amara
    Si tu remplaces * par nature ça te regroupe pas les résultats comme il faut ?

    Le regroupement c'est pas plutôt sur nom_projet qu'il faut le faire d'ailleurs au lieu de nature ?
    En fait il y a un cheminement logique, fait de trois boucles (requêtes successives).
    A ce moment la pour que le reste soit logique je ne peux pas mettre autre chose que ce qu'il y a actuellement.

    C'est pour ca j'essaye de trouver une combine pour m'en sortir dans mon while de cette requete.

  7. #7
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dans ce cas la solution de Korko Fain est très bien avec le tableau associatif avec des paires nom_projets / nombre d'heures

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Ok merci du conseil.

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

Discussions similaires

  1. [Tableaux] Une rêquete dans une boucle
    Par picsoun dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 14h46
  2. Réponses: 6
    Dernier message: 17/03/2006, 12h23
  3. [Tableaux] Boucle dans une boucle
    Par spawns dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2006, 13h11
  4. [Tableaux] DELETE dans une boucle
    Par mikedimoi dans le forum Langage
    Réponses: 5
    Dernier message: 15/01/2006, 18h16
  5. [Tableaux] Retour Chariot dans une boucle
    Par tchoukapi dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2005, 14h45

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