Probleme avecsyntax error, unexpected T_ELSE

Fermé
Akoo - 2 août 2008 à 14:06
 akoo - 2 août 2008 à 21:03
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)

5 réponses

Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 331
2 août 2008 à 14:28
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 août 2008 à 14:29
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
<?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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 août 2008 à 17:31
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
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 août 2008 à 17:32
petite rectif à la fin ce n'est pas <html> mais </html>
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 331
2 août 2008 à 16:12
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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