Recuperation des valeur sur une tableau [Résolu]

- - Dernière réponse : jordane45
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
- 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
Afficher la suite 

9 réponses

Messages postés
14568
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 août 2019
88
0
Merci
Bonjour,

Et quel est le problème? La requête vers la base? La somme? L'affichage?
Commenter la réponse de BunoCS
0
Merci
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
Commenter la réponse de solomonn
Messages postés
14568
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 août 2019
88
0
Merci
Ne connaissant ni ta base, ni ton modèle, cela va être difficile de t'aider...
Commenter la réponse de BunoCS
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
0
Merci

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
Commenter la réponse de solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
0
Merci
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é
Commenter la réponse de solomonn
Messages postés
14568
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
19 août 2019
88
0
Merci
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()
Commenter la réponse de BunoCS
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
314
0
Merci
Bonjour

avec SUM il suffi d' utiliser GROUP BY
jordane45
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
314 -
SELECT SUM(montant_t) as somme
FROM ".$recette."  
WHERE id = '$choix'
GROUP BY id

jordane45
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
314 -
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
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
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
-
J'ai essayé ton astuce mais il y toujours cette erreur:
Warning: mysql_fetch_assoc() expects parameter 1 to be ressource, boolean given
jordane45
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
314 -
Fais un echo de $sql ... et testes la directement dans ta bdd...
le souci vient sûrement de ta varaible $recette
Commenter la réponse de jordane45
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
314
0
Merci
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é....
Commenter la réponse de jordane45
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
0
Merci
Merci pour la reponse et je l'ai fait ca marche bien
jordane45
Messages postés
26116
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 août 2019
314 -
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
Commenter la réponse de solomonn