Recuperation des valeur sur une tableau

Résolu
solomonn - 15 févr. 2015 à 14:54
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
- 17 févr. 2015 à 11:32
Bonjour,
J me de debute en PHP et je voulais faire une somme des montants selectionnée dans la base. Merci

9 réponses

BunoCS
Messages postés
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
103
15 févr. 2015 à 15:01
Bonjour,

Et quel est le problème? La requête vers la base? La somme? L'affichage?
0
La requête pour vers la base! C'est à dire la requête pour recuperer les montants qui sont cochés à l'aide d'une checkbox sur ma formulaire
0
BunoCS
Messages postés
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
103
15 févr. 2015 à 15:36
Ne connaissant ni ta base, ni ton modèle, cela va être difficile de t'aider...
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

15 févr. 2015 à 15:45

Voici l'image!
L'idée c'est que que si je selectionne un ou plusieurs donnée du tableau; je veux avoir la somme du colonne montant total du donnée selectionnée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

Modifié par solomonn le 15/02/2015 à 16:16
Et voici mon code après le traitement de l'élément selectionné
<?php
require('connexion.php');
//Selction des données

$choix ='';
for ($i=0;$i<count($_POST['voir']);$i++)
{
//on concatène
$choix .= $_POST['voir'][$i].'|';
}

$explore = explode('|',$choix);
//foreach ($explore as $choix){
$client = $_GET["client"] ;
foreach ($explore as $choix){

$trucmachin = mysql_query("SELECT SUM(montant_t) as somme FROM ".$recette." WHERE id = '$choix'");

$bidule= mysql_fetch_assoc($trucmachin);
$b = $bidule['somme'];
echo "$b";

}
?>

Et ca affiche pas la somme mais ca affiche le montant du premier element selectionné
0
BunoCS
Messages postés
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
103
15 févr. 2015 à 17:13
Je ne maitrise pas trop les bdd, mais je le ferais en 2 temps:
- récupération des entrées correspondant à ton "choix"
- parcours des résultats pour additionner les montants totaux

Il y a un exemple assez parlant dans la doc de mysql_query()
0
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
356
15 févr. 2015 à 17:20
Bonjour

avec SUM il suffi d' utiliser GROUP BY
0
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
356
Modifié par jordane45 le 15/02/2015 à 17:48
SELECT SUM(montant_t) as somme
FROM ".$recette."  
WHERE id = '$choix'
GROUP BY id

0
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
356
Modifié par jordane45 le 15/02/2015 à 17:57
Au passage....
Plutôt que faire une boucle sur CHAQUE élément selectionné... tu pourrais utiliser une instruction sql : IN

SELECT SUM(montant_t) as somme
FROM ".$recette."  
WHERE id IN ($choix)
GROUP BY id


$Choix devant dans ce cas précis une STRING de la forme '1,2,3,4,5'
que l'on peut assez facilement obtenir à l'aide d'un IMPLODE de ta variable $_POST['voir']

<?php
require('connexion.php'); 
//Selction des données
if(isset($_POST['voir'])){
 $choix = implode(',' ,$_POST['voir']);
 $sql = "SELECT SUM(montant_t) as somme
             FROM ".$recette."  
             WHERE id IN ($choix)
             GROUP BY id";
 $trucmachin   = mysql_query($sql) or die("Erreur dans la requête<br>".$sql);

} else{
 echo " Aucun choix disponible" ;
}

Et si tu veux la somme globale plutôt que par ID ... tu peux retirer le GROUP BY
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
> jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022

15 févr. 2015 à 18:27
J'ai essayé ton astuce mais il y toujours cette erreur:
Warning: mysql_fetch_assoc() expects parameter 1 to be ressource, boolean given
0
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
356
15 févr. 2015 à 23:44
Fais un echo de $sql ... et testes la directement dans ta bdd...
le souci vient sûrement de ta varaible $recette
0
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
356
Modifié par jordane45 le 16/02/2015 à 01:25
Tu peux aussi ajouter un test sur le nombre de résultats trouvés au cas où.. :


<?php
require('connexion.php'); 
//Selction des données
if(isset($_POST['voir'])){
  $choix = implode("','" ,$_POST['voir']);
  $sql = "SELECT SUM(montant_t) as somme
             FROM ".$recette."  
             WHERE id IN ('".$choix."')
             GROUP BY id";
  $trucmachin   = mysql_query($sql) or die("Erreur dans la requête<br>". mysql_error(). "<br>".$sql);
  if (mysql_num_rows($trucmachin) == 0) {
     echo " <br>Aucune ligne trouvée, rien à afficher.";
     echo "<br> La requête est :<br>". $sql;
  }else{
    while ($bidule= mysql_fetch_assoc($trucmachin)) {
      // le temps des tests :
      print_r($bidule);
    }
  }
} else{
 echo " Aucun choix disponible" ;
}



NB: J'ai ajouté des Quotes dans le IMPLODE ainsi que dans le IN ... je les avais oublié....
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

17 févr. 2015 à 10:34
Merci pour la reponse et je l'ai fait ca marche bien
0
jordane45
Messages postés
35469
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2022
356
17 févr. 2015 à 11:32
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0