Mysql_fetch_array()

Résolu
didy_gwatinik Messages postés 358 Statut Membre -  
 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
}
Configuration: Windows XP
Firefox 3.0.5

6 réponses

  1. toto
     
    grrrr...
    Peux-tu faire un echo mysql_num_rows($result) juste avant ton while($pro=mysql_fetch_array($result)) ?
    1
    1. didy_gwatinik Messages postés 358 Statut Membre 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
  2. 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
    1. didy_gwatinik Messages postés 358 Statut Membre 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
      1. didy_gwatinik Messages postés 358 Statut Membre 80 > didy_gwatinik Messages postés 358 Statut Membre
         
        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
      2. didy_gwatinik Messages postés 358 Statut Membre 80 > didy_gwatinik Messages postés 358 Statut Membre
         
        En fait le problème se pose quand j'ai 2 enregistrements à la suite de la même entreprise.
        0
  3. toto
     
    Quand tu as deux enregistrements à la suite de la même entreprise, ont-ils bien le même idProfessionnel ?
    0
    1. didy_gwatinik Messages postés 358 Statut Membre 80
       
      les mêmes idProfessionnel désolé
      0
  4. nabilos31 Messages postés 37 Statut Membre 2
     
    Salut, pour afficher plusieurs entrées tu dois mettre ton echo dans la boucle...
    0
    1. didy_gwatinik Messages postés 358 Statut Membre 80
       
      Je comprends pas, mon echo est déjà dans la boucle.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. didy_gwatinik Messages postés 358 Statut Membre 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
  7. 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
    1. didy_gwatinik Messages postés 358 Statut Membre 80
       
      Ah en effet, vraiment bête à en pleurer ben merci beuacoup en tout cas, ça marche maintenant, tu me sauves souvent.
      Merci :)
      0
      1. toto > didy_gwatinik Messages postés 358 Statut Membre
         
        de rien :-)
        0