Probleme avecsyntax error, unexpected T_ELSE

Bonjour,
j'ai un probleme avec mon code d'index ...
j'ai cette erreur :
Parse error: syntax error, unexpected T_ELSE in /home/web/niloo.fr/war/htdocs/www/index.php on line 156
et voici mon code :
<?php
//Cette fonction doit être appelée avant tout code html
session_start();

//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre = "Index du forum";
include("includes/debut.php");
?>
<title>index</title><body><img name="Accueil" src="" width="32" height="32" alt="" style="background-color: #FF3366">
<div id="banniere"></div>
<?php
//Maintenant, on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
?>
<div id="corps_forum">
<?php
//exit('Désolé mais le forum rencontre un problème technique ! repassez plus tard =)');

// On indique où l'on se trouve
echo'<a href ="./accueil.html">Index du forum</a>';


// Puis on commence notre if

if (isset($_SESSION['pseudo'])) // Si le membre est connecté
{
        //Voici les options
        echo'<p>Vous êtes connecté en tant que
        <a href="./voirprofil.php?m='.$_SESSION['id'].'&amp;action=consulter">
        '.$_SESSION['pseudo'].'</a><br />
        <a href="./voirprofil.php?action=modifier">
        Modifier mon profil</a><br />
        <a href="./messagesprives.php">
        <blink>/!\En construction</blink> Consulter mes messages privés</a><br />
        <a href ="./deconnexion.php">Se déconnecter</a><br /></p>';
		

}


// Sinon, on propose de se connecter ou de s'enregistrer
else
{
        echo'<br /><br /><b>Attention vous n\'êtes pas connecté !</b>
<p><a href="./connexion.php">Se connecter</a><br />
        <a href="./register.php">S\'inscrire</a><br /></p>';
}
?>
<br /><br />

<?php

//Initialisation de deux variables
$totaldesmessages = 0;
$categorie = "";
//Cette requete permet d'obtenir tout sur le forum
$requete2 = mysql_query('
SELECT cat_id, cat_nom, 
forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, 
post_time, post_createur, membre_pseudo, 
membre_id 
FROM forum_categorie
LEFT JOIN forum_forum ON forum_categorie.cat_id = forum_forum.forum_cat_id
LEFT JOIN forum_post ON forum_post.post_id = forum_forum.forum_last_post_id
LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur 
ORDER BY cat_ordre, forum_ordre DESC');
?>
<?php

//POUR REMETTRE EN ROUTE SUPPRIMER $requete2=0 et enlever les com au dessus =)
//Dans un premier temps, on vérifie s'il y a des forums à lister
if (mysql_num_rows($requete2) < 1) 

{
        echo'<center><h1>Désolé mais ce forum est en construction ! </h1> <br />Il n y a pas de forum :o <br />Repassez =)';
}
else
{
?>
<table>
<?php
function verif_auth($auth_necessaire)
{
//Dans un premier temps, on vérifie si le membre est connecté
if(isset($_SESSION['id'])) $auth = $_SESSION['level'];
else $auth = 1;
if ($auth_necessaire < $auth) return true;
else return false;
}
        //Début de la boucle
        while($data2 = mysql_fetch_assoc($requete2))
        {
//Si c'est une nouvelle catégorie on l'affiche
if(verif_auth($data2['auth_view']))// Securité d'affichage
{
        //On affiche chaque catégorie
        if( $categorie != $data2['cat_id'] )
    {
        
                $categorie = $data2['cat_id'];
                ?>
                <tr>
                <th></th>
                <th class="titre"><strong><?php echo $data2['cat_nom']; ?>
                </strong></th>             
                <th class="nombremessages"><strong>Sujets</strong></th>       
                <th class="nombresujets"><strong>Messages</strong></th>       
                <th class="derniermessage"><strong>Dernier message</strong></th>   
                </tr>
                <?php
               }


			
	
         //Ici, on met le contenu de chaque catégorie

// Ce super echo de la mort affiche tous
         // les forums en détail : description, nombre de réponses etc...
		 
         echo'<tr><br /><td><img src="./images/message.gif" alt="message" /></td>
         <td class="titre"><strong>
         <a href="./voirforum.php?f='.$data2['forum_id'].'">
         '.$data2['forum_name'].'</a></strong>
         <br />'.$data2['forum_desc'].'</td>
         <td class="nombresujets">'.$data2['forum_topic'].'</td>
         <td class="nombremessages">'.$data2['forum_post'].'</td>';

         // Deux cas possibles :
         // Soit il y a un nouveau message, soit le forum est vide
         if (!empty($data2['forum_post']))
         {
               echo'<td class="derniermessage">
               '.date('H\hi \l\e d/M/Y',$data2['post_time']).'<br />
       <a href="./voirprofil.php?m='.$data2['post_createur'].'&amp;action=consulter">
               '.$data2['membre_pseudo'].'  </a>
               <a href="./voirtopic.php?t='.$data2['topic_id'].'">
               <img src="./images/go.gif" alt="aller voir le message " /></a></td></tr>';
			   
         }
		 
         else
         {
               echo'<td class="nombremessages">Pas de message</td></tr>';
         }

         //Cette variable stock le nombre de message, on la met à jour
         $totaldesmessages = $totaldesmessages + $data2['forum_post'];

         //On ferme notre boucle et nos balises
         } //fin de la boucle
}
else
{
echo'Désolé mais vous ne pouvez pas voir ces forums ! =)';
}

    }//fin du else
echo '</table> <br />';

include("includes/bas.php");
//Fin de la vérification d'autorisation

?>

</body>

J'ai mis en gras le else et le if qui pose problème (Ils vont ensenbles)
Configuration: Windows XP
Firefox 2.0.0.16
hebergeur niloo

5 réponses

  1. Modérateur
    Oulala, c'est le bazar ton truc-là. C'est indenté n'importe comment et i'a des trucs je suis pas sûr que ça marche (genre ?> en plein milieu d'une boucle if, mais bon ça doit se faire puisque php ne bronche pas à ce sujet).
    En fait si tu avais indenté correctement tu te serais aperçu que le else de la ligne 156 s'applique au while de la ligne 94 et non au if que tu as mis en gras.
    En gros tu as fait ça :
    <?php
    while($data2 = mysql_fetch_assoc($requete2))
              {
              //Instructions à faire
              }
    else //Ligne 156
             {
             //Autres instructions
              }
    

    Aussi il te manque (au moins) les balises html et head.
    0
    1. Salut,

      ton code n'est pas bien indenté, ou il ressort ainsi sur le forum, donc difficile à débogger

      j'ai retrouvé une } manquante dans ce secteur:

      			    //On ferme notre boucle et nos balises
      			}
      		}		//fin de la boucle


      une autre remarque concernant ta fonction elle ne devrait pas se trouver au milieu du code mais au début et mets aussi des { dedans pour les if car il suffit que tu veuilles un jour rajouter une ligne ou un echo et t'es coincé.
      0
      1. <?php
        //Cette fonction doit être appelée avant tout code html
        session_start();
        <head>
        //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
        $titre = "Index du forum";
        include("includes/debut.php");</head>
        ?>
        <title>index</title><body><img name="Accueil" src="" width="32" height="32" alt="" style="background-color: #FF3366">
        <div id="banniere"></div>
        <body>
        <?php
        //Maintenant, on se connecte à la base de données
        include("includes/identifiants.php");
        mysql_connect($adresse, $nom, $motdepasse);
        mysql_select_db($database);
        ?>
        <div id="corps_forum">
        <?php
        //exit('Désolé mais le forum rencontre un problème technique ! repassez plus tard =)');
        function verif_auth($auth_necessaire)
        {
        //Dans un premier temps, on vérifie si le membre est connecté
        if(isset($_SESSION['id'])) $auth = $_SESSION['level'];
        else $auth = 1;
        if ($auth_necessaire < $auth) return true;
        else return false;
        }
        
        // On indique où l'on se trouve
        echo'<a href ="./accueil.html">Index du forum</a>';
        
        
        // Puis on commence notre if
        
        if (isset($_SESSION['pseudo'])) // Si le membre est connecté
        {
                //Voici les options
                echo'<p>Vous êtes connecté en tant que
                <a href="./voirprofil.php?m='.$_SESSION['id'].'&amp;action=consulter">
                '.$_SESSION['pseudo'].'</a><br />
                <a href="./voirprofil.php?action=modifier">
                Modifier mon profil</a><br />
                <a href="./messagesprives.php">
                <blink>/!\En construction</blink> Consulter mes messages privés</a><br />
                <a href ="./deconnexion.php">Se déconnecter</a><br /></p>';
        		
        
        }
        
        
        // Sinon, on propose de se connecter ou de s'enregistrer
        else
        {
                echo'<br /><br /><b>Attention vous n\'êtes pas connecté !</b>
        <p><a href="./connexion.php">Se connecter</a><br />
                <a href="./register.php">S\'inscrire</a><br /></p>';
        }
        ?>
        <br /><br />
        
        <?php
        
        //Initialisation de deux variables
        $totaldesmessages = 0;
        $categorie = "";
        //Cette requete permet d'obtenir tout sur le forum
        $requete2 = mysql_query('
        SELECT cat_id, cat_nom, 
        forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, 
        post_time, post_createur, membre_pseudo, 
        membre_id 
        FROM forum_categorie
        LEFT JOIN forum_forum ON forum_categorie.cat_id = forum_forum.forum_cat_id
        LEFT JOIN forum_post ON forum_post.post_id = forum_forum.forum_last_post_id
        LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
        LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur 
        ORDER BY cat_ordre, forum_ordre DESC');
        ?>
        <?php
        
        //POUR REMETTRE EN ROUTE SUPPRIMER $requete2=0 et enlever les com au dessus =)
        //Dans un premier temps, on vérifie s'il y a des forums à lister
        if (mysql_num_rows($requete2) < 1) 
        
        {
                echo'<center><h1>Désolé mais ce forum est en construction ! </h1> <br />Il n y a pas de forum :o <br />Repassez =)';
        }
        else
        {
        ?>
        <table>
        <?php
        
                //Début de la boucle
                while($data2 = mysql_fetch_assoc($requete2))
                {
        //Si c'est une nouvelle catégorie on l'affiche
        if(verif_auth($data2['auth_view']))// Securité d'affichage
        {
                //On affiche chaque catégorie
                if( $categorie != $data2['cat_id'] )
            {
                
                        $categorie = $data2['cat_id'];
                        ?>
                        <tr>
                        <th></th>
                        <th class="titre"><strong><?php echo $data2['cat_nom']; ?>
                        </strong></th>             
                        <th class="nombremessages"><strong>Sujets</strong></th>       
                        <th class="nombresujets"><strong>Messages</strong></th>       
                        <th class="derniermessage"><strong>Dernier message</strong></th>   
                        </tr>
                        <?php
                       }
        
        
        			
        	
                 //Ici, on met le contenu de chaque catégorie
        
        // Ce super echo de la mort affiche tous
                 // les forums en détail : description, nombre de réponses etc...
        		 
                 echo'<tr><br /><td><img src="./images/message.gif" alt="message" /></td>
                 <td class="titre"><strong>
                 <a href="./voirforum.php?f='.$data2['forum_id'].'">
                 '.$data2['forum_name'].'</a></strong>
                 <br />'.$data2['forum_desc'].'</td>
                 <td class="nombresujets">'.$data2['forum_topic'].'</td>
                 <td class="nombremessages">'.$data2['forum_post'].'</td>';
        
                 // Deux cas possibles :
                 // Soit il y a un nouveau message, soit le forum est vide
                 if (!empty($data2['forum_post']))
                 {
                       echo'<td class="derniermessage">
                       '.date('H\hi \l\e d/M/Y',$data2['post_time']).'<br />
               <a href="./voirprofil.php?m='.$data2['post_createur'].'&amp;action=consulter">
                       '.$data2['membre_pseudo'].'  </a>
                       <a href="./voirtopic.php?t='.$data2['topic_id'].'">
                       <img src="./images/go.gif" alt="aller voir le message " /></a></td></tr>';
        			   
                 }
        		 
                 else
                 {
                       echo'<td class="nombremessages">Pas de message</td></tr>';
                 }
        
                 //Cette variable stock le nombre de message, on la met à jour
                 $totaldesmessages = $totaldesmessages + $data2['forum_post'];
        
                } //On ferme notre boucle et nos balises
                 } //fin de la boucle
        }
        else
        {
        echo'Désolé mais vous ne pouvez pas voir ces forums ! =)';
        }
        
            }//fin du else
        echo '</table> <br />';
        
        include("includes/bas.php");
        //Fin de la vérification d'autorisation
        
        ?>
        
        </body>

        La c'est mieux ? PS indenté = gné ??? =)
        0
        1. il y a effectivement un } en trop je n'ai pas approfondi par rapport à tes if else

          regardes, je t'ai mis un commentaire

          <?php
          //Cette fonction doit être appelée avant tout code html
          session_start();
          ?>
          <html>
          <head>
          <?php
          //On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
          $titre = "Index du forum";
          include("includes/debut.php");
          ?>
          <title>index</title><body><img name="Accueil" src="" width="32" height="32" alt="" style="background-color: #FF3366">
          <div id="banniere"></div>
          </head>
          <body>
          <?php
          function verif_auth($auth_necessaire){
          	//Dans un premier temps, on vérifie si le membre est connecté
          	if(isset($_SESSION['id'])) {
          		$auth = $_SESSION['level'];
          	}else{
          		$auth = 1;
          	}
          	if ($auth_necessaire < $auth){
          		return true;
          	}else{
          		return false;
          	}	
          }
          //Maintenant, on se connecte à la base de données
          include("includes/identifiants.php");
          mysql_connect($adresse, $nom, $motdepasse);
          mysql_select_db($database);
          ?>
          <div id="corps_forum">
          <?php
          //exit('Désolé mais le forum rencontre un problème technique ! repassez plus tard =)');
          // On indique où l'on se trouve
          echo'<a href ="./accueil.html">Index du forum</a>';
          
          // Puis on commence notre if
          
          if (isset($_SESSION['pseudo'])) // Si le membre est connecté
          {
               //Voici les options
              echo'<p>Vous êtes connecté en tant que
                  <a href="./voirprofil.php?m='.$_SESSION['id'].'&amp;action=consulter">
                  '.$_SESSION['pseudo'].'</a><br />
                  <a href="./voirprofil.php?action=modifier">
                  Modifier mon profil</a><br />
                  <a href="./messagesprives.php">
                  <blink>/!\En construction</blink> Consulter mes messages privés</a><br />
                  <a href ="./deconnexion.php">Se déconnecter</a><br /></p>';
          		
          
          }
          // Sinon, on propose de se connecter ou de s'enregistrer
          else
          {
              echo'<br /><br /><b>Attention vous n\'êtes pas connecté !</b>
          		<p><a href="./connexion.php">Se connecter</a><br />
                  <a href="./register.php">S\'inscrire</a><br /></p>';
          }
          ?>
          <br /><br />
          
          <?php
          
          //Initialisation de deux variables
          $totaldesmessages = 0;
          $categorie = "";
          //Cette requete permet d'obtenir tout sur le forum
          $requete2 = mysql_query('
          SELECT cat_id, cat_nom, 
          forum_forum.forum_id, forum_name, forum_desc, forum_post, forum_topic, auth_view, forum_topic.topic_id, 
          post_time, post_createur, membre_pseudo, 
          membre_id 
          FROM forum_categorie
          LEFT JOIN forum_forum ON forum_categorie.cat_id = forum_forum.forum_cat_id
          LEFT JOIN forum_post ON forum_post.post_id = forum_forum.forum_last_post_id
          LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
          LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur 
          ORDER BY cat_ordre, forum_ordre DESC');
          ?>
          <?php
          
          //POUR REMETTRE EN ROUTE SUPPRIMER $requete2=0 et enlever les com au dessus =)
          //Dans un premier temps, on vérifie s'il y a des forums à lister
          if (mysql_num_rows($requete2) < 1) 
          {
              echo'<center><h1>Désolé mais ce forum est en construction ! </h1> <br />Il n y a pas de forum :o <br />Repassez =)';
          }
          else
          {
          ?>
          	<table>
          <?php
          
              //Début de la boucle
              while($data2 = mysql_fetch_assoc($requete2))
              {
          		//Si c'est une nouvelle catégorie on l'affiche
          		if(verif_auth($data2['auth_view']))// Securité d'affichage
          		{
          			//On affiche chaque catégorie
          			if( $categorie != $data2['cat_id'] )
          			{
                  
                          $categorie = $data2['cat_id'];
                          ?>
                          <tr>
                          <th></th>
                          <th class="titre"><strong><?php echo $data2['cat_nom']; ?>
                          </strong></th>             
                          <th class="nombremessages"><strong>Sujets</strong></th>       
                          <th class="nombresujets"><strong>Messages</strong></th>       
                          <th class="derniermessage"><strong>Dernier message</strong></th>   
                          </tr>
                          <?php
                      }
          			//Ici, on met le contenu de chaque catégorie
          
          			// Ce super echo de la mort affiche tous
          			// les forums en détail : description, nombre de réponses etc...
          			echo'<tr><br /><td><img src="./images/message.gif" alt="message" /></td>
          				<td class="titre"><strong>
          				<a href="./voirforum.php?f='.$data2['forum_id'].'">
          				'.$data2['forum_name'].'</a></strong>
          				<br />'.$data2['forum_desc'].'</td>
          				<td class="nombresujets">'.$data2['forum_topic'].'</td>
          				<td class="nombremessages">'.$data2['forum_post'].'</td>';
          
          			// Deux cas possibles :
          			// Soit il y a un nouveau message, soit le forum est vide
          			if (!empty($data2['forum_post']))
          			{
          				echo'<td class="derniermessage">
          					'.date('H\hi \l\e d/M/Y',$data2['post_time']).'<br />
          					<a href="./voirprofil.php?m='.$data2['post_createur'].'&amp;action=consulter">
          					'.$data2['membre_pseudo'].'  </a>
          					<a href="./voirtopic.php?t='.$data2['topic_id'].'">
          					<img src="./images/go.gif" alt="aller voir le message " /></a></td></tr>';
          			   
          			}		 
          			else
          			{
          				echo'<td class="nombremessages">Pas de message</td></tr>';
          			}
          
          			//Cette variable stock le nombre de message, on la met à jour
          			$totaldesmessages = $totaldesmessages + $data2['forum_post'];
          
          		} //On ferme notre boucle et nos balises
              } //fin de la boucle
          }
          else
          {
          	echo 'Désolé mais vous ne pouvez pas voir ces forums ! =)';
          }
          
              }//fin du else  //la un PB c'est la fin de quel else ??????
          echo '</table> <br />';
          
          include("includes/bas.php");
          //Fin de la vérification d'autorisation
          
          ?>
          
          </body>
          <html>
          0
        2. petite rectif à la fin ce n'est pas <html> mais </html>
          0
      2. Modérateur
        https://fr.wikipedia.org/wiki/Indentation#Informatique
        Non, ne fout pas la balise <head> en plein milieu d'un code php !
        <?php //Contenu php pour la session ?>
        <html>
        <head>
        <!--Contenu-->
        </head>
        <body>
        <?php //Contenu php pour le corps ?>
        </body>
        </html>
        


        Et non c'est pas bon, j'ai pas regardé où mais déjà, il y a un } de trop (il y en a 12 pour 11 {)
        0
        1. Probleme resolu !
          J'ai tout simplement refais la page de A à Z et ca marche =)
          Merci a tout les deux de m'avoir aider !
          0