Aller au contenu

Boucle while pour stats


michmuch51

Sujets conseillés

Salut les hubiens je suis en train de me triturer le cerveau pour pouvoir utiliser le résultat de deux boucles while issues de 2 requêtes différentes en Msql:

Mon code:

$req2 = mysql_query("SELECT SUM(montant) AS total FROM matable WHERE YEAR(o_timestamp) = 2006 and statut = '0' GROUP BY MONTH(o_timestamp)");
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM matable WHERE YEAR(o_timestamp) = '2006' and statut = '0' GROUP BY MONTH(o_timestamp)");

while($data2 = mysql_fetch_object($req2)) {
$lolo = sprintf("%01.1f0",($data2->total/1.196));
print '<td bgcolor="#BBF9B9"><b>'.$lolo.'</b><br><br></td>';

}
echo '</tr><tr><td bgcolor="#EEEEEE">Nbre de commandes</td>';

while($donnees = mysql_fetch_object($retour)) {

$coms = $donnees->nbre_entrees;
print '<td>'.$coms.'</td>';
}

la première requète me permet d'avoir mois par mois le montant total des commandes, la deuxième me permet d'avoir le nombre de commandes, et maintenant je bloque pour afficher a partir de la première et la deuxième requète mon panier moyen (première requete divisé par deuxième requete) puisque j'ai deux boucle "while" indépendantes. :(

Vous avez une idée?

Lien vers le commentaire
Partager sur d’autres sites

Pourquoi ne pas faire une seule requête ?

SELECT SUM(montant) AS total, count(*) as nb_entrees 
FROM matable WHERE YEAR(o_timestamp) = 2006 and statut = '0'
GROUP BY MONTH(o_timestamp)

Lien vers le commentaire
Partager sur d’autres sites

j'avais deja fait l'essai en laissant mes boucle while appelant ainsi la même requete mais sur la ligne de mes deux while voilà ce qu'il affiche:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL
Lien vers le commentaire
Partager sur d’autres sites

En général ça veut dire que la requête comporte une erreur. Essaye-la dans phpMyAdmin.

Lien vers le commentaire
Partager sur d’autres sites

j'avais deja fait l'essai en laissant mes boucle while appelant ainsi la même requete mais sur la ligne de mes deux while voilà ce qu'il affiche:

Séparons les pb SQL et Php.

1. Est-ce que la requête que je te suggère répond à ton problème ? Si tu la teste dans phpMyAdmin ou Mysql Query Brower, qu'est-ce qu'elle te retourne ?

Est-ce que le résultat correspond à ce que tu attends ?

Si tu répond oui à toutes ces questions ton pb SQL est résolu.

2. En Php, si tu as une seule requête tu n'as plus besoin d'avoir deux boucles. Tu simplifie ton code et ça devrait rouler.

Lien vers le commentaire
Partager sur d’autres sites

Ba écouter j'ai beau tourner ça comme la logique me le suggère ca marche pas :( :

$req89 = mysql_query("SELECT  count(*) as nb_entrees, SUM(montant) AS total FROM matable WHERE YEAR(o_timestamp) = 2006 and statut = '0' GROUP BY MONTH(o_timestamp)");

while($data2 = mysql_fetch_object($req89)) {
$lolo = sprintf("%01.1f0",($data2->total/1.196));
$coms = $data2->nbre_entrees;
print '<td bgcolor="#BBF9B9"><b>'.$lolo.'<br>'.$coms.'<br></b></td>';
}

$coms n'affiche rien :unsure:

Lien vers le commentaire
Partager sur d’autres sites

Ba écouter j'ai beau tourner ça comme la logique me le suggère ca marche pas :( :

$req89 = mysql_query("SELECT  count(*) as nb_entrees, SUM(montant) AS total FROM matable WHERE YEAR(o_timestamp) = 2006 and statut = '0' GROUP BY MONTH(o_timestamp)");

while($data2 = mysql_fetch_object($req89)) {
$lolo = sprintf("%01.1f0",($data2->total/1.196));
$coms = $data2->nbre_entrees;
print '<td bgcolor="#BBF9B9"><b>'.$lolo.'<br>'.$coms.'<br></b></td>';
}

$coms n'affiche rien :unsure:

Dans ta requête :

count(*) as nb_entrees

dans ton code Php :

$data2->nbre_entrees

Lien vers le commentaire
Partager sur d’autres sites

Comme te l'a suggéré Spidetra, il faut séparer le SQL du PHP. Ta requête est bonne il n'y a pas de soucis. Teste $data2 à l'aide de la fonction var_dump(). Teste d'abord avec mysql_fetch_object, puis avec mysql_fetch_array dans un second temps :).

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

en regardant vite fait ce sujet, il y a juste une petite erreur dans le nom de la variable, dans la requète c'est nb_entrees et dans le code c'est nbre_entrees... Cela vient peut-être juste de là, pour ce problème-ci en tout cas...

Lien vers le commentaire
Partager sur d’autres sites

peut etre le count qui n'était pas en majuscule :unsure:

le tout c'est que ca tourne :P

Merci encore :)

Nos posts ce sont croisés, j'édite le mien....

Pour éviter ce genre de pb :

1. Il te faut un bon éditeur bien configurer.

2. Ton Level Error doit être configurer sur NOTICE en phase de dev.

Je viens de comprendre d'où vient ta coquille.

Tu as fait juste un copier / coller de la requête SQL que j'ai posté plus haut :)

Modifié par Spidetra
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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