Mysql_fetch_array()

Résolu
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   -  
 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 :
$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

toto
 
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   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
0
toto
 
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   Statut Membre Dernière intervention   80
 
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   Statut Membre Dernière intervention   80 > didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   80 > didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention  
 
En fait le problème se pose quand j'ai 2 enregistrements à la suite de la même entreprise.
0
toto
 
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   Statut Membre Dernière intervention   80
 
les mêmes idProfessionnel désolé
0
nabilos31 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut, pour afficher plusieurs entrées tu dois mettre ton echo dans la boucle...
0
didy_gwatinik Messages postés 352 Date d'inscription   Statut Membre Dernière intervention   80
 
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
toto
 
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   Statut Membre Dernière intervention   80
 
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
toto
 
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   Statut Membre Dernière intervention   80
 
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   Statut Membre Dernière intervention  
 
de rien :-)
0