affichage d'1 sous-menu avec problème T_ELSE

wik
Eléphanteau du PHP | 29 Messages

07 juil. 2008, 19:36

Bonjour,

Je crée un menu, qui contient un sous-menu "Artistes". Lorsqu'un élément du sous-menu est cliqué je souhaite faire apparaître son propre sous menu.

Voici le code :
<?php
  echo '<table width="170" border="0" cellspacing="0" cellpadding="0" align="left" class="txt7noir">';
	 $artiste_id = $_GET['artiste_id'];	
	// 1er MENU
$requete = mysql_query ("SELECT * FROM menu ORDER BY menu_order");

while ($resultat = mysql_fetch_array($requete)) {
 echo '<tr> 
    <td width="5">&nbsp;</td>
    <td width="160" colspan="2">&nbsp;</td>
    <td width="5">&nbsp;</td>
  </tr>
  <tr> 
    <td width="5">&nbsp;</td>
    <td width="160" colspan="2" class="txt8noirGras">--------------------------<br>'.strtoupper($resultat[menu_titre]).'</td>
    <td width="5">&nbsp;</td>
  </tr>
    <tr> 
    <td width="5">&nbsp;</td>
    <td width="160" colspan="2">&nbsp;</td>
    <td width="5">&nbsp;</td>
  </tr>' ; 

 	// AFFICHAGE DES ARTISTES DU MENU
	$requete2 = mysql_query ("SELECT a.artiste_id, a.artiste_nom, a.artiste_web FROM artiste a LEFT JOIN menu m ON (a.menu_id = m.menu_id) WHERE a.menu_id = '".$resultat[menu_id]."' ORDER BY a.artiste_order") or die('Erreur : ' . mysql_error());
	
	while ($resultat2 = mysql_fetch_array($requete2)) {
 $artist=preg_replace('/\s/', '_', $resultat2[artiste_nom]);
 
 if ($resultat[menu_id] == '1') {
 $res = '<a href="projects.php?artist='.$artist.'">'.$resultat2[artiste_nom].'</a>';
 } else {
 $res = '<a href="related_artist.php?artist='.$artist.'">'.$resultat2[artiste_nom].'</a>';
	}
	
	// AFFICHAGE SOUS-MENU PAR ARTISTE (si selectionné)
        if (isset($_GET['artiste_id'])){
	$requete3 = mysql_query ("SELECT DISTINCT m2.menu2_titre FROM artiste_infos ai LEFT JOIN artiste a ON (a.artiste_id = ai.artiste_id) LEFT JOIN menu2 m2 ON (m2.menu2_id = ai.menu2_id) WHERE ai.artiste_id = '".$artiste_id."'AND ai.menu2_id = '1' ORDER BY m2.menu2_order") or die('Erreur : ' . mysql_error());
	
	while ($resultat3 = mysql_fetch_array($requete3)) {

echo '<tr> 
    <td width="5">&nbsp;</td>
    <td width="160" colspan="2" bgcolor="#C2B9A1" class="txt8noir">'.$res.'</td>
    <td width="5">&nbsp;</td>
  </tr>
  <tr> 
          <td width="5">&nbsp;</td>
          <td width="20">&nbsp;</td>
          <td width="140"><a href="#live">'.$resultat3[menu2_titre].'</a><br></td>
          <td width="5">&nbsp;</td>
        </tr>';
} else {
echo'<tr> 
    <td width="5">&nbsp;</td>
    <td width="160" colspan="2" class="txt8noir">'.$res.'</td>
    <td width="5">&nbsp;</td>
  </tr>';
		}
		}
		}
		}
Un message d'erreur s'affiche :
Parse error: syntax error, unexpected T_ELSE in /mnt/134/sdc/c/1/patchworksprods/include/menu.php on line 52
qui correspond à "} else {"

Quelqu'un peut-il m'expliquer ce qui ne colle pas ?
Merci d'avance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juil. 2008, 19:42

Ré-indente correctement ton code et tu verras que tu ouvres un while que tu ne fermes pas ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

wik
Eléphanteau du PHP | 29 Messages

07 juil. 2008, 20:56

Je viens de checker via Notepad....
Le truc bizarre est que l'accolade du 3e "while" renvoie sur "else" et le "if (isset...)" renvoie lui à la fin.
Mais selon moi le compte est bon malgré tout...

Et je ne vois pas comment modifier l'ordre de mes requêtes...

ViPHP
ViPHP | 4674 Messages

07 juil. 2008, 22:52

Hey :),

Zeus a raison, il te manque une accolage fermante. Indente comme il faut ton code, tu verras qu'il y a une erreur :). On ne va pas te le faire tout de même, n'est-ce pas :roll: ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).