Aller au contenu

Souci avec un select


Sujets conseillés

Posté

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";              } }

:)

Posté

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 !

Posté

Ah oui super c'est exactement ce qu'il me fallait.

C'est vrai que c'est assez simple maintenant que tu las fait, j'ai pas encore l'habitude des sum.

Merci bien :)

Posté

J'ai bien fait comme tu as dit, mais ça m'affiche "Resource id #21" .



Je pense que c'est quand le résultat est négatif, ça affiche ça non ? Faut que je trouve un moyen de résoudre ça :(


Posté

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


Posté

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.


  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

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



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