Aller au contenu

Souci avec un select


VansFoxy

Sujets conseillés

Bonjour à tous,

Je viens vers vous car j'ai à nouveau un problème qui cette fois dépasse mes connaissances de très loin. Je suis en train de créer un petit module en php, avec une base de donnée pour gérer la consommation de camions. Je vais essayer d'être assez clair dans mon explication.

Tout d'abord, j'ai une colonne dans ma table qui s'appelle "plein", et si la valeur est de "1" c'est que le camion a fait un plein complet, si elle est de "2" c'est qu'il a fait qu'un complément. Pour calculer la consommation du mois en cours, j'ai besoin de récupérer des infos sur le mois d'avant, c'est à dire les kilomètres (km dans ma table), de la dernière prise de gasoil complète. Mais c'est la le hic, car c'est très facile de faire ce qui est au dessus, j'aurais besoin de sélectionner les pleins qui ne sont pas complet, s'il y en a, après le dernier plein complet du mois précédent.

J'espère que c'est assez clair pour vous. Si vous avez un petit bout de code à me suggérer, je vous en serai très reconnaissant, car là je suis bloqué.

Merci à vous d'avance.

Je vous poste mon code, qui fonctionne très bien, mais comme je vous disais si à partir du dernier plein du mois précédent, les litres des plein pas complet doivent être mis sur le mois d'après, et je vois pas comment faire pour les sélectionner

function calcul_conso($mois) {            $req = mysql_query("select * from conso where mois=$mois ORDER BY id ASC");       if (mysql_num_rows($req) >= 1 ) {                      $req_plein = mysql_query("select * from conso where mois=$mois order by id DESC limit 0 , 1");           $plein = mysql_fetch_array($req_plein);           if ($plein["plein"] == "1") {                                             $nb_mois = $mois - 1;               $nb_annee = date("");                              $req_km1 = mysql_query("select * from conso where mois=$nb_mois order by id DESC limit 0 , 1");               $data1 = mysql_fetch_array($req_km1);               $km_bas = $data1["km"];                              $req_km2 = mysql_query("select * from conso where mois=$mois order by id DESC limit 0 , 1");               $data2 = mysql_fetch_array($req_km2);               $km_haut = $data2["km"];                              $req_km = $km_haut - $km_bas;                              $sql = mysql_query ("SELECT sum(litres) FROM (SELECT litres FROM conso WHERE mois=$mois ORDER BY id ASC)s");               $somme = mysql_result ($sql,0);               $somme = str_replace(".",",",$somme);                              echo "$req_km"."km<br>";               echo "$somme"."L<br>";               $moyenne = $somme / $req_km * 100;               $moyenne = number_format($moyenne,2);               $moyenne = str_replace(".",",",$moyenne);               echo "$moyenne"."L/100km";                          } else {                              echo "manque plein";           }              } else {                    echo "rien";              } }

:)

Lien vers le commentaire
Partager sur d’autres sites

Salut,



Je ne vois pas de souci bloquant :



1. Récup le dernier plein du mois dernier


$req_plein = mysql_query("select id from conso where mois='$avant_dernier_mois' and plein = '1' order by id DESC limit 0 , 1");



2. Récup tous les kms des non pleins du mois derniers postérieurs au point 1.


$req_pas_plein = mysql_query("select sum(kms) from conso where mois='$avant_dernier_mois' and plein = '2' and id > '".$req_plein["id"]."' ");



Normalement le tour est joué, $req_pas_plein contient la somme demandée...



Bon courage pour la suite !

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, je ne m'en sors pas avec cette erreur "resource id..."



Mon code actuel est :




$sql_pas_plein = mysql_query("select id from conso where mois=$nb_mois_km_bas AND plein=1 ORDER BY id DESC limit 0 , 1") or die(mysql_error());
$pas_plein = mysql_fetch_array($sql_pas_plein);
$nb_pas_plein = mysql_query("select sum(litres) from conso where mois='$nb_mois_km_bas' and plein = '2' and id > '".$pas_plein["id"]."' ") or die(mysql_error());
echo "$nb_pas_plein<br>";

Je vous laisse un screen de ce que ça m'affiche :



conso.jpg


Lien vers le commentaire
Partager sur d’autres sites

Salut,




$nb_pas_plein = mysql_query("select sum(litres) from conso where mois='$nb_mois_km_bas' and plein = '2' and id > '".$pas_plein["id"]."' ") or die(mysql_error());


est une requête dont tu dois exploiter le résultat.



De ce fait :




$nb_pas_plein = mysql_query("select sum(litres) as sommelitre from conso where mois='$nb_mois_km_bas' and plein = '2' and id > '".$pas_plein["id"]."' ") or die(mysql_error());

$traitement = mysql_fetch_assoc($nb_pas_plein);

echo $traitement['sommelitre'];


Kendyan.


Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...