Probleme avecsyntax error, unexpected T_ELSE

Akoo -  
 akoo -
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. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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
  2. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
  3. Akoo
     
    <?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. Alain_42 Messages postés 5413 Statut Membre 904
       
      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. Alain_42 Messages postés 5413 Statut Membre 904
       
      petite rectif à la fin ce n'est pas <html> mais </html>
      0
  4. Yoan Messages postés 11905 Statut Modérateur 2 356
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. akoo
     
    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