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

PHP & Base de données Discussion :

[Conception] Faire une somme de valeurs définies par une boucle


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut [Conception] Faire une somme de valeurs définies par une boucle
    Bonjour à tous et merci à vous de vous attardez sur mon problème,

    Mon problème est le suivant (je l'ai simplifié):

    J'ai une table composée de 2 colonnes id et prix et 5 lignes.
    J'aimerais additionner la valeur prix de la 2e ligne avec celle de la 3e ligne.

    Jusque là rien de bien compliqué me direz-vous. Seulement voilà, mes id sont déterminés par une boucle... Comment dès lors pointer les id qui m'intéresse (ici 2 et 3)....

    J'espère avoir été assez clair ...

  2. #2
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut
    dans ta boucle qui te donne tes id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $somme = 0;
    do
    {
      $somme = $somme + table[$id]['prix'];
    }

  3. #3
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Citation Envoyé par alexmorel
    dans ta boucle qui te donne tes id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $somme = 0;
    do
    {
      $somme = $somme + table[$id]['prix'];
    }
    Doit manquer un while dans ton code je pense ...

    Pour les id 2 et 3 pas besoin de boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $somme = table[2]['prix']+table[3]['prix'];

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    Citation Envoyé par max44410
    Doit manquer un while dans ton code je pense ...

    Pour les id 2 et 3 pas besoin de boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $somme = table[2]['prix']+table[3]['prix'];
    D'accord avec toi, sauf que j'ai simplifié mon problème pour qu'il vous soit plus compréhensible... Il s'avère en fait que mes ids sont définis par un formluraire. Les ids de ce formulaire sont récupérés au moyen d'une boucle. D'où mon probleme de: faire une somme dans une boucle...

    Pour reformuler en d'autres termes et pour récupere ton code, comment ferais-tu maintenant pour aditionner n valeurs ??

  5. #5
    Invité
    Invité(e)
    Par défaut
    Essaie d'être un petit peu plus clair...

    As-tu toujours 2 valeurs à additionner? Ce sont 2 valeurs récupérées du formulaire? Peux-tu en entrer plusieurs ou es-tu limité à 2?

    webrider

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Pour infos tu peux aussi faire ca en SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(price) FROM `table` WHERE id IN(2,4)
    ajoute les prix des id 2 et 4.

    Bye

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    OK je recommence avec 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
    // Je récupère mes données
    $options_text = $_GET['options_text']; // Cette valeur arrive sous la forme un chiffre/un chiffre/un chiffre/un chiffre...	(ex: 5/8/9/10..)	
    
    // Je récupère chacun des chiffres séparés par un slash - chaque chiffre correspondra à un id
    $split = explode("/", $options_text);
    			
    // On lance une boucle. 
    
    for($i = 1; $i < count($split); $i++){
    		
    // On sélectionne dans les DB les lignes qui nous concernent
    		
    $query = "SELECT * FROM $table WHERE id=$split[$i]";
    $result = mysql_query($query);
    
    // On lance une deuxième boucle. Elle permet d'aller chercher les valeurs correspondantes à chaque id
    
    $j=0;
    while ($j < $nb){
    
    $article = mysql_result($result,$j,"article");
    $prix = mysql_result($result,$j,"prix");
    $description = mysql_result($result,$j,"description");
    		
    echo "$article - $prix - $description";
    
    $j++; 
    // On ferme les 2 boucles
    }
    }
    J'obtiendrai donc plusieures lignes comprenant un article, son prix et sa description..

    J'aimerais maintenant faire la somme des prix de ces articles en sachant que:
    - Le nombre d'articles varient (en fonction du nombre d'id)
    - Les ids sont déterminés par une boucle

    J'espère avoir été assez clair cette fois-ci

  8. #8
    Invité
    Invité(e)
    Par défaut
    C'est plus facile avec du code

    Voilà qui devrait régler ton problème

    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
    // Je récupère mes données
    $options_text = $_GET['options_text']; // Cette valeur arrive sous la forme un chiffre/un chiffre/un chiffre/un chiffre...	(ex: 5/8/9/10..)	
    
    // Je récupère chacun des chiffres séparés par un slash - chaque chiffre correspondra à un id
    $split = explode("/", $options_text);
    			
    // On lance une boucle. 
    
    $total =0; // Le total est à 0 avant la boucle
    
    for($i = 1; $i < count($split); $i++){
    		
    // On sélectionne dans les DB les lignes qui nous concernent
    		
    $query = "SELECT * FROM $table WHERE id=$split[$i]";
    $result = mysql_query($query);
    
    // On lance une deuxième boucle. Elle permet d'aller chercher les valeurs correspondantes à chaque id
    
    $j=0;
    while ($j < $nb){
    
    $article = mysql_result($result,$j,"article");
    $prix = mysql_result($result,$j,"prix");
    $description = mysql_result($result,$j,"description");
    		
    echo "$article - $prix - $description";
    
    $j++;
    
    $total += $prix; // A chaque passage $total s'incrémente de $prix
     
    // On ferme les 2 boucles
    }
    }
    
    echo $total;
    webrider

  9. #9
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, excuse-moi, mais je n'ai pas bien saisi le problème : d'où vient le $nb dans ta condition de la boucle while ?

    Sinon, petites remarques en passant :
    - Tu fais ence qui est déconseillé : dans ton cas, tu n'as besoin apparemment que du prix ; tu devrais donc faire- Tu fais autant de requête que tu reçois d'ID, tu pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = 'SELECT prix FROM ' . $table . ' WHERE id IN = (' . implode(',', $split) . ')';
    et tu itères sur la collection que tu reçois

    Bon développement

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 98
    Points : 86
    Points
    86
    Par défaut
    MERCI beaucoup webrider pour ta solution! Vu comme ça évidemment c'est très simple... Et dire que je me suis cassé la tête pour rien Je ne connaissais pas +=, autant pour moi..

    Nesmontou, je n'ai pas eu l'occasion d'essayer ta solution mais merci tout de même!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. Réponses: 15
    Dernier message: 21/05/2010, 00h36
  3. Réponses: 8
    Dernier message: 15/12/2009, 11h04
  4. Réponses: 9
    Dernier message: 18/02/2008, 11h25
  5. Faire renvoyer une valeur 'true' par une methode ?
    Par patthepat dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 10/05/2007, 05h51

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