Grouper et somme
Résolu/Fermé
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
-
8 nov. 2021 à 16:36
jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025 - 19 nov. 2021 à 14:55
jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025 - 19 nov. 2021 à 14:55
A voir également:
- Grouper et somme
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Somme si ens plusieurs critères même colonne ✓ - Forum Excel
- Erreur de somme de contrôle winrar - Forum Logiciels
3 réponses
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
Modifié le 8 nov. 2021 à 17:38
Modifié le 8 nov. 2021 à 17:38
Bonjour,
Déjà.. as tu testé ta requête sql DIRECTEMENT dans ta BDD ( via l'onglet requête (ou sql) de phpmyadmin ??
Car je pense que ton souci vient déjà de là
NB: pour tester, remplacer les variables PHP par de vraies valeurs disponibles dans la bdd bien entendu ...
Et donc... tu fais des group by .. mais tu sembles avoir oublié d'utiliser la fonction SUM ou COUNT ....
C'est donc un souci de sql et non de php ...
Déjà.. as tu testé ta requête sql DIRECTEMENT dans ta BDD ( via l'onglet requête (ou sql) de phpmyadmin ??
Car je pense que ton souci vient déjà de là
SELECT date_appel , commentaires , nom_technicien , nombre_panne FROM rapports WHERE year(date_appel)='$year' AND nom_client='$nom_client' AND n_contrat='$n_contrat' AND repere='$repere' GROUP BY MONTHNAME(date_appel)
NB: pour tester, remplacer les variables PHP par de vraies valeurs disponibles dans la bdd bien entendu ...
Et donc... tu fais des group by .. mais tu sembles avoir oublié d'utiliser la fonction SUM ou COUNT ....
C'est donc un souci de sql et non de php ...
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
8 nov. 2021 à 17:58
8 nov. 2021 à 17:58
MERCI pour ta réponse, je viens d'essayer et effectivement le code marche dans SQL lorsque je remplace les variables mais mon soucis demeure toujours :
voir image :
![](https://img-19.ccm2.net/Jdy7ggRxo8tiuqONdErP87xUZwk=/440x/8a2d29e4015547ceb1f0a8b0b82c087e/ccm-ugc/stat2.png)
je veux que mettre ensemble pas les séparer et aussi stp donne moi le code pour le calcule de l’année?
voir image :
![](https://img-19.ccm2.net/Jdy7ggRxo8tiuqONdErP87xUZwk=/440x/8a2d29e4015547ceb1f0a8b0b82c087e/ccm-ugc/stat2.png)
je veux que mettre ensemble pas les séparer et aussi stp donne moi le code pour le calcule de l’année?
<table class="table table-bordered" width="100%" cellspacing="0"> <thead class="bg-dark font-weight-bold text-white"> <tr align=center> <th width="10%">DATE</th> <th>COMMENTAIRES</th> <th>TECHNICIENS</th> <th width="5%">PANNE</th> </tr> </thead> <tbody> <?php $connexion = mysqli_connect("localhost","root","","adminpanel") or die("Erreur de connexion."); if(ISSET($_POST['afficher_btn'])){ $year = $_POST['year']; $nom_client = $_POST['nom_client']; $n_contrat = $_POST['n_contrat']; $repere = $_POST['repere']; if($year != "" || $nom_client != "" || $n_contrat != "" || $repere != ""){ $sql = "SELECT MONTHNAME(date_appel) as MONTHNAME, commentaires, nom_technicien, nombre_panne, SUM(nombre_panne) as TOTAL FROM rapports WHERE year(date_appel)='$year' AND nom_client='$nom_client' AND n_contrat='$n_contrat' AND repere='$repere' GROUP BY MONTHNAME(date_appel), commentaires, nom_technicien, nombre_panne"; $query = mysqli_query($connexion, $sql) or die(mysqli_error()); while($row = mysqli_fetch_array($query)){ echo "<tr> <td>".$row['MONTHNAME']."</td> <td>".$row['commentaires']."</td> <td>".$row['nom_technicien']."</td> <td>".$row['nombre_panne']."</td> </tr>"; ?> <tr> <th colspan="3">Total <?php echo $row['MONTHNAME'];?></th> <td><?php echo $row['TOTAL'];?></td> </tr> <?php } ?> <tr> <th colspan="3">TOTAL ANNEE</th> <td><?php echo $row['TOTALS'];?></td> </tr> <?php }else{ ?> <tr> <td colspan=4 align=center>Pas d'enregistrement touvé !</td> </tr> <?php } } ?> </tbody> </table>
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
8 nov. 2021 à 19:51
8 nov. 2021 à 19:51
Je doute que la requête SQL te retourne réellement ce que tu espères....
Pourrais tu nous montrer le résultat de la requête lorsque tu la testes dans phpmyadmin ??
A noter que tu ne peux pas avoir à la fois nombre_panne et SUM(nombre_panne) as TOTAL
Il ne faut garder que la somme...
et donc, remplacer
par :
Et pour le grand total .. il te suffit d'initialiser une variable avant ta boucle ..
puis, dans ta boucle, y additionner le total de chaque mois..
PS: Ici on ne donne pas du code tout fait ... mais on veut bien aider à corriger ou à améliorer.
Pourrais tu nous montrer le résultat de la requête lorsque tu la testes dans phpmyadmin ??
A noter que tu ne peux pas avoir à la fois nombre_panne et SUM(nombre_panne) as TOTAL
Il ne faut garder que la somme...
et donc, remplacer
<td>".$row['nombre_panne']."</td>
par :
<td>".$row['TOTAL']."</td>
Et pour le grand total .. il te suffit d'initialiser une variable avant ta boucle ..
puis, dans ta boucle, y additionner le total de chaque mois..
PS: Ici on ne donne pas du code tout fait ... mais on veut bien aider à corriger ou à améliorer.
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
>
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
9 nov. 2021 à 14:22
9 nov. 2021 à 14:22
LORSQUE JE TESTE DANS PHPMYADMIN :
![](https://img-19.ccm2.net/Q1eU7lHuRk6SPisD3tJ5k0_57ps=/440x/aeb48ec8a9f64d2cbfac3343d73101be/ccm-ugc/BD.png)
je sais qu'on donne pas les code tout fait mais si je demande c'est parce que je suis perdu la. déjà vous verrez que moi même j'ai codé et je veux qu'on aide en fonction de mon travail.
Mon soucis c'est que je n'arrive pas a grouper les mêmes mois et faire la somme de l’année malgré votre aide.
![](https://img-19.ccm2.net/Q1eU7lHuRk6SPisD3tJ5k0_57ps=/440x/aeb48ec8a9f64d2cbfac3343d73101be/ccm-ugc/BD.png)
je sais qu'on donne pas les code tout fait mais si je demande c'est parce que je suis perdu la. déjà vous verrez que moi même j'ai codé et je veux qu'on aide en fonction de mon travail.
Mon soucis c'est que je n'arrive pas a grouper les mêmes mois et faire la somme de l’année malgré votre aide.
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
>
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
9 nov. 2021 à 14:39
9 nov. 2021 à 14:39
Comme tu peux le voir, tu as deux fois la ligne "november" ...
cela est dû, comme je te l'ai dis ... au fait que tu as, dans ta requête, nombre_panne et SUM(nombre_panne) as TOTAL
Il faut retirer le "nombre_panne" et ne garder que celui avec le SUM
cela est dû, comme je te l'ai dis ... au fait que tu as, dans ta requête, nombre_panne et SUM(nombre_panne) as TOTAL
Il faut retirer le "nombre_panne" et ne garder que celui avec le SUM
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
>
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
11 nov. 2021 à 14:43
11 nov. 2021 à 14:43
Bonjour
je viens de faire ta proposition , il y a toujours deux ligne "november" ou il accumule en un c'est pas comme ça je veux.
je veux comme ça :
TABLEAU
DATE | COMMENTAIRES | NOM | PANNE
2021-09-10 | texte | JOEL | 1
2021-09-11 | texte | MARX | 1
2021-09-23 | texte | JEAN | 1
nfois
Subtotal NOVEMBER = 3
2021-10-10 | texte | JOEL | 1
2021-10-11 | texte | MARX | 1
nfois
Subtotal OCTOBER = 2
Total année = 5
je veux qu'il liste tous les éléments et non grouper
comme ça :
DATE | COMMENTAIRES | NOM | PANNE
2021-09-10 | texte | JOEL | 3
Subtotal NOVEMBER = 3
2021-10-10 | texte | JOEL | 2
Subtotal OCTOBER = 2
Total année = 5
le soucis de calcul c'est régler mais lister non
voici le code améliorer :
affichage :
![](https://img-19.ccm2.net/FyZINfWi0JBV3K5B7bCz1Rxgxos=/440x/0428c30e72344c52a0f7af5a13d4a28b/ccm-ugc/code_am.png)
je viens de faire ta proposition , il y a toujours deux ligne "november" ou il accumule en un c'est pas comme ça je veux.
je veux comme ça :
TABLEAU
DATE | COMMENTAIRES | NOM | PANNE
2021-09-10 | texte | JOEL | 1
2021-09-11 | texte | MARX | 1
2021-09-23 | texte | JEAN | 1
nfois
Subtotal NOVEMBER = 3
2021-10-10 | texte | JOEL | 1
2021-10-11 | texte | MARX | 1
nfois
Subtotal OCTOBER = 2
Total année = 5
je veux qu'il liste tous les éléments et non grouper
comme ça :
DATE | COMMENTAIRES | NOM | PANNE
2021-09-10 | texte | JOEL | 3
Subtotal NOVEMBER = 3
2021-10-10 | texte | JOEL | 2
Subtotal OCTOBER = 2
Total année = 5
le soucis de calcul c'est régler mais lister non
voici le code améliorer :
<?php
$connexion = mysqli_connect("localhost","root","","adminpanel") or die("Erreur de connexion.");
if(ISSET($_POST['afficher_btn'])){
$year = $_POST['year'];
$nom_client = $_POST['nom_client'];
$n_contrat = $_POST['n_contrat'];
$repere = $_POST['repere'];
if($year != "" || $nom_client != "" || $n_contrat != "" || $repere != ""){
$sql = "SELECT MONTHNAME(date_appel) as MONTHNAME, date_appel, commentaires, nom_technicien, nombre_panne,
SUM(nombre_panne) as SUBTOTAL
FROM rapports
WHERE year(date_appel)='$year' AND nom_client='$nom_client' AND n_contrat='$n_contrat' AND repere='$repere'
GROUP BY MONTH(date_appel)
ORDER BY date_appel";
$query = mysqli_query($connexion, $sql) or die(mysqli_error());
while($row = mysqli_fetch_array($query)){
echo '<tr>';
echo '<td>'.$row['date_appel'].'</td>';
echo '<td>'.$row['commentaires'].'</td>';
echo '<td>'.$row['nom_technicien'].'</td>';
echo '<td align=center>'.$row['nombre_panne'].'</td>';
echo '</tr>';
$total += $row['SUBTOTAL'];
?>
<tr class="text-primary" align=center>
<th colspan="3">Total <?php echo $row['MONTHNAME'];?></th>
<td><?php echo $row['SUBTOTAL'];?></td>
</tr>
<?php
}
?>
<tr class="bg-light text-dark font-weight-bold">
<th colspan="3">TOTAL ANNEE</th>
<td align=center><?php echo $total ?></td>
</tr>
<?php
}
}
?>
affichage :
![](https://img-19.ccm2.net/FyZINfWi0JBV3K5B7bCz1Rxgxos=/440x/0428c30e72344c52a0f7af5a13d4a28b/ccm-ugc/code_am.png)
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
>
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
11 nov. 2021 à 15:56
11 nov. 2021 à 15:56
Pareil pour les dates...
Tu ne peux pas avoir à la fois
MONTHNAME(date_appel) as MONTHNAME,
et date_appel....
Tu ne peux pas avoir à la fois
MONTHNAME(date_appel) as MONTHNAME,
et date_appel....
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
11 nov. 2021 à 17:07
11 nov. 2021 à 17:07
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
11 nov. 2021 à 22:18
11 nov. 2021 à 22:18
Ah la la la la .....
Déjà.. on n'est pas frères ....
Ensuite.. je t'ai dit qu'une requête SQL ça se teste d'abord DANS PHPMYADMIN ...( et pas via le code php )
Une fois que ta requête te donnera les bonnes infos dans phpmyadmin... là tu pourras la mettre dans ton code php.
Ensuite..
Tu veux faire une somme en groupant par les "mois"
Il faut donc le SUM() .. et comme tu fais un GROUP BY MONTHNAME ... il ne faut garder dans la partie select que le MONTHNAME ..
Alors.. oui.. je pourrais te donner la requête à écrire ... mais ce n'est pas ma façon de voir les choses ( et puis ici on ne fait pas le taff à la place des autres)
Je préfère que tu comprennes un minimum ... plutot que de copier/coller bêtement la réponse...
Donc si tu lieu de dire que ça ne mène à rien.. tu prenais 5 minutes pour lire et appliquer les conseilles qu'on te donne.. ça irait surement mieux...
Déjà.. on n'est pas frères ....
Ensuite.. je t'ai dit qu'une requête SQL ça se teste d'abord DANS PHPMYADMIN ...( et pas via le code php )
Une fois que ta requête te donnera les bonnes infos dans phpmyadmin... là tu pourras la mettre dans ton code php.
Ensuite..
Tu veux faire une somme en groupant par les "mois"
Il faut donc le SUM() .. et comme tu fais un GROUP BY MONTHNAME ... il ne faut garder dans la partie select que le MONTHNAME ..
Alors.. oui.. je pourrais te donner la requête à écrire ... mais ce n'est pas ma façon de voir les choses ( et puis ici on ne fait pas le taff à la place des autres)
Je préfère que tu comprennes un minimum ... plutot que de copier/coller bêtement la réponse...
Donc si tu lieu de dire que ça ne mène à rien.. tu prenais 5 minutes pour lire et appliquer les conseilles qu'on te donne.. ça irait surement mieux...
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
>
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
12 nov. 2021 à 22:48
12 nov. 2021 à 22:48
ok merci c'est gentil
d’après tes explications voici le code modifier :
affichage dans PHPMYADMIN :
![](https://img-19.ccm2.net/PuNQ3xPhNz67ItP0SVCG9UzyV5M=/440x/7af83467a4b242baa1b8e257905e474d/ccm-ugc/bd.png)
maintenant comment afficher le sous total mois et le total année?
d'apres mon code :
affichage page web :
![](https://img-19.ccm2.net/whLQPPownv98lessD8CpNCYLg9s=/440x/9d92899328c94e95bd8417891b568687/ccm-ugc/bd.png)
d’après tes explications voici le code modifier :
$sql = "SELECT date_appel, commentaires, nom_technicien, SUM(nombre_panne) as nombre_panne, MONTHNAME(date_appel) as MONTHNAME FROM rapports WHERE year(date_appel)='$year' AND nom_client='$nom_client' AND n_contrat='$n_contrat' AND repere='$repere' GROUP BY MONTH(date_appel), commentaires, nom_technicien";
affichage dans PHPMYADMIN :
![](https://img-19.ccm2.net/PuNQ3xPhNz67ItP0SVCG9UzyV5M=/440x/7af83467a4b242baa1b8e257905e474d/ccm-ugc/bd.png)
maintenant comment afficher le sous total mois et le total année?
d'apres mon code :
<?php $connexion = mysqli_connect("localhost","root","","adminpanel") or die("Erreur de connexion."); if(ISSET($_POST['afficher_btn'])){ $year = $_POST['year']; $nom_client = $_POST['nom_client']; $n_contrat = $_POST['n_contrat']; $repere = $_POST['repere']; if($year != "" || $nom_client != "" || $n_contrat != "" || $repere != ""){ $sql = "SELECT date_appel, commentaires, nom_technicien, SUM(nombre_panne) as nombre_panne, MONTHNAME(date_appel) as MONTHNAME FROM rapports WHERE year(date_appel)='$year' AND nom_client='$nom_client' AND n_contrat='$n_contrat' AND repere='$repere' GROUP BY MONTH(date_appel), commentaires, nom_technicien"; $query = mysqli_query($connexion, $sql) or die(mysqli_error()); while($row = mysqli_fetch_array($query)){ echo '<tr>'; echo '<td>'.$row['date_appel'].'</td>'; echo '<td>'.$row['commentaires'].'</td>'; echo '<td>'.$row['nom_technicien'].'</td>'; echo '<td align=center>'.$row['nombre_panne'].'</td>'; echo '</tr>'; $total += $row['nombre_panne']; ?> <tr class="text-primary" align=center> <th colspan="3">Total <?php echo $row['date_appel'];?></th> <td><?php echo $row['nombre_panne']; ?></td> </tr> <?php } ?> <tr class="bg-light text-dark font-weight-bold"> <th colspan="3">TOTAL ANNEE</th> <td align=center><?php echo $total ?></td> </tr> <?php } } ?>
affichage page web :
![](https://img-19.ccm2.net/whLQPPownv98lessD8CpNCYLg9s=/440x/9d92899328c94e95bd8417891b568687/ccm-ugc/bd.png)
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
>
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
12 nov. 2021 à 23:59
12 nov. 2021 à 23:59
SELECT date_appel,
NONNNNNN!!!!!!!!!
SELECT MONTH(date_appel) as MOIS,
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
>
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
13 nov. 2021 à 04:45
13 nov. 2021 à 04:45
$sql = "SELECT month(date_appel) as date_appel, commentaires, nom_technicien, SUM(nombre_panne) as nombre_panne, MONTHNAME(date_appel) as MONTHNAME FROM rapports WHERE year(date_appel)='$year' AND nom_client='$nom_client' AND n_contrat='$n_contrat' AND repere='$repere' GROUP BY MONTH(date_appel), commentaires, nom_technicien";
jordane45
Messages postés
38429
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 février 2025
4 735
>
oliviernapoleon
Messages postés
21
Date d'inscription
mercredi 8 septembre 2021
Statut
Membre
Dernière intervention
1 décembre 2021
13 nov. 2021 à 10:05
13 nov. 2021 à 10:05
et donc, ça donne quoi dans phpmyadmin ??