Version complète: sur le forum Webmaster Hub : Boucle while pour stats
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
michmuch51
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:
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. sad.gif

Vous avez une idée?
Spidetra
Pourquoi ne pas faire une seule requête ?
SQL
SELECT SUM(montant) AS total, count(*) as nb_entrees
FROM matable WHERE YEAR(o_timestamp) = 2006 and statut = '0'
GROUP BY MONTH(o_timestamp)
michmuch51
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:
CITATION
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL
Kalt
En général ça veut dire que la requête comporte une erreur. Essaye-la dans phpMyAdmin.
Spidetra
CITATION(michmuch51 @ vendredi 02 juin 2006, 13h44) *
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.
michmuch51
Ba écouter j'ai beau tourner ça comme la logique me le suggère ca marche pas sad.gif :
CODE
$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.gif
NorSeb
Bonjour,

Et si tu remplace
CODE
$coms = $data2->nbre_entrees;

par
CODE
$coms = $req89->nbre_entrees;
r_question6161.gif
Spidetra
CITATION(michmuch51 @ vendredi 02 juin 2006, 14h54) *
Ba écouter j'ai beau tourner ça comme la logique me le suggère ca marche pas sad.gif :
CODE
$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.gif



Dans ta requête :
count(*) as nb_entrees

dans ton code Php :
$data2->nbre_entrees
dièse
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 smile.gif.
michmuch51
houps je viens de voir ton post spidetra

Merci encore puis désolé pour la coquille smile.gif
cyberlaura
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...
Spidetra
CITATION(michmuch51 @ vendredi 02 juin 2006, 15h08) *
peut etre le count qui n'était pas en majuscule unsure.gif

le tout c'est que ca tourne tongue.gif

Merci encore smile.gif


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 smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.