Recuperation des valeur sur une tableau [Résolu]

Signaler
-
jordane45
Messages postés
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
-
Bonjour,
J me de debute en PHP et je voulais faire une somme des montants selectionnée dans la base. Merci

9 réponses

Messages postés
14715
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
27 janvier 2020
90
Bonjour,

Et quel est le problème? La requête vers la base? La somme? L'affichage?
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
Messages postés
14715
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
27 janvier 2020
90
Ne connaissant ni ta base, ni ton modèle, cela va être difficile de t'aider...
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018


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
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

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é
Messages postés
14715
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
27 janvier 2020
90
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()
Messages postés
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
323
Bonjour

avec SUM il suffi d' utiliser GROUP BY
jordane45
Messages postés
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
323
SELECT SUM(montant_t) as somme
FROM ".$recette."  
WHERE id = '$choix'
GROUP BY id

jordane45
Messages postés
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
323
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
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020

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
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
323
Fais un echo de $sql ... et testes la directement dans ta bdd...
le souci vient sûrement de ta varaible $recette
Messages postés
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
323
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é....
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

Merci pour la reponse et je l'ai fait ca marche bien
jordane45
Messages postés
27370
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 janvier 2020
323
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