boucle while()
le 26/04/2009 à 01:37
tyros
Bonjour,
j'ai un problème avec ma boucle
$sql = "SELECT nom,etoile,ville,web FROM hotel ORDER BY RAND() limit 5";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$sql2 = "SELECT nom,filepath,filename,presentation FROM photo WHERE nom = '".mysql_real_escape_string($data['nom'])."' AND presentation='y'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
$sql3 = "SELECT AVG(moyenne) AS moyenne, count(id) AS id FROM commentaire WHERE nom = '".mysql_real_escape_string($data['nom'])."'";
$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql3.'<br>'.mysql_error());
while (($data = mysql_fetch_array($req))||($data2 = mysql_fetch_array($req2))||($data3 = mysql_fetch_array($req3))) {
Quel est le problème ?
le 26/04/2009 à 14:33
tyros
le problème c'est que les photos ne s'affiche pas et que les infos du $data3 ne s'affiche pas, mais tout fonctionnait avant que j'ajoute le while() pour faire une boucle.
dans ma table j'ai seulement 2 entrée pour le moment, mais la boucle fais comme s'il y en avait 3.
tu peux aller voir http://www.voyagerenimages.com/hotel/
Heu, ton but, c'est de faire quoi la ?
Perso, j'ai ma petite idée (afficher les photos et les commentaires d'un hotel), mais la, ton code tel qu'il est aujourd'hui, il ne fait pas cela du tout.
Tu as plusieurs solutions :
- récupérer tout d'abord la liste des hotel, puis, pour chaque hotel (donc dans le while qui affiche les hotels) faire une requête qui va récupérer les photos
- lire le cours sur les
jointures SQL (qui est la solution la plus propre)
le 28/04/2009 à 04:10
tyros
merci
j'ai la requete sql qui fonctionne bien dans sql, mais lorsque je la met dans le code php ca fonctionne pas.
$sql = "SELECT hotel.nom,hotel.etoile,hotel.ville,hotel.web,photo.nom,photo.filepath,photo.filename,photo.presentation FROM hotel,photo WHERE photo.nom = hotel.nom AND photo.presentation="y" ORDER BY RAND() limit 0,5";
je sais pas si les variables $data['filepath'] sont corect.
echo '<tr><td width="125"><img src="'.$data['filepath'].'/'.$data['filename'].'" width="175" height="125"/></td><td width="275" align="left" valign="top">'.$data['ville'].'</br>';
C'est un peu facile de dire "cela ne fonctionne pas".
Pourquoi cela ne fonctionne pas ? Tu as une erreur SQL ? tu as fais des echo pour débuguer ?
Quant à tes filepath, seul toi peut savoir si ils sont corrects ou non (je n'ai pas accès à ta base de données ni à ton FS, donc je ne peux rien vérifier).
(tyros) Relis la documentation à propos de la boucle while. La logique du while est dans la seconde partie du while, pas dans la première.
<?php
while(condition_de_continuation)
{
instruction_repétée ;
}
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
le 29/04/2009 à 03:35
tyros
je suis sur le point de passer pour un idiot ;)
ca fonctionne, mais la comment faire pour ajouter avg(moyenne) et count(id) de ma table commentaire dans cette requête, j'ai essayer plein de truc, mais ca n'affiche jamais la bonne affaire
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: