Recuperation des valeur sur une tableau

Résolu
solomonn - 15 févr. 2015 à 14:54
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 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 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 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 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 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 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
15 févr. 2015 à 17:20
Bonjour

avec SUM il suffi d' utiliser GROUP BY
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
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
Rejoignez-nous