Calcul par annee

tchaw Messages postés 20 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 30 novembre 2010 - 22 mars 2010 à 11:30
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 - 22 mars 2010 à 19:26
bonjour,
bonjour
je veux calculer la total d'un somme d'un champs(MTTC) du table (vente) à chaque année dans MYSQL
et je veux afficher le résultat dans un champs de texte par anneé
voila le formulaire :
form action="page4.php" method="post">
  Choisir année:,
<select name="annee" id="select"><option>2010<option>2011<option>2012</option>
  </select>

  
    
    


  


  </form>


et voila code de page4.php:

<?php
 
$an=$_POST['annee'];
 $sum=(mysql_query("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)=$an ")); 
$sum = mysql_result($sum,0);
?>
 
 


     


  <center>
<form id="form1" name="form1" method="post" action="">
benefice<?php echo $an ?>,
 />



</form></center>

 
 


et il m'affiche message suivant:

"Warning: mysql_result(): supplied argument is not a valid MySQL result resource in "
j'ai besoin de votre aide

11 réponses

cs_lesims1000 Messages postés 26 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 21 novembre 2011
22 mars 2010 à 11:50
sa fait le 4eme post que tu crée pour la même question....
0
tchaw Messages postés 20 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 30 novembre 2010
22 mars 2010 à 11:59
merci
jai trouvé enfin la solution
et voila le nouveau code
<?php
 if(!empty($_POST["annee"])){

$an=$_POST['annee'];
}
 $sum=(mysql_query("SELECT SUM(MTTC) FROM vente  ")); 
$result = mysql_query($sum);

?>

 


     


  <center>
<form id="form1" name="form1" method="post" action="">
benefice,
montant,
----
"/>,
" />



</form></center>

merci pour tous
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
22 mars 2010 à 12:01
Bonjour,

Pas besoin de poster 4 fois le même message ! A la limite tu peux utiliser la partie "Répondre à ce message" pour remonter ton message dans le forum QUAND IL EST TROP BAS (Ce n'est pas le cas de tes 4 messages)...

1 - Sécurisation du code :
<?php
$an= mysql_real_escape_string($_POST['annee']);
$sum=mysql_query("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)='$an'");
?>

Plus de détails sur mysql_real_escape_string

2 - On prépare un débug clair :
<?php
$sum =mysql_query("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)= '$an'") or die('Invalid query: ' . mysql_error()); 
?>


3 - Testes à effectuer pour débugger :
On affiche la query pour la vérifier :
<?php
exit("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date) ='$an'");
// Devrais écrir dans ta page qqch comme :
// SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)='2003'
$sum=mysql_query("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)='$an'") or die('Invalid query: ' . mysql_error());
?>

On copie le texte généré dans phpMyAdmin pour voir si ca marche...

Après tout ces tests dit préviens moi des différents résultats.

_________________________________
Min iPomme
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
22 mars 2010 à 12:03
Dans ta solution tu n'as plus de clause WHERE ?


_________________________________
Min iPomme
0

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

Posez votre question
tchaw Messages postés 20 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 30 novembre 2010
22 mars 2010 à 12:07
ok
merci
pour le moment jai testé sans clause where
et maintenant je veux tester avc la clause where
0
tchaw Messages postés 20 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 30 novembre 2010
22 mars 2010 à 12:21
et voila jai testé ce code

<?php
 if(!empty($_POST["annee"])){

$an=$_POST['annee'];
$an=mysql_real_escape_string($_POST['annee']);

}
 $sum=mysql_query("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)='$an'") or die('Invalid query: ' . mysql_error()); 

$result = mysql_query($sum);

?>

 


     


  <center>
<form id="form1" name="form1" method="post" action="">
benefice,
montant,
----
"/>,
" />



</form></center>


et il m'affiche ce message suivant
"Invalid query: Champ 'date' inconnu dans where clause "
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
22 mars 2010 à 13:00
Alors :
J'ai supprimé deux lignes qui servent à rien et déclaré ta variable $an histoire que si tu ne passe pas dans le IF, elle existe quand même.
<?php
$an =  null;
if(!empty($_POST["annee"]))
{
  // A SUPPRIMER : $an=$_POST['annee'];
  $an=mysql_real_escape_string($_POST['annee']);
}
$sum=mysql_query("SELECT SUM(MTTC) FROM vente WHERE extract(year FROM date)='$an'") or die('Invalid query: ' . mysql_error()); 
// A SUPPRIMER : $result = mysql_query($sum);
?>


Ensuite, comme tu te sert de la colonne date dans le extract , tu as besoin de le mettre dans ton select il me semble.
"SELECT SUM(MTTC), extract(year FROM date) AS myyear FROM vente WHERE myyear ='$an'"

Du coup ton mysql_result contiendras un tableau du style :
0        | 1
Ta somme | L'année

Donc pour récupérer la somme avec mysql_result :

" />


_________________________________
Min iPomme
0
tchaw Messages postés 20 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 30 novembre 2010
22 mars 2010 à 13:19
salut
pour votre réponse
jai fait le code suivant

<?php
$an = null;
 if(!empty($_POST["annee"])){
$an=$_POST['annee'];

$an=mysql_real_escape_string($_POST['annee']);

}
 $sum=mysql_query("SELECT SUM(MTTC), extract(year FROM date) AS myyear FROM vente WHERE myyear='$an'"); 



?>

 


     


  <center>
<form id="form1" name="form1" method="post" action="">
benefice,
montant,
----
"/>,
" />



</form></center>


et il n'ay rien afficher ........
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
22 mars 2010 à 13:41
Chez moi, ca :
<?php
$an = null;
 if(!empty($_POST["annee"]))
{
$an=mysql_real_escape_string($_POST['annee']);
}
$sum=mysql_query("SELECT SUM(MTTC) FROM vente WHERE EXTRACT(YEAR FROM `date`)='$an'") or die("Erreur SQL : " . mysql_error());
?>
 


     


  <center>
<form id="form1" name="form1" method="post" action="">
benefice,
montant,
----
"/>,
" />



</form></center>

Ca fonctionne bien...

PS : j'ai mis des ` autour de date car je sais plus si c'est un mot clé SQL. Quand on utilise des mots clé SQL comme nom de colonnes ca peux poser problème... Dans ce cas il faut "échapper" la colonne avec des ``.

Vérifie que tu as bien une colonne date dans ta table vente.

_________________________________
Min iPomme
0
tchaw Messages postés 20 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 30 novembre 2010
22 mars 2010 à 13:50
merci bien
il ca marche bien
mon erreur est que le champs date dans la base est( date_facture) et non pas date.
merci bien.
maintenant il reste que je fais la calcule par mois.
comment recuperer le mois du date ?
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
22 mars 2010 à 19:26
Cherche du coté des Goup by (Year)


_________________________________
Min iPomme
0