Mysql_fetch_array()

Résolu/Fermé
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 - 12 janv. 2009 à 14:06
 toto - 13 janv. 2009 à 14:20
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 :
$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)) ?
1
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
13 janv. 2009 à 09:52
Oui oui, j'en ai fais un , il me renvoie 4 c'est bien le nombre d'enregistrement que j'ai dans ma table
0
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
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
12 janv. 2009 à 14:42
Je viens de changer et de faire comme tu m'as dit mais je n'ai toujours qu'un seul enregistrement qui s'affiche.
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80 > didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010
12 janv. 2009 à 14:53
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
		}
}
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80 > didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010
12 janv. 2009 à 15:02
En fait le problème se pose quand j'ai 2 enregistrements à la suite de la même entreprise.
0
Quand tu as deux enregistrements à la suite de la même entreprise, ont-ils bien le même idProfessionnel ?
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
12 janv. 2009 à 15:33
les mêmes idProfessionnel désolé
0
nabilos31 Messages postés 35 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 mai 2013 2
12 janv. 2009 à 15:58
Salut, pour afficher plusieurs entrées tu dois mettre ton echo dans la boucle...
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
13 janv. 2009 à 09:52
Je comprends pas, mon echo est déjà dans la boucle.
0

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.
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
13 janv. 2009 à 10:36
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
		}
}
0
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:
<a href="mailto:<?php echo $mail; ?>><?php echo $mail; ?> 
où se referme le " ?
0
didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010 80
13 janv. 2009 à 13:51
Ah en effet, vraiment bête à en pleurer ben merci beuacoup en tout cas, ça marche maintenant, tu me sauves souvent.
Merci :)
0
toto > didy_gwatinik Messages postés 352 Date d'inscription samedi 17 novembre 2007 Statut Membre Dernière intervention 30 mars 2010
13 janv. 2009 à 14:20
de rien :-)
0