Problème d'affichage avec mon while

Eléphant du PHP | 75 Messages

31 août 2005, 11:12

Salut à vous tous,

voila mon problème je désire faire une liste des info de ma table et en cliquant sur une ligne de la liste on arrive à une fiche avec toutes les infos, le truc basic quoi...
tout ça marche bien, j'ai ma liste et mes fiches s'affichent parfaitement mais le problème est que le reste de ma page ne s'affiche pas!!!
mon bandeau bas disparait, j'ai déjà eu ce problème à cause d' exit(); que j'avais mis un peu partout mais dans le cas présent il n'y en a pas juste un while:
<TR>
	<TD width=608 valign=top>
	<table width=400 align=center border=1>
<?	
//////////////////////////////c'est ici que se trouve mon while qui pose problème////////////////////////////

	
	$objet = mysql_query("SELECT * FROM annonces WHERE categorie_annonce='$categorie_annonce'");
	while ($listing = mysql_fetch_array($objet)or die (mysql_error()) )
	{
	echo '<tr rowspan=2><td height=100 width=100 align=center>photo</td>';
	echo '<td valign=middle width="300"><h2><a href=annonce-fiche.php?id_annonce='.$listing['id_annonce'].'>'.$listing['nom_annonce'].'</a></h2><p>
	'.$listing['courte_description_annonce'].'</td></tr>';
	
	echo '<tr><td>&nbsp;</td>';
	echo '<td>'.$listing['date_vente'].' - '.$listing['ville_annonce'].' - '.$listing['dept_annonce'].'</tr>';
	}

///////////////////////////la fin du while et la suite du script qui s'affiche pas//////////////////////////////////

	?>
	</table>
	</TD>


<TD valign=top align=right width=171>
	<?
	if(!isset($_SESSION['pseudo'])) 
	{
	echo '
	<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
		<TR>
			<TD COLSPAN=2>
				<IMG SRC="images/spacer_droit1.gif" WIDTH=191 HEIGHT=28 ALT="spacer_droit1"></TD>
		</TR>
		<TR>
			<TD>
				<IMG SRC="images/img_inscrire.gif" WIDTH=171 HEIGHT=29 ALT="img_inscrire"></TD>
			<TD ROWSPAN=6>
				<IMG SRC="images/droit_05.gif" WIDTH=20 HEIGHT=247 ALT=""></TD>
		</TR>
		<TR>
			<TD background="images/droit_06.gif" WIDTH=171 HEIGHT=58 ALT="" align=center>
			<a href=inscription-pro.php><font face=arial>Professionnel</font><p></a>
			<a href=inscription-particulier.php><font face=arial>Particulier</font></a>
			</TD>
		</TR>
		<TR>
			<TD>
				<IMG SRC="images/droit_07.gif" WIDTH=171 HEIGHT=25 ALT=""></TD>
		</TR>
		<TR>
			<TD background="images/droit_08.gif" WIDTH=171 HEIGHT=85 ALT="" align=center>
			<form action="login.php" method=\'post\'>
			Login:<br>
			<input type="text" name="pseudo" maxlength="25" size=10><br>
			Mot de passe<br>
			<input type="password"name="password" maxlength="10" size=10>
			</TD>
		</TR>
		<TR>
			<TD background="images/droit_08.gif" WIDTH=171 HEIGHT=85 ALT="" align=center>
				<input type=image IMG SRC="images/bt_ident.gif" WIDTH=29 HEIGHT=29 ALT="bt_ident"><br>
				<a href=oublie[1].php><font size=2>Vous avez perdus vos identifiants?</font></a>
				</font></TD>
		</TR>
		<TR>
			<TD height=295 width=171 colspan=4>
				<IMG SRC="images/pub.gif" ALT="">
			</TD>
			<TD>
				<IMG SRC="images/droit_05.gif" WIDTH=20 HEIGHT=295 ALT="">
		</TR>';
	}
	else
	{
	$pseudo = $_SESSION['pseudo'];
	mysql_connect("localhost", "root", "");
	mysql_select_db("bdd_site");
	$login = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
  
	while ($info = mysql_fetch_array($login) )
		{$ident='Bonjour '.$info['prenom'].' '.$info['nom'];}
		echo
		'<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
		<TR>
			<TD COLSPAN=2>
			<IMG SRC="images/spacer_droit1.gif" WIDTH=173 HEIGHT=28 ALT="spacer_droit1">
			</TD>
		</TR>
	
		<TR>
			<TD align=center background="images/droit_06.gif">
			<font face=arial size=2>'.$ident.'<P></font>
			<a href="profil.php" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage(\'Image50\',\'\',\'images/bt_profil2.gif\',1)"><IMG SRC="images/bt_profil.gif" name="Image50" ALT="bt_services" border="0"><P>
			<a href="deconnexion.php" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage(\'Image51\',\'\',\'images/bt_deconnection2.gif\',1)"><IMG SRC="images/bt_deconnection.gif" name="Image51" ALT="bt_services" border="0"><P></TD>
		</TR>
		<TR>
				<TD height=295 width=171 colspan=4>
					<IMG SRC="images/pub.gif" ALT="">
				</TD>
				<TD>
					<IMG SRC="images/droit_05.gif" WIDTH=20 HEIGHT=295 ALT="">
		</TR>';
	}
?>
	</TABLE>
	</TD>
</TR>

<TR>
	<TD height=56 width=800 colspan=2>
	<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
		<TR>
			<TD COLSPAN=5>
				<IMG SRC="images/bas_02.gif" WIDTH=799 HEIGHT=8 ALT=""></TD>
		</TR>
		<TR>
			<TD>
				<IMG SRC="images/bas_04.gif" WIDTH=288 HEIGHT=20 ALT=""></TD>
			
          <TD> <a href="credits.php" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image41','','images/bt_credits2.jpg',1)"><img src="images/bt_credits.jpg" alt="bt_credits" name="Image41" width="67" height="20" border="0"></a></TD>
			<TD>
				<IMG SRC="images/bas_06.gif" WIDTH=17 HEIGHT=20 ALT=""></TD>
			
          <TD> <a href="mentions.php" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image42','','images/bt_mentions2.gif',1)"><img src="images/bt_mentions.gif" name="Image42" width="143" height="20" border="0"></a></TD>
			<TD COLSPAN=2>
				<IMG SRC="images/bas_08.gif" WIDTH=285 HEIGHT=20 ALT=""></TD>
		</TR>
		<TR>
			<TD COLSPAN=6>
				<IMG SRC="images/bas_09.gif" WIDTH=800 HEIGHT=28 ALT=""></TD>
		</TR>
		<TR>
			<TD>
				<IMG SRC="images/spacer.gif" WIDTH=288 HEIGHT=1 ALT=""></TD>
			<TD>
				<IMG SRC="images/spacer.gif" WIDTH=67 HEIGHT=1 ALT=""></TD>
			<TD>
				<IMG SRC="images/spacer.gif" WIDTH=17 HEIGHT=1 ALT=""></TD>
			<TD>
				<IMG SRC="images/spacer.gif" WIDTH=143 HEIGHT=1 ALT=""></TD>
			<TD>
				<IMG SRC="images/spacer.gif" WIDTH=284 HEIGHT=1 ALT=""></TD>
			<TD>
				<IMG SRC="images/spacer.gif" WIDTH=1 HEIGHT=1 ALT=""></TD>
		</TR>
	</TABLE>
	</TD>
</TR>

</TABLE>
le début du script corespond à la cellule du tableau principale où s'affiche la partie principale de la page...
ma page est composée de tableaux qui sont imbriqués les uns dans les autres...
j'ai bien cherché sur google et sur le forum une réponse à ma question mais je n'ai pas trouvé donc je m'en remet à vous pour m'expliquer d'où peut venir mon problème pour que je puisse le corriger...

Merci d'avance...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

31 août 2005, 11:37

As-tu vérifié que ta requête récupérait bien qqchose ?

Eléphant du PHP | 75 Messages

31 août 2005, 11:46

oui puisqu'elle m'affiche ma liste de lien et quand je clique sur le lien elle m'affiche la fiche avec toutes les infos...
donc elle récupère bien les infos que je lui demande...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Phildefine
Invité n'ayant pas de compte PHPfrance

31 août 2005, 12:35

Salut !

Lorsque tu regarde la source de la page html , qu'elles sont tes dernières lignes ?
Est ce que c'est ?

Code : Tout sélectionner

</table> </TD> <TD valign=top align=right width=171>
Si c'est le cas, c'est peut être ton teste 'if(!isset($_SESSION['pseudo']))' qui n'est pas executé...

Philippe

truc
Invité n'ayant pas de compte PHPfrance

31 août 2005, 13:34

Tu as oublié de fermer ta dernière balise <td> ds ton while


echo '<td>'.$listing['date_vente'].' - '.$listing['ville_annonce'].' - '.$listing['dept_annonce'].' </td> </tr>'

Eléphant du PHP | 75 Messages

31 août 2005, 14:21

Effectivement truc j'ai corrigé le </td> mais ça ne règle pas le problème ça ne davait pas venir de là du fait que j'avais fermé le </tr>

Phildefine ma page html se finit par

Code : Tout sélectionner

</table> </TD> <TD valign=top align=right width=171>
mais mon teste 'if(!isset($_SESSION['pseudo']))' fonctionne car sur les autres pages ça marche parfaitement et si je vire tout le while la bas de la page sexécute donc c'est bien mon while qui me fait vriller mon code...

je ne vois plus quoi faire...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

truc
Invité n'ayant pas de compte PHPfrance

31 août 2005, 14:33

Ds le meme genre tu as ouvert une balise <p> sans la fermer ds le 2eme echo de ton while :

....$listing['nom_annonce'].'</a></h2><p>....

Eléphant du PHP | 75 Messages

31 août 2005, 14:39

il est vrai mais on est pas obligé de les fermer les balises <p>...
mais bon le problème reste entier...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Invité
Invité n'ayant pas de compte PHPfrance

31 août 2005, 17:39

personne n'a une idée?

truc
Invité n'ayant pas de compte PHPfrance

31 août 2005, 19:14

petites indication ptet inutiles mais on ne sait jamais:

:arrow: essai de crée ton tableau ligne par ligne (voire meme ne pas faire afficher de variables ds un 1er tps ca vient ptet d'une des varaibles)

:arrow: ds le while n'utilise qu'un seul echo

c parfois tres alléatoire

Eléphant du PHP | 75 Messages

31 août 2005, 19:20

qu'un seul echo j'ai essayé ça marche pas mais ta première idée c'est pas con comme ça je cible quelle partie part en sucette!!!
RDV demain pour le verdict!!

merci bien pour tout ton aide!!
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

Eléphant du PHP | 75 Messages

31 août 2005, 23:25

hé ça ne change rien cela vient bien du while puisque que quand je supprime les variables ça ne marche toujours pas mais si je supprime le while le bas s'affiche sans problème...
c'est à n'y rien comprendre...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

truc
Invité n'ayant pas de compte PHPfrance

31 août 2005, 23:37

effectivement c'est à n'y rien comprendre... comme tu dis
sinon ta essayé ligne par ligne

Eléphant du PHP | 75 Messages

31 août 2005, 23:38

c'est bon j'ai réglé le problème et j'ai trouvé la solution encore une fois par hasard mais ne me demandez pourquoi...

voilà la ligne coupable
while ($listing = mysql_fetch_array($objet)or die (mysql_error()) )
voilà la solution
while ($listing = mysql_fetch_array($objet)or die (mysql_error()))
c'était mon or die qui me foutait tout en l'air!!! pourquoi? va savoir...
ça m'a tellement fait ch.... que quand j'ai trouvé j'étais même pas happy mais véner de savoir que le problème venait de ce truc à la con...

Merci à tous ceux qui m'ont aidé...
Celui qui confesse son ignorance la montre une fois, celui qui essaie de la cacher la montre plusieurs fois...

truc
Invité n'ayant pas de compte PHPfrance

31 août 2005, 23:44

voila pkoi j'aime la programmation c tellement "con" des fois mais ca sert pr la prochaine fois :wink: