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 :

Requête sql SUM


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut Requête sql SUM
    Bonjour tout le monde
    Meilleurs Vœux 2020

    Voila j'ai fait ce petit bout de script (OK c'est du Mysql mais pour mon petit site cela me va )

    voila via une requête j'essaye par regroupement de nom afficher une somme, cependant mon tableau s'affiche mais pas la somme

    pouvez vous m'aider

    Merci voici mon début de script

    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
     
     
     
    		$host = '*****';
    		$user = '*****';
    		$pass = '****';
    		$db = '****';
     
     
    		$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    		mysql_select_db($db) or die ('Erreur :'.mysql_error());
    		$sql1 = 'SELECT nom1, SUM(count1) FROM pharma_protocole group by nom1';
    		$req1 = mysql_query($sql1) or die('Erreur : '.mysql_query());
    		$data1 = mysql_fetch_assoc($req1);
    		$somme = $data1['Nbre'];
     
    		echo '<td align="center"; style="color:white" bgcolor="#7d7d7d"><b><u>total</u></b></td>';
     
     
    	        echo '</tr>'."\n";
     
     
                   // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
     
     
                  while($row = mysqli_fetch_array($result)) {
     
     
                    echo '<tr>';
    		echo '<td align="center" valign="center">'.$row["nom1"].'</td>';
    		echo '<td align="center" valign="center">'.$row["count1"].'</td>';
    		echo '<td style="text-align:center; color:white; background-color: #990000;" title="Nombre de protooles :'.$somme.'"><b><u><u>'.$somme.'</u></b></td>';
     
     
    }
        echo '</table>'."\n";
     
     
        // fin du tableau.
     
     
    }
     
     
    else echo 'pas d\'enregistrements';
    encore merci à vous

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 67
    Points : 72
    Points
    72
    Par défaut
    Salut,

    A priori tu peux modifier ta requête comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql1 = 'SELECT nom1, SUM(count1) AS somme FROM pharma_protocole group by nom1';
    (somme peut être remplacé par n'importe quel mot)

    Puis dans ton code PHP :
    EDIT : il faut probablement que tu le fasses dans une requête à part... Ou alors tu peux incrémenter une variable $somme dans ta boucle, et l'afficher à la fin...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par UDSP50 Voir le message
    ...(OK c'est du Mysql mais pour mon petit site cela me va )...
    Excuse complètement bidon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$link = mysql_connect (....);
    ...
                  while($row = mysqli_fetch_array($result)) {
    mysqli_fetch_array

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    j'y croyais mais ca fait pareil
    Zut de Zut

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ton tableau affiche chaque valeur et la somme ou juste la somme ?

    Citation Envoyé par jreaux62 Voir le message
    Citation Envoyé par UDSP50 Voir le message
    OK c'est du Mysql mais pour mon petit site cela me va
    Excuse complètement bidon...
    Je confirme : qu'une base MySQL soit suffisante pour ton site est totalement justifié, que tu codes en utilisant une API qui n'existe plus dans la version actuellement supportée et ce depuis plus de 2 ans ne peut se justifier que par un verrouillage de montée de version sur une application existante par des autorités supérieures sur lesquelles tu n'as aucun contrôle.

    Si tu es sur un hébergeur grand public, tu t'exposes à plus ou moins court terme à une montée de version forcée en PHP 7, ce qui signifie que ton site cessera purement et simplement de fonctionner.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    en fait dans mes enregistrements j'ai

    toto - 1
    titi - 1
    tutu - 1
    titi - 1
    tutu - 1
    toto - 2

    jaimerai que mon tableau affiche

    titi - 2
    toto - 3
    tutu - 2

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    j'ai fais ca mais l'addition ne s'affiche toujours pas

    please help meeeeee


    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
     
     
    $select = '	SELECT *, SUM(count1) FROM pharma_protocole GROUP BY nom1';
    $result = $conn->query($select);
    $total = mysqli_num_rows($result);
     
    // si on a récupéré un résultat on l'affiche.
     
     
    if($total) {
     
     
        // debut du tableau
     
     
        echo '<table align="center" bgcolor="#FFFFFF">'."\n";
            echo '<tr>';
    		echo '<td align="center"; style="color:white" bgcolor="#7d7d7d"><b><u>nom1</u></b></td>';
    		echo '<td align="center"; style="color:white" bgcolor="#7d7d7d"><b><u>count1</u></b></td>';
    		echo '<td align="center"; style="color:white" bgcolor="#7d7d7d"><b><u>total</u></b></td>';
     
     
        // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
        while($row = mysqli_fetch_array($result)) {
     
     
            echo '<tr>';
    		echo '<td align="center" valign="center">'.$row["nom1"].'</td>';
    		echo '<td align="center" valign="center">'.$row["count1"].'</td>';
     
     
    }
        echo '</table>'."\n";
     
     
        // fin du tableau.
    nota :
    nom1 ets la colonne nom
    count1 est la colonne avec le chiffre qui doit être additionné par regroupement

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Comme te l'a indiqué PhiMau, il faut que tu utilises un alias pour nommer la colonne de la somme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $select = '	SELECT nom1, SUM(count1) as sum_count1 FROM pharma_protocole GROUP BY nom1';
    // ...
    while($row = mysqli_fetch_array($result)) {
        echo '<tr>';
        echo '<td align="center" valign="center">'.$row["nom1"].'</td>';
        echo '<td align="center" valign="center">'.$row["sum_count1"].'</td>';
        echo '</tr>' ; // ne pas oublier de finir la ligne ;) 
     
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Octobre 2019
    Messages : 67
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par UDSP50 Voir le message
    en fait dans mes enregistrements j'ai

    toto - 1
    titi - 1
    tutu - 1
    titi - 1
    tutu - 1
    toto - 2

    jaimerai que mon tableau affiche

    titi - 2
    toto - 3
    tutu - 2

    Désolé mais c'est toujours pas clair pour moi... Tes 2 exemples sont les mêmes, je vois pas ce que tu essayes de faire.

    Afficher la somme totale ? la somme de quoi ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Comme Celira :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $select = "SELECT 
    	nom1,
    	SUM(count1) AS sum_count1
    	FROM liste
    	GROUP BY nom1";

    Ensuite, il ne faut pas mélanger les syntaxes "Orienté Objet" et "procédural"...

    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
    <?php
    // connexion à la Base de Données
    $mysqli = new mysqli(.........................................);
    // ------------
    $select = "SELECT 
    	nom1,
    	SUM(count1) AS sum_count1
    	FROM liste
    	GROUP BY nom1";
    // ------------
    $result = $mysqli->query($select);
    $total = $result->num_rows;
    if( $total > 0 )
    {
            echo 
    '<table>
      <thead>
    	<tr>
    		<th>nom1</th>
    		<th>sum_count1</th>
    	</tr>
      </thead>
      <tbody>
    ';
     
    	while( $row = $result->fetch_array(MYSQLI_ASSOC) )
    	{
    		echo 
    '	<tr>
    		<td>'.$row["nom1"].'</td>
    		<td>'.$row["sum_count1"].'</td>
    	</tr>
    ';
    	}
    	echo 
    '  </tbody>
    </table>
    ';
    }
    ?>
    Dernière modification par Invité ; 08/01/2020 à 19h40.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    Bonjour

    Merci celira, ton code fonctionne très très très bien

    Je ne connais pas les limites de calcul de php

    Là sur ma colonne1 (nom1), si j'ai plusieurs fois le nom toto, il filtre bien et m'additionne bien les chiffres dans count1 associé au mot toto

    je ne sais pas si c'est possible mais peux t'on faire une addition totale s'il trouve le mot toto dans la colonne2 (nom2) avec count2 , colonne qui stock le chiffre associé

    ainsi si dans ma base j'ai 4 colonnes

    nom1 | count1 | nom2 | count2 |--------------------------------------------------------------------
    toto | 1 | titi | 1 |
    tutu | 1 | toto | 1 |
    titi | 1 | | |
    titi | 1 | toto | 1 |


    Tableau a afficher

    nom | total | --------------------------------
    toto | 3 |
    tutu | 1 |
    titi | 3 |

    encore merci de votre aide vous êtes précieux

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Là tu devrais peut-être poser la question sur le forum MySQL.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $select = "SELECT 
    	DISTINCT PP1.nom1,
    	( SELECT SUM(PP2.count1) FROM pharma_protocole PP2 WHERE PP1.nom1=PP2.nom1 )
    	+
    	( SELECT SUM(PP3.count2) FROM pharma_protocole PP3 WHERE PP1.nom1=PP3.nom2 )
    	AS sum_total
    	FROM pharma_protocole PP1";

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 411
    Points : 117
    Points
    117
    Par défaut
    je comprends pas les PP1 PP2

  15. #15
    Invité
    Invité(e)
    Par défaut
    Ce sont des ALIAS des noms des tables, car on a 3 fois la même table, utilisée dans 3 contextes différents.
    Il faut les différencier.

Discussions similaires

  1. [WD14] Requète SQL Sum
    Par AUZUR dans le forum WinDev
    Réponses: 11
    Dernier message: 25/09/2009, 17h27
  2. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51
  3. [SQL] Requête fonction SUM
    Par ribrok dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/01/2007, 16h45
  4. Requête SQL avec UNION, sum et GROUP BY
    Par Guitariff dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/12/2006, 13h48
  5. Pb sur SUM dans requête SQL exécutée sous VB
    Par MAKSIM dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/11/2006, 17h07

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