Mysql_fetch_array()
Résolu
didy_gwatinik
Messages postés
352
Date d'inscription
Statut
Membre
Dernière intervention
-
toto -
toto -
Bonjour,
J'ai une petit soucis, je fais une requête sur ma table qui contient 2 lignes , je fais un SELECT * FROM OFFRE; Mon mysql_num_rows est bien égal à 1, mais lorsque je fais l'affichage avec mysql_fetch_array je n'ai que le 1er enregistrement qui sort, voilà mon code si quelqu'un trouves une réponse à mon problème :
J'ai une petit soucis, je fais une requête sur ma table qui contient 2 lignes , je fais un SELECT * FROM OFFRE; Mon mysql_num_rows est bien égal à 1, mais lorsque je fais l'affichage avec mysql_fetch_array je n'ai que le 1er enregistrement qui sort, voilà mon code si quelqu'un trouves une réponse à mon problème :
$resultat=mysql_query($sql) or die ("Erreur SELECT : ".mysql_error()); echo mysql_num_rows($resultat); while($offre=mysql_fetch_array($resultat)) { $titre=$offre['titre']; $region=$offre['region']; $secteur=$offre['secteur']; $contrat=$offre['contrat']; $description=$offre['description']; $idProfessionnel=$offre['idProfessionnel']; //+++++++++++++++++++++++++++++++++++REQUETE POUR LES INFOS DE L'ENTREPRISE+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ $sql2="SELECT * FROM PROFESSIONNEL WHERE idProfessionnel='".$idProfessionnel."'"; $result=mysql_query($sql2) or die ("Erreur SELECT 2 : ".mysql_error()); while($pro=mysql_fetch_array($result)) { $nom=$pro['nom']; $ville=$pro['ville']; $regionpro=$pro['region']; $secteurpro=$pro['secteur']; $descriptionpro=$pro['description']; $mail=$pro['mail']; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ echo "<h4>L'offre de ".$nom. " : </h4>"; echo "Titre : ".$titre."<br />"; echo "Région : ".$region."<br />"; echo "Secteur : ".$secteur."<br />"; echo "Contrat : ".$contrat."<br />"; echo "Description : ".$description."<br />"; echo "<h4>L'entreprise : </h4>"; echo "Nom : ".$nom."<br />"; echo "Ville : ".$ville."<br />"; echo "Région : ".$regionpro."<br />"; echo "Secteur : ".$secteurpro."<br />"; echo "Description : ".$descriptionpro."<br />"; ?> <a href="mailto:<?php echo $mail; ?>><?php echo $mail; ?></a> <?php }
6 réponses
grrrr...
Peux-tu faire un echo mysql_num_rows($result) juste avant ton while($pro=mysql_fetch_array($result)) ?
Peux-tu faire un echo mysql_num_rows($result) juste avant ton while($pro=mysql_fetch_array($result)) ?
didy_gwatinik
Messages postés
352
Date d'inscription
Statut
Membre
Dernière intervention
80
Oui oui, j'en ai fais un , il me renvoie 4 c'est bien le nombre d'enregistrement que j'ai dans ma table
Bonjour
Tous tes 'echo' sont à l'extérieur de la boucle, ils ne sont donc exécutés qu'une seule fois.
Il faut refermer l'accolade du while qu'après le echo "Description
Tous tes 'echo' sont à l'extérieur de la boucle, ils ne sont donc exécutés qu'une seule fois.
Il faut refermer l'accolade du while qu'après le echo "Description
Je te remets le code que j'ai fait au cas où j'aurai mal placé ma parenthèse :
while($offre=mysql_fetch_array($resultat)) { $titre=$offre['titre']; $region=$offre['region']; $secteur=$offre['secteur']; $contrat=$offre['contrat']; $description=$offre['description']; $idProfessionnel=$offre['idProfessionnel']; //+++++++++++++++++++++++++++++++++++REQUETE POUR LES INFOS DE L'ENTREPRISE+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ $sql2="SELECT * FROM PROFESSIONNEL WHERE idProfessionnel='".$idProfessionnel."'"; $result=mysql_query($sql2) or die ("Erreur SELECT 2 : ".mysql_error()); while($pro=mysql_fetch_array($result)) { $nom=$pro['nom']; $ville=$pro['ville']; $regionpro=$pro['region']; $secteurpro=$pro['secteur']; $descriptionpro=$pro['description']; $mail=$pro['mail']; echo "<h4>L'offre de ".$nom. " : </h4>"; echo "Titre : ".$titre."<br />"; echo "Région : ".$region."<br />"; echo "Secteur : ".$secteur."<br />"; echo "Contrat : ".$contrat."<br />"; echo "Description : ".$description."<br />"; echo "<h4>L'entreprise : </h4>"; echo "Nom : ".$nom."<br />"; echo "Ville : ".$ville."<br />"; echo "Région : ".$regionpro."<br />"; echo "Secteur : ".$secteurpro."<br />"; echo "Description : ".$descriptionpro."<br />"; ?> <a href="mailto:<?php echo $mail; ?>><?php echo $mail; ?> </a> <?php } }
Quand tu as deux enregistrements à la suite de la même entreprise, ont-ils bien le même idProfessionnel ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je crois que nabilos a lu un peu trop rapidement..
Pour le mysql_num_rows, je ne pale pas de celui que tu avais déjà au début de ton premier message, mais bien de vérifier la deuxième requête : echo mysql_num_rows($result) juste avant ton while($pro=mysql_fetch_array($result)) ?
Si c'est bien le cas, alors le script de ton message 3 doit t'afficher 4 fois la série des infos sur l'offre et l'entreprise.
D'ailleurs, il me semblerait plus logique d'afficher les infos de l'offre dans ta boucle externe et celles de l'entreprise dans ta boucle interne, sinon, tu répètes les infos de la même offre à chaque entreprise.
Pour le mysql_num_rows, je ne pale pas de celui que tu avais déjà au début de ton premier message, mais bien de vérifier la deuxième requête : echo mysql_num_rows($result) juste avant ton while($pro=mysql_fetch_array($result)) ?
Si c'est bien le cas, alors le script de ton message 3 doit t'afficher 4 fois la série des infos sur l'offre et l'entreprise.
D'ailleurs, il me semblerait plus logique d'afficher les infos de l'offre dans ta boucle externe et celles de l'entreprise dans ta boucle interne, sinon, tu répètes les infos de la même offre à chaque entreprise.
Quand je place le mysql_num_rows où tu me dis, il me renvoie bien 1, ce qui est logique vu qu'il n'y a qu'un enregistrement pour un idProfessionnel précis Je ne vois vraiment pas où ca bloque, voilà encore une fois mon code :
$resultat=mysql_query($sql) or die ("Erreur SELECT : ".mysql_error()); echo mysql_num_rows($resultat); //affiche 5 while($offre=mysql_fetch_array($resultat)) { $titre=$offre['titre']; $region=$offre['region']; $secteur=$offre['secteur']; $contrat=$offre['contrat']; $description=$offre['description']; $idProfessionnel=$offre['idProfessionnel']; //+++++++++++++++++++++++++++++++++++REQUETE POUR LES INFOS DE L'ENTREPRISE++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ $sql2="SELECT * FROM PROFESSIONNEL WHERE idProfessionnel='".$idProfessionnel."'"; $result=mysql_query($sql2) or die ("Erreur SELECT 2 : ".mysql_error()); echo '*'; echo mysql_num_rows($result); //affiche 1 echo '*'; while($pro=mysql_fetch_array($result)) { $nom=$pro['nom']; $ville=$pro['ville']; $regionpro=$pro['region']; $secteurpro=$pro['secteur']; $descriptionpro=$pro['description']; $mail=$pro['mail']; echo "<h4>L'offre de ".$nom. " : </h4>"; echo "Titre : ".$titre."<br />"; echo "Région : ".$region."<br />"; echo "Secteur : ".$secteur."<br />"; echo "Contrat : ".$contrat."<br />"; echo "Description : ".$description."<br />"; echo "<h4>L'entreprise : </h4>"; echo "Nom : ".$nom."<br />"; echo "Ville : ".$ville."<br />"; echo "Région : ".$regionpro."<br />"; echo "Secteur : ".$secteurpro."<br />"; echo "Description : ".$descriptionpro."<br />"; ?> <a href="mailto:<?php echo $mail; ?>><?php echo $mail; ?> </a> <?php } }
C'est bête à pleurer...
Depuis ton message 4, j'étais persuadé qu'il pouvait y avoir plusieurs réponses à ta requête sql2 : En fait le problème se pose quand j'ai 2 enregistrements à la suite de la même entreprise.
D'ailleurs, un while sert à faire une boucle, pourquoi boucler si tu sais que tu as une seule réponse ? Un if pour vérifier qu'il y en a une, oui mais pas un while.
De toutes manières, le problème n'a aucun rapport avec tout ceci. Et si tu avais lu le source créé par ta page, tu aurais bien vu le problème:
Depuis ton message 4, j'étais persuadé qu'il pouvait y avoir plusieurs réponses à ta requête sql2 : En fait le problème se pose quand j'ai 2 enregistrements à la suite de la même entreprise.
D'ailleurs, un while sert à faire une boucle, pourquoi boucler si tu sais que tu as une seule réponse ? Un if pour vérifier qu'il y en a une, oui mais pas un while.
De toutes manières, le problème n'a aucun rapport avec tout ceci. Et si tu avais lu le source créé par ta page, tu aurais bien vu le problème:
<a href="mailto:<?php echo $mail; ?>><?php echo $mail; ?>où se referme le " ?