Problème avec un tuto pour réaliser un forum.

luluwebmaster Messages postés 430 Statut Membre -  
luluwebmaster Messages postés 430 Statut Membre -
Bonjour,
j'ai suivie le tuto ici :
https://openclassrooms.com/fr/courses
Mais je rencontre un problème au niveau de mes pages "inscription" "connection" quand je les tests, il me met ça :
( ! ) Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\test_forum\forum\register.php on line 43

Les codes de chaque pages :
connextion.php :
<?php
session_start();
$titre="Connexion";
include("includes/identifiants.php");
include("includes/debut.php");
include("includes/menu.php");
echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Connexion';
?>
<?php
echo '<h1>Connexion</h1>';
if ($id!=0) erreur(ERR_IS_CO);
?>
<?php
exit('<div id="error"><p>'.$mess.'</p>
   <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></div></body></html>');
?>
<?php
if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
{
    echo '<form method="post" action="connexion.php">
    <fieldset>
    <legend>Connexion</legend>
    <p>
    <label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
    <label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
    </p>
    </fieldset>
    <p><input type="submit" value="Connexion" /></p></form>
    <a href="./register.php">Pas encore inscrit ?</a>
      
    </div>
    </body>
    </html>';
}
?>
<?php
//On reprend la suite du code
else
{
    $message='';
    if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
    {
        $message = '<p>une erreur s\'est produite pendant votre identification.
    Vous devez remplir tous les champs</p>
    <p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
    }
    else //On check le mot de passe
    {
        $query=$db->prepare('SELECT membre_mdp, membre_id, membre_rang, membre_pseudo
        FROM forum_membres WHERE membre_pseudo = :pseudo');
        $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
        $query->execute();
        $data=$query->fetch();
    if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
    {
        $_SESSION['pseudo'] = $data['membre_pseudo'];
        $_SESSION['level'] = $data['membre_rang'];
        $_SESSION['id'] = $data['membre_id'];
        $message = '<p>Bienvenue '.$data['membre_pseudo'].', 
            vous êtes maintenant connecté!</p>
            <p>Cliquez <a href="./index.php">ici</a> 
            pour revenir à la page d accueil</p>';  
    }
    else // Acces pas OK !
    {
        $message = '<p>Une erreur s\'est produite 
        pendant votre identification.<br /> Le mot de passe ou le pseudo 
            entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
        pour revenir à la page précédente
        <br /><br />Cliquez <a href="./index.php">ici</a> 
        pour revenir à la page d accueil</p>';
    }
    $query->CloseCursor();
    }
    echo $message.'</div></body></html>';
 
}
?>


register.php :
<?php
session_start();
$titre="Enregistrement";
include("includes/identifiants.php");
include("includes/debut.php");
include("includes/menu.php");
echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Enregistrement';
 
if ($id!=0) erreur(ERR_IS_CO);
?>
<?php
if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
{
    echo '<h1>Inscription 1/2</h1>';
    echo '<form method="post" action="register.php" enctype="multipart/form-data">
    <fieldset><legend>Identifiants</legend>
    <label for="pseudo">* Pseudo :</label>  <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
    <label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
    <label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
    </fieldset>
    <fieldset><legend>Contacts</legend>
    <label for="email">* Votre adresse Mail :</label><input type="text" name="email" id="email" /><br />
    <label for="msn">Votre adresse MSN :</label><input type="text" name="msn" id="msn" /><br />
    <label for="website">Votre site web :</label><input type="text" name="website" id="website" />
    </fieldset>
    <fieldset><legend>Informations supplémentaires</legend>
    <label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
    </fieldset>
    <fieldset><legend>Profil sur le forum</legend>
    <label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10Ko<br />
    <label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
    </fieldset>
    <p>Les champs précédés d un * sont obligatoires</p>
    <p><input type="submit" value="S\'inscrire" /></p></form>
    </div>
    </body>
    </html>';
     
     
} //Fin de la partie formulaire
?>
<?php
else //On est dans le cas traitement
{
    $pseudo_erreur1 = NULL;
    $pseudo_erreur2 = NULL;
    $mdp_erreur = NULL;
    $email_erreur1 = NULL;
    $email_erreur2 = NULL;
    $msn_erreur = NULL;
    $signature_erreur = NULL;
    $avatar_erreur = NULL;
    $avatar_erreur1 = NULL;
    $avatar_erreur2 = NULL;
    $avatar_erreur3 = NULL;
?>
<?php
 
    //On récupère les variables
    $i = 0;
    $temps = time(); 
    $pseudo=$_POST['pseudo'];
    $signature = $_POST['signature'];
    $email = $_POST['email'];
    $msn = $_POST['msn'];
    $website = $_POST['website'];
    $localisation = $_POST['localisation'];
    $pass = md5($_POST['password']);
    $confirm = md5($_POST['confirm']);
     
    //Vérification du pseudo
    $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
    $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
    $query->execute();
    $pseudo_free=($query->fetchColumn()==0)?1:0;
    $query->CloseCursor();
    if(!$pseudo_free)
    {
        $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
        $i++;
    }
 
    if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
    {
        $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
        $i++;
    }
 
    //Vérification du mdp
    if ($pass != $confirm || empty($confirm) || empty($pass))
    {
        $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
        $i++;
    }
?>


functions.php :
<?php
function erreur($err='')
{
   $mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
   exit('<p>'.$mess.'</p>
   <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></body></html>');
}
?>


constants.php :
<?php
define('VISITEUR',1);
define('INSCRIT',2);
define('MODO',3);
define('ADMIN',4);
?>
<?php
define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
?>


Merci d'avance a celui qui saura me repondre.

--
Merci a tout ceux qui répondrons a mes problème ^^

8 réponses

Résumé de la discussion

Des erreurs de syntaxe PHP provoquent des parse errors, notamment 'unexpected T_ELSE', sur les pages d'inscription et de profil, liées à des balises PHP mal gérées et à des blocs if/else fermés.
Plusieurs répondants conseillent de repérer des fermetures PHP superflues et de vérifier des lignes critiques (par exemple la ligne 94) où une condition peut être mal reliée à un else.
Des éléments de discussion pointent aussi des anomalies de syntaxe comme un 'default;' écrit dans un switch au lieu de 'default:', et des balises qui cassent la structure.
Des pratiques proposées incluent la suppression des balises PHP superflues, la correction des structures switch/if/else et la réorganisation du code pour éviter les injections HTML entre les blocs PHP.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
     
    Salut,

    essaye de retirer les :
    ?>
    <?php

    en ligne 41 et 42

    et il te manque un } en fin de fichier
    0
  2. luluwebmaster Messages postés 430 Statut Membre 5
     
    En retirant les ?> et <?php, ça ne fonctionne pas.
    et pour le } c'est sur quelle fichier ?
    0
    1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      sur register
      0
    2. luluwebmaster Messages postés 430 Statut Membre 5
       
      ça ne fonctionne pas ....
      0
    3. luluwebmaster Messages postés 430 Statut Membre 5
       
      Peut être que j'ai mal suivis le Tuto ?
      0
    4. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      possible, difficile à dire comme ça.

      Tu utilises quel logiciel pour écrire ton code ?

      retire tous tes
      ?>
      <?php


      ça ne sert à rien du tout
      0
    5. luluwebmaster Messages postés 430 Statut Membre 5
       
      Notpad++
      Ok, je vais le retirer .
      0
  3. luluwebmaster Messages postés 430 Statut Membre 5
     
    Bien sur,
    voici le nouveau code du fichier connexion :
    <?php
    session_start();
    $titre="Connexion";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Connexion';
    
    echo '<h1>Connexion</h1>';
    if ($id!=0) erreur(ERR_IS_CO);
    
    exit('<div id="error"><p>'.$mess.'</p>
       <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></div></body></html>');
    
    if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
    {
        echo '<form method="post" action="connexion.php">
        <fieldset>
        <legend>Connexion</legend>
        <p>
        <label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
        <label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
        </p>
        </fieldset>
        <p><input type="submit" value="Connexion" /></p></form>
        <a href="./register.php">Pas encore inscrit ?</a>
          
        </div>
        </body>
        </html>';
    }
    
    //On reprend la suite du code
    else
    {
        $message='';
        if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
        {
            $message = '<p>une erreur s\'est produite pendant votre identification.
        Vous devez remplir tous les champs</p>
        <p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
        }
        else //On check le mot de passe
        {
            $query=$db->prepare('SELECT membre_mdp, membre_id, membre_rang, membre_pseudo
            FROM forum_membres WHERE membre_pseudo = :pseudo');
            $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
            $query->execute();
            $data=$query->fetch();
        if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
        {
            $_SESSION['pseudo'] = $data['membre_pseudo'];
            $_SESSION['level'] = $data['membre_rang'];
            $_SESSION['id'] = $data['membre_id'];
            $message = '<p>Bienvenue '.$data['membre_pseudo'].', 
                vous êtes maintenant connecté!</p>
                <p>Cliquez <a href="./index.php">ici</a> 
                pour revenir à la page d accueil</p>';  
        }
        else // Acces pas OK !
        {
            $message = '<p>Une erreur s\'est produite 
            pendant votre identification.<br /> Le mot de passe ou le pseudo 
                entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
            pour revenir à la page précédente
            <br /><br />Cliquez <a href="./index.php">ici</a> 
            pour revenir à la page d accueil</p>';
        }
        $query->CloseCursor();
        }
        echo $message.'</div></body></html>';
     
    }
    ?>

    0
    1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      Heu oui, c'est normal.

      a la ligne 12 tu as : exit('<div id="error"><p>'.$mess.'</p>

      ça va forcément stoper ton code php, vérifie ton tuto à ce niveau tu as du rater quelque chose.
      0
    2. luluwebmaster Messages postés 430 Statut Membre 5
       
      C'est bon, ça marche,
      il fallait enlever se code :
      exit('<div id="error"><p>'.$mess.'</p>
         <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></div></body></html>');


      Par contre, j'ai un autre problème :
      lorsque j'essais de m'enregistrer, quand je clique sur le bouton enregistrer, ça me met ça :
      Vous êtes ici : Index du forum --> Enregistrement

      et ça ne m'enregistre pas.
      0
    3. luluwebmaster Messages postés 430 Statut Membre 5
       
      Bon problème resolu pour le message, mais j'ai un nouveau problème :
      Quand je veux m'inscrire, il m'affiche des erreur en bas, alors que je n'ai même pas cliquer sur le bouton enregistrer ...
      Voici le code register :
      <?php
      error_reporting(E_ERROR | E_WARNING | E_PARSE);
      session_start();
      $titre="Enregistrement";
      include("includes/identifiants.php");
      include("includes/debut.php");
      include("includes/menu.php");
      echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Enregistrement';
       
      
      
      if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
      {
          echo '<h1>Inscription 1/2</h1>';
          echo '<form method="post" action="register.php" enctype="multipart/form-data">
          <fieldset><legend>Identifiants</legend>
          <label for="pseudo">* Pseudo :</label>  <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
          <label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
          <label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
          </fieldset>
          <fieldset><legend>Contacts</legend>
          <label for="email">* Votre adresse Mail :</label><input type="text" name="email" id="email" /><br />
          <label for="msn">Votre adresse MSN :</label><input type="text" name="msn" id="msn" /><br />
          <label for="website">Votre site web :</label><input type="text" name="website" id="website" />
          </fieldset>
          <fieldset><legend>Informations supplémentaires</legend>
          <label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
          </fieldset>
          <fieldset><legend>Profil sur le forum</legend>
          <label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10Ko<br />
          <label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
          </fieldset>
      	<label>Se souvenir de moi ?</label><input type="checkbox" name="souvenir" /><br />
          <p>Les champs précédés d un * sont obligatoires</p>
          <p><input type="submit" value="S\'inscrire" /></p></form>
          </div>
          </body>
          </html>';
           
           
      } //Fin de la partie formulaire
      
      else //On est dans le cas traitement
      {
          $pseudo_erreur1 = NULL;
          $pseudo_erreur2 = NULL;
          $mdp_erreur = NULL;
          $email_erreur1 = NULL;
          $email_erreur2 = NULL;
          $msn_erreur = NULL;
          $signature_erreur = NULL;
          $avatar_erreur = NULL;
          $avatar_erreur1 = NULL;
          $avatar_erreur2 = NULL;
          $avatar_erreur3 = NULL;
      }
      {
       
          //On récupère les variables
          $i = 0;
          $temps = time(); 
          $pseudo=$_POST['pseudo'];
          $signature = $_POST['signature'];
          $email = $_POST['email'];
          $msn = $_POST['msn'];
          $website = $_POST['website'];
          $localisation = $_POST['localisation'];
          $pass = md5($_POST['password']);
          $confirm = md5($_POST['confirm']);
           
          //Vérification du pseudo
          $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
          $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
          $query->execute();
          $pseudo_free=($query->fetchColumn()==0)?1:0;
          $query->CloseCursor();
          if(!$pseudo_free)
          {
              $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
              $i++;
          }
       
          if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
          {
              $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
              $i++;
          }
       
          //Vérification du mdp
          if ($pass != $confirm || empty($confirm) || empty($pass))
          {
              $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
              $i++;
          }
      
      $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
      $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
      $query->execute();
      $pseudo_free=($query->fetchColumn()==0)?1:0;
      
          //Vérification de l'adresse email
       
          //Il faut que l'adresse email n'ait jamais été utilisée
          $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
          $query->bindValue(':mail',$email, PDO::PARAM_STR);
          $query->execute();
          $mail_free=($query->fetchColumn()==0)?1:0;
          $query->CloseCursor();
           
          if(!$mail_free)
          {
              $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
              $i++;
          }
          //On vérifie la forme maintenant
          if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
          {
              $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
              $i++;
          }
          //Vérification de l'adresse MSN
          if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
          {
              $msn_erreur = "Votre adresse MSN n'a pas un format valide";
              $i++;
          }
          //Vérification de la signature
          if (strlen($signature) > 200)
          {
              $signature_erreur = "Votre signature est trop longue";
              $i++;
          }
      
          //Vérification de l'avatar :
          if (!empty($_FILES['avatar']['size']))
          {
              //On définit les variables :
              $maxsize = 10024; //Poid de l'image
              $maxwidth = 100; //Largeur de l'image
              $maxheight = 100; //Longueur de l'image
              $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
               
              if ($_FILES['avatar']['error'] > 0)
              {
                      $avatar_erreur = "Erreur lors du transfert de l'avatar : ";
              }
              if ($_FILES['avatar']['size'] > $maxsize)
              {
                      $i++;
                      $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
              }
       
              $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
              if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
              {
                      $i++;
                      $avatar_erreur2 = "Image trop large ou trop longue : 
                      (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
              }
               
              $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
              if (!in_array($extension_upload,$extensions_valides) )
              {
                      $i++;
                      $avatar_erreur3 = "Extension de l'avatar incorrecte";
              }
          }
      
         if ($i==0)
         {
          echo'<h1>Inscription terminée</h1>';
              echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>
          <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
           
              //La ligne suivante sera commentée plus bas
          $nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):''; 
          
              $query=$db->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,             
              membre_msn, membre_siteweb, membre_avatar,
              membre_signature, membre_localisation, membre_inscrit,   
              membre_derniere_visite)
              VALUES (:pseudo, :pass, :email, :msn, :website, :nomavatar, :signature, :localisation, :temps, :temps)');
          $query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
          $query->bindValue(':pass', $pass, PDO::PARAM_INT);
          $query->bindValue(':email', $email, PDO::PARAM_STR);
          $query->bindValue(':msn', $msn, PDO::PARAM_STR);
          $query->bindValue(':website', $website, PDO::PARAM_STR);
          $query->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR);
          $query->bindValue(':signature', $signature, PDO::PARAM_STR);
          $query->bindValue(':localisation', $localisation, PDO::PARAM_STR);
          $query->bindValue(':temps', $temps, PDO::PARAM_INT);
              $query->execute();
       
          //Et on définit les variables de sessions
              $_SESSION['pseudo'] = $pseudo;
              $_SESSION['id'] = $db->lastInsertId(); ;
              $_SESSION['level'] = 2;
              $query->CloseCursor();
          }
          else
          {
              echo'<h1>Inscription interrompue</h1>';
              echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
              echo'<p>'.$i.' erreur(s)</p>';
              echo'<p>'.$pseudo_erreur1.'</p>';
              echo'<p>'.$pseudo_erreur2.'</p>';
              echo'<p>'.$mdp_erreur.'</p>';
              echo'<p>'.$email_erreur1.'</p>';
              echo'<p>'.$email_erreur2.'</p>';
              echo'<p>'.$msn_erreur.'</p>';
              echo'<p>'.$signature_erreur.'</p>';
              echo'<p>'.$avatar_erreur.'</p>';
              echo'<p>'.$avatar_erreur1.'</p>';
              echo'<p>'.$avatar_erreur2.'</p>';
              echo'<p>'.$avatar_erreur3.'</p>';
              
              echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
          }
      }
      ?>
      </div>
      </body>
      </html>
      0
    4. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      Et les erreurs mystères, quelles sont-elles ?

      déjà ligne 56 57 tu as un truc bizarre. tu as une accolade fermante et juste après une ouvrante, il manque un truc là.
      0
    5. luluwebmaster Messages postés 430 Statut Membre 5
       
      Erreurs mystères ?

      J'ai enlever { , et celle qui la fermer, mais j'ai le même problème.
      0
  4. luluwebmaster Messages postés 430 Statut Membre 5
     
    Bon,
    la je suis a cette partie du tuto :
    https://openclassrooms.com/fr/courses
    Je rencontre un nouveau problème,
    quand je met le code de traitement pour modifier le profil j'ai se message d'erreur :
    ( ! ) Parse error: syntax error, unexpected T_ELSE in C:\wamp\www\test_forum\forum\voirprofil.php on line 138

    Voici le code avec le traitement :
    <?php
    session_start();
    $titre="Profil";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    //On récupère la valeur de nos variables passées par URL
    $action = isset($_GET['action'])?htmlspecialchars($_GET['action']):'consulter';
    $membre = isset($_GET['m'])?(int) $_GET['m']:'';
    
    //On regarde la valeur de la variable $action
    switch($action)
    {
        //Si c'est "consulter"
        case "consulter":
           //On récupère les infos du membre
           $query=$db->prepare('SELECT membre_pseudo, membre_avatar,
           membre_email, membre_msn, membre_signature, membre_siteweb, membre_post,
           membre_inscrit, membre_localisation
           FROM forum_membres WHERE membre_id=:membre');
           $query->bindValue(':membre',$membre, PDO::PARAM_INT);
           $query->execute();
           $data=$query->fetch();
     
           //On affiche les infos sur le membre
           echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> 
           profil de '.stripslashes(htmlspecialchars($data['membre_pseudo']));
           echo'<h1>Profil de '.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</h1>';
            
           echo'<img src="./images/avatars/'.$data['membre_avatar'].'"
           alt="Ce membre n a pas d avatar" />';
            
           echo'<p><strong>Adresse E-Mail : </strong>
           <a href="mailto:'.stripslashes($data['membre_email']).'">
           '.stripslashes(htmlspecialchars($data['membre_email'])).'</a><br />';
            
           echo'<strong>MSN Messenger : </strong>'.stripslashes(htmlspecialchars($data['membre_msn'])).'<br />';
            
           echo'<strong>Site Web : </strong>
           <a href="'.stripslashes($data['membre_siteweb']).'">'.stripslashes(htmlspecialchars($data['membre_siteweb'])).'</a>
           <br /><br />';
      
           echo'Ce membre est inscrit depuis le
           <strong>'.date('d/m/Y',$data['membre_inscrit']).'</strong>
           et a posté <strong>'.$data['membre_post'].'</strong> messages
           <br /><br />';
           echo'<strong>Localisation : </strong>'.stripslashes(htmlspecialchars($data['membre_localisation'])).'
           </p>';
           $query->CloseCursor();
           break;
    
    	   
    	   
    	   
        //Si on choisit de modifier son profil
        case "modifier":
        if (empty($_POST['sent'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
        {
            //On commence par s'assurer que le membre est connecté
            if ($id==0) erreur(ERR_IS_NOT_CO);
     
            //On prend les infos du membre
            $query=$db->prepare('SELECT membre_pseudo, membre_email,
            membre_siteweb, membre_signature, membre_msn, membre_localisation,
            membre_avatar
            FROM forum_membres WHERE membre_id=:id');
            $query->bindValue(':id',$id,PDO::PARAM_INT);
            $query->execute();
            $data=$query->fetch();
            echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Modification du profil';
            echo '<h1>Modifier son profil</h1>';
             
            echo '<form method="post" action="voirprofil.php?action=modifier" enctype="multipart/form-data">
            
      
            <fieldset><legend>Identifiants</legend>
            Pseudo : <strong>'.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</strong><br />       
            <label for="password">Nouveau mot de Passe :</label>
            <input type="password" name="password" id="password" /><br />
            <label for="confirm">Confirmer le mot de passe :</label>
            <input type="password" name="confirm" id="confirm"  />
            </fieldset>
      
            <fieldset><legend>Contacts</legend>
            <label for="email">Votre adresse E_Mail :</label>
            <input type="text" name="email" id="email"
            value="'.stripslashes($data['membre_email']).'" /><br />
      
            <label for="msn">Votre adresse MSN :</label>
            <input type="text" name="msn" id="msn"
            value="'.stripslashes($data['membre_msn']).'" /><br />
      
            <label for="website">Votre site web :</label>
            <input type="text" name="website" id="website"
            value="'.stripslashes($data['membre_siteweb']).'" /><br />
            </fieldset>
      
            <fieldset><legend>Informations supplémentaires</legend>
            <label for="localisation">Localisation :</label>
            <input type="text" name="localisation" id="localisation"
            value="'.stripslashes($data['membre_localisation']).'" /><br />
            </fieldset>
                    
            <fieldset><legend>Profil sur le forum</legend>
            <label for="avatar">Changer votre avatar :</label>
            <input type="file" name="avatar" id="avatar" />
            (Taille max : 10 ko)<br /><br />
            <label><input type="checkbox" name="delete" value="Delete" />
            Supprimer l avatar</label>
            Avatar actuel :
            <img src="./images/avatars/'.$data['membre_avatar'].'"
            alt="pas d avatar" />
          
            <br /><br />
            <label for="signature">Signature :</label>
            <textarea cols="40" rows="4" name="signature" id="signature">
            '.stripslashes($data['membre_signature']).'</textarea>
          
          
            </fieldset>
            <p>
            <input type="submit" value="Modifier son profil" />
            <input type="hidden" id="sent" name="sent" value="1" />
            </p></form>';
            $query->CloseCursor();   
        }   
        else //Sinon on est dans la page de traitement
        {
            //Traitement (voir plus bas)
        }
        break;
    default; //Si jamais c'est aucun de ceux-là c'est qu'il y a eu un problème :o
    echo'<p>Cette action est impossible</p>';
      
    } //Fin du switch
    ?>
    <?php
        else //Cas du traitement
        {
         //On déclare les variables 
     
        $mdp_erreur = NULL;
        $email_erreur1 = NULL;
        $email_erreur2 = NULL;
        $msn_erreur = NULL;
        $signature_erreur = NULL;
        $avatar_erreur = NULL;
        $avatar_erreur1 = NULL;
        $avatar_erreur2 = NULL;
        $avatar_erreur3 = NULL;
     
        //Encore et toujours notre belle variable $i :p
        $i = 0;
        $temps = time(); 
        $signature = $_POST['signature'];
        $email = $_POST['email'];
        $msn = $_POST['msn'];
        $website = $_POST['website'];
        $localisation = $_POST['localisation'];
        $pass = md5($_POST['password']);
        $confirm = md5($_POST['confirm']);
     
     
        //Vérification du mdp
        if ($pass != $confirm || empty($confirm) || empty($pass))
        {
             $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent ou sont vides";
             $i++;
        }
     
        //Vérification de l'adresse email
        //Il faut que l'adresse email n'ait jamais été utilisée (sauf si elle n'a pas été modifiée)
     
        //On commence donc par récupérer le mail
        $query=$db->prepare('SELECT membre_email FROM forum_membres WHERE membre_id =:id'); 
        $query->bindValue(':id',$id,PDO::PARAM_INT);
        $query->execute();
        $data=$query->fetch();
        if (strtolower($data['membre_email']) != strtolower($email))
        {
            //Il faut que l'adresse email n'ait jamais été utilisée
            $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
            $query->bindValue(':mail',$email,PDO::PARAM_STR);
            $query->execute();
            $mail_free=($query->fetchColumn()==0)?1:0;
            $query->CloseCursor();
            if(!$mail_free)
            {
                $email_erreur1 = "Votre adresse email est déjà utilisé par un membre";
                $i++;
            }
     
            //On vérifie la forme maintenant
            if (!preg_match("#^[a-z0-9A-Z._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
            {
                $email_erreur2 = "Votre nouvelle adresse E-Mail n'a pas un format valide";
                $i++;
            }
        }
        //Vérification de l'adresse MSN
        if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
        {
            $msn_erreur = "Votre nouvelle adresse MSN n'a pas un format valide";
            $i++;
        }
     
        //Vérification de la signature
        if (strlen($signature) > 200)
        {
            $signature_erreur = "Votre nouvelle signature est trop longue";
            $i++;
        }
      
      
        //Vérification de l'avatar
      
        if (!empty($_FILES['avatar']['size']))
        {
            //On définit les variables :
            $maxsize = 30072; //Poid de l'image
            $maxwidth = 100; //Largeur de l'image
            $maxheight = 100; //Longueur de l'image
            //Liste des extensions valides
            $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' );
      
            if ($_FILES['avatar']['error'] > 0)
            {
            $avatar_erreur = "Erreur lors du tranfsert de l'avatar : ";
            }
            if ($_FILES['avatar']['size'] > $maxsize)
            {
            $i++;
            $avatar_erreur1 = "Le fichier est trop gros :
            (<strong>".$_FILES['avatar']['size']." Octets</strong>
            contre <strong>".$maxsize." Octets</strong>)";
            }
      
            $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
            if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
            {
            $i++;
            $avatar_erreur2 = "Image trop large ou trop longue :
            (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre
            <strong>".$maxwidth."x".$maxheight."</strong>)";
            }
      
            $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
            if (!in_array($extension_upload,$extensions_valides) )
            {
                    $i++;
                    $avatar_erreur3 = "Extension de l'avatar incorrecte";
            }
        }
    ?>
    </div>
    </body>
    </html>
    <?php
        echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Modification du profil';
        echo '<h1>Modification d\'un profil</h1>';
     
      
        if ($i == 0) // Si $i est vide, il n'y a pas d'erreur
        {
            if (!empty($_FILES['avatar']['size']))
            {
                    $nomavatar=move_avatar($_FILES['avatar']);
                    $query=$db->prepare('UPDATE forum_membres
                    SET membre_avatar = :avatar 
                    WHERE membre_id = :id');
                    $query->bindValue(':avatar',$nomavatar,PDO::PARAM_STR);
                    $query->bindValue(':id',$id,PDO::PARAM_INT);
                    $query->execute();
                    $query->CloseCursor();
            }
      
            //Une nouveauté ici : on peut choisis de supprimer l'avatar
            if (isset($_POST['delete']))
            {
                    $query=$db->prepare('UPDATE forum_membres
            SET membre_avatar=0 WHERE membre_id = :id');
                    $query->bindValue(':id',$id,PDO::PARAM_INT);
                    $query->execute();
                    $query->CloseCursor();
            }
      
            echo'<h1>Modification terminée</h1>';
            echo'<p>Votre profil a été modifié avec succès !</p>';
            echo'<p>Cliquez <a href="./index.php">ici</a> 
            pour revenir à la page d accueil</p>';
      
            //On modifie la table
      
            $query=$db->prepare('UPDATE forum_membres
            SET  membre_mdp = :mdp, membre_email=:mail, membre_msn=:msn, membre_siteweb=:website,
            membre_signature=:sign, membre_localisation=:loc
            WHERE membre_id=:id');
            $query->bindValue(':mdp',$pass,PDO::PARAM_INT);
            $query->bindValue(':mail',$email,PDO::PARAM_STR);
            $query->bindValue(':msn',$msn,PDO::PARAM_STR);
            $query->bindValue(':website',$website,PDO::PARAM_STR);
            $query->bindValue(':sign',$signature,PDO::PARAM_STR);
            $query->bindValue(':loc',$localisation,PDO::PARAM_STR);
            $query->bindValue(':id',$id,PDO::PARAM_INT);
            $query->execute();
            $query->CloseCursor();
        }
        else
        {
            echo'<h1>Modification interrompue</h1>';
            echo'<p>Une ou plusieurs erreurs se sont produites pendant la modification du profil</p>';
            echo'<p>'.$i.' erreur(s)</p>';
            echo'<p>'.$mdp_erreur.'</p>';
            echo'<p>'.$email_erreur1.'</p>';
            echo'<p>'.$email_erreur2.'</p>';
            echo'<p>'.$msn_erreur.'</p>';
            echo'<p>'.$signature_erreur.'</p>';
            echo'<p>'.$avatar_erreur.'</p>';
            echo'<p>'.$avatar_erreur1.'</p>';
            echo'<p>'.$avatar_erreur2.'</p>';
            echo'<p>'.$avatar_erreur3.'</p>';
            echo'<p> Cliquez <a href="./voirprofil.php?action=modifier">ici</a> pour recommencer</p>';
        }
    } //Fin du else
        break;
      
    default; //Si jamais c'est aucun de ceux là c'est qu'il y a eu un problème :o
    echo'<p>Cette action est impossible</p>';
      
    } //Fin du switch
    ?>
    </div>
    </body>
    </html>
    </html>
    

    En tout cas, merci pour tout l'aide que vous m'avez apporté déjà ^^
    0
    1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      tu as un else en ligne 138 mais il n'y a pas de if.
      0
    2. luluwebmaster Messages postés 430 Statut Membre 5
       
      Peut tu me dire quelle partie rajouter ?
      Ou supprimer, je sais pas trop :P
      0
    3. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      Non je ne peux pas.

      A mon avis tu mélanges certaines pages.
      Ton tutoriel, si tu le suis de A à Z, ça va fonctionner, mais si tu sautes des parties ou ajoute du code sans trop faire attention ça ne va pas marcher, c'est certain.
      0
    4. luluwebmaster Messages postés 430 Statut Membre 5
       
      Je le suis pourtant très bien, je fais tout comme il disent ...
      0
    5. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      manifestement, non :)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. luluwebmaster Messages postés 430 Statut Membre 5
     
    Je remarque que j'ai énormément de problème avec ce tuto, maintenant, j'ai une erreur :
    ( ! ) Parse error: syntax error, unexpected '<' in C:\wamp\www\test_forum\forum\voirtopic.php on line 94

    qui correspond a cette page :
    voirtopic.php
    sont code :
    <?php
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    session_start();
    $titre="Voir un sujet";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    include("includes/bbcode.php"); //On verra plus tard ce qu'est ce fichier
      
    //On récupère la valeur de t
    $topic = (int) $_GET['t'];
      
    //A partir d'ici, on va compter le nombre de messages pour n'afficher que les 15 premiers
    $query=$db->prepare('SELECT topic_titre, topic_post, forum_topic.forum_id, topic_last_post,
    forum_name, auth_view, auth_topic, auth_post 
    FROM forum_topic 
    LEFT JOIN forum_forum ON forum_topic.forum_id = forum_forum.forum_id 
    WHERE topic_id = :topic');
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->execute();
    $data=$query->fetch();
    $forum=$data['forum_id']; 
    $totalDesMessages = $data['topic_post'] + 1;
    $nombreDeMessagesParPage = 15;
    $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
    
    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> 
    <a href="./voirforum.php?f='.$forum.'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
     --> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>';
    echo '<h1>'.stripslashes(htmlspecialchars($data['topic_titre'])).'</h1><br /><br />';
    
    //Nombre de pages
    $page = (isset($_GET['page']))?intval($_GET['page']):1;
     
    //On affiche les pages 1-2-3 etc...
    echo '<p>Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
        if ($i == $page) //On affiche pas la page actuelle en lien
        {
        echo $i;
        }
        else
        {
        echo '<a href="voirtopic.php?t='.$topic.'&page='.$i.'">
        ' . $i . '</a> ';
        }
    }
    echo'</p>';
      
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
     
      
    //On affiche l'image répondre
    echo'<a href="./poster.php?action=repondre&amp;t='.$topic.'">
    <img src="./images/repondre.gif" alt="Répondre" title="Répondre à ce topic" /></a>';
      
    //On affiche l'image nouveau topic
    echo'<a href="./poster.php?action=nouveautopic&amp;f='.$data['forum_id'].'">
    <img src="./images/nouveau.gif" alt="Nouveau topic" title="Poster un nouveau topic" /></a>';
    $query->CloseCursor(); 
    //Enfin on commence la boucle !
    
    $query=$db->prepare('SELECT post_id , post_createur , post_texte , post_time ,
    membre_id, membre_pseudo, membre_inscrit, membre_avatar, membre_localisation, membre_post, membre_signature
    FROM forum_post
    LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur
    WHERE topic_id =:topic
    ORDER BY post_id
    LIMIT :premier, :nombre');
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->bindValue(':premier',(int) $premierMessageAafficher,PDO::PARAM_INT);
    $query->bindValue(':nombre',(int) $nombreDeMessagesParPage,PDO::PARAM_INT);
    $query->execute();
      
    //On vérifie que la requête a bien retourné des messages
    if ($query->rowCount()<1)
    {
            echo'<p>Il n y a aucun post sur ce topic, vérifiez l url et reessayez</p>';
    }
    else
    {
            //Si tout roule on affiche notre tableau puis on remplit avec une boucle
            ?>
    		<table>
            <tr>
            <th class="vt_auteur"><strong>Auteurs</strong></th>             
            <th class="vt_mess"><strong>Messages</strong></th>       
            </tr>
            <?php
            while ($data = $query->fetch())
            {
    		
    <?php
    //On commence à afficher le pseudo du créateur du message :
             //On vérifie les droits du membre
             //(partie du code commentée plus tard)
             echo'<tr><td><strong>
             <a href="./voirprofil.php?m='.$data['membre_id'].'&amp;action=consulter">
             '.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</a></strong></td>';
                
             /* Si on est l'auteur du message, on affiche des liens pour
             Modérer celui-ci.
             Les modérateurs pourront aussi le faire, il faudra donc revenir sur
             ce code un peu plus tard ! */    
        
             if ($id == $data['post_createur'])
             {
             echo'<td id=p_'.$data['post_id'].'>Posté à '.date('H\hi \l\e d M y',$data['post_time']).'
             <a href="./poster.php?p='.$data['post_id'].'&amp;action=delete">
             <img src="./images/supprimer.gif" alt="Supprimer"
             title="Supprimer ce message" /></a>   
             <a href="./poster.php?p='.$data['post_id'].'&amp;action=edit">
             <img src="./images/editer.gif" alt="Editer"
             title="Editer ce message" /></a></td></tr>';
             }
             else
             {
             echo'<td>
             Posté à '.date('H\hi \l\e d M y',$data['post_time']).'
             </td></tr>';
             }
            
             //Détails sur le membre qui a posté
             echo'<tr><td>
             <img src="./images/avatars/'.$data['membre_avatar'].'" alt="" />
             <br />Membre inscrit le '.date('d/m/Y',$data['membre_inscrit']).'
             <br />Messages : '.$data['membre_post'].'<br />
             Localisation : '.stripslashes(htmlspecialchars($data['membre_localisation'])).'</td>';
                    
             //Message
             echo'<td>'.code(nl2br(stripslashes(htmlspecialchars($data['post_texte'])))).'
             <br /><hr />'.code(nl2br(stripslashes(htmlspecialchars($data['membre_signature'])))).'</td></tr>';
             } //Fin de la boucle ! \o/
             $query->CloseCursor();
     
             ?>
    </table>
    <?php
            echo '<p>Page : ';
            for ($i = 1 ; $i <= $nombreDePages ; $i++)
            {
                    if ($i == $page) //On affiche pas la page actuelle en lien
                    {
                    echo $i;
                    }
                    else
                    {
                    echo '<a href="voirtopic.php?t='.$topic.'&amp;page='.$i.'">
                    ' . $i . '</a> ';
                    }
            }
            echo'</p>';
            
            //On ajoute 1 au nombre de visites de ce topic
            $query=$db->prepare('UPDATE forum_topic
            SET topic_vu = topic_vu + 1 WHERE topic_id = :topic');
            $query->bindValue(':topic',$topic,PDO::PARAM_INT);
            $query->execute();
            $query->CloseCursor();
     
    } //Fin du if qui vérifiait si le topic contenait au moins un message
    ?>          
    </div>
    </body>
    </html>
    0
    1. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      regarde à la ligne 94, tu ne vois pas un truc qui cloche ? ^^
      0
    2. luluwebmaster Messages postés 430 Statut Membre 5
       
      Ha oui ^^
      C'est bon pour se problème :D
      0
  7. luluwebmaster Messages postés 430 Statut Membre 5
     
    Encore une erreur, mais cette fois quand on veux voir un sujet :
    ( ! ) Fatal error: Call to undefined function code() in C:\wamp\www\test_forum\forum\voirtopic.php on line 131
    Call Stack
    # Time Memory Function Location
    1 0.0040 409296 {main}( ) ..\voirtopic.php:0

    Code du fichier voirtopic.php :

    <?php
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    session_start();
    $titre="Voir un sujet";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    include("includes/bbcode.php"); //On verra plus tard ce qu'est ce fichier
      
    //On récupère la valeur de t
    $topic = (int) $_GET['t'];
      
    //A partir d'ici, on va compter le nombre de messages pour n'afficher que les 15 premiers
    $query=$db->prepare('SELECT topic_titre, topic_post, forum_topic.forum_id, topic_last_post,
    forum_name, auth_view, auth_topic, auth_post 
    FROM forum_topic 
    LEFT JOIN forum_forum ON forum_topic.forum_id = forum_forum.forum_id 
    WHERE topic_id = :topic');
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->execute();
    $data=$query->fetch();
    $forum=$data['forum_id']; 
    $totalDesMessages = $data['topic_post'] + 1;
    $nombreDeMessagesParPage = 15;
    $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
    
    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> 
    <a href="./voirforum.php?f='.$forum.'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
     --> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>';
    echo '<h1>'.stripslashes(htmlspecialchars($data['topic_titre'])).'</h1><br /><br />';
    
    //Nombre de pages
    $page = (isset($_GET['page']))?intval($_GET['page']):1;
     
    //On affiche les pages 1-2-3 etc...
    echo '<p>Page : ';
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
        if ($i == $page) //On affiche pas la page actuelle en lien
        {
        echo $i;
        }
        else
        {
        echo '<a href="voirtopic.php?t='.$topic.'&page='.$i.'">
        ' . $i . '</a> ';
        }
    }
    echo'</p>';
      
    $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
     
      
    //On affiche l'image répondre
    echo'<a href="./poster.php?action=repondre&amp;t='.$topic.'">
    <img src="./images/40790.gif" alt="Répondre" title="Répondre à ce topic" /></a>';
      
    //On affiche l'image nouveau topic
    echo'<a href="./poster.php?action=nouveautopic&amp;f='.$data['forum_id'].'">
    <img src="./images/40789.gif" alt="Nouveau topic" title="Poster un nouveau topic" /></a>';
    $query->CloseCursor(); 
    //Enfin on commence la boucle !
    
    $query=$db->prepare('SELECT post_id , post_createur , post_texte , post_time ,
    membre_id, membre_pseudo, membre_inscrit, membre_avatar, membre_localisation, membre_post, membre_signature
    FROM forum_post
    LEFT JOIN forum_membres ON forum_membres.membre_id = forum_post.post_createur
    WHERE topic_id =:topic
    ORDER BY post_id
    LIMIT :premier, :nombre');
    $query->bindValue(':topic',$topic,PDO::PARAM_INT);
    $query->bindValue(':premier',(int) $premierMessageAafficher,PDO::PARAM_INT);
    $query->bindValue(':nombre',(int) $nombreDeMessagesParPage,PDO::PARAM_INT);
    $query->execute();
      
    //On vérifie que la requête a bien retourné des messages
    if ($query->rowCount()<1)
    {
            echo'<p>Il n y a aucun post sur ce topic, vérifiez l url et reessayez</p>';
    }
    else
    {
            //Si tout roule on affiche notre tableau puis on remplit avec une boucle
            ?>
    		<table>
            <tr>
            <th class="vt_auteur"><strong>Auteurs</strong></th>             
            <th class="vt_mess"><strong>Messages</strong></th>       
            </tr>
            <?php
            while ($data = $query->fetch())
            {
    		
    //On commence à afficher le pseudo du créateur du message :
             //On vérifie les droits du membre
             //(partie du code commentée plus tard)
             echo'<tr><td><strong>
             <a href="./voirprofil.php?m='.$data['membre_id'].'&amp;action=consulter">
             '.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</a></strong></td>';
                
             /* Si on est l'auteur du message, on affiche des liens pour
             Modérer celui-ci.
             Les modérateurs pourront aussi le faire, il faudra donc revenir sur
             ce code un peu plus tard ! */    
        
             if ($id == $data['post_createur'])
             {
             echo'<td id=p_'.$data['post_id'].'>Posté à '.date('H\hi \l\e d M y',$data['post_time']).'
             <a href="./poster.php?p='.$data['post_id'].'&amp;action=delete">
             <img src="./images/supprimer.gif" alt="Supprimer"
             title="Supprimer ce message" /></a>   
             <a href="./poster.php?p='.$data['post_id'].'&amp;action=edit">
             <img src="./images/editer.gif" alt="Editer"
             title="Editer ce message" /></a></td></tr>';
             }
             else
             {
             echo'<td>
             Posté à '.date('H\hi \l\e d M y',$data['post_time']).'
             </td></tr>';
             }
            
             //Détails sur le membre qui a posté
             echo'<tr><td>
             <img src="./images/avatars/'.$data['membre_avatar'].'" alt="" />
             <br />Membre inscrit le '.date('d/m/Y',$data['membre_inscrit']).'
             <br />Messages : '.$data['membre_post'].'<br />
             Localisation : '.stripslashes(htmlspecialchars($data['membre_localisation'])).'</td>';
                    
             //Message
             echo'<td>'.code(nl2br(stripslashes(htmlspecialchars($data['post_texte'])))).'
             <br /><hr />'.code(nl2br(stripslashes(htmlspecialchars($data['membre_signature'])))).'</td></tr>';
             } //Fin de la boucle ! \o/
             $query->CloseCursor();
     
             ?>
    </table>
    <?php
            echo '<p>Page : ';
            for ($i = 1 ; $i <= $nombreDePages ; $i++)
            {
                    if ($i == $page) //On affiche pas la page actuelle en lien
                    {
                    echo $i;
                    }
                    else
                    {
                    echo '<a href="voirtopic.php?t='.$topic.'&amp;page='.$i.'">
                    ' . $i . '</a> ';
                    }
            }
            echo'</p>';
            
            //On ajoute 1 au nombre de visites de ce topic
            $query=$db->prepare('UPDATE forum_topic
            SET topic_vu = topic_vu + 1 WHERE topic_id = :topic');
            $query->bindValue(':topic',$topic,PDO::PARAM_INT);
            $query->execute();
            $query->CloseCursor();
     
    } //Fin du if qui vérifiait si le topic contenait au moins un message
    ?>          
    </div>
    </body>
    </html>

    0
    1. Bionik Messages postés 4232 Date d'inscription   Statut Modérateur Dernière intervention   185
       
      Salut,

      Tu fais appel à une fonction qui n'existe pas. C'est la fonction code() pour être plus précis. Si c'est déjà crée dans un autre fichier, tu l'importe avec un 'include' ou 'require'.
      0
    2. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      à mon avis c'est la fonction du bbcode
      include("includes/bbcode.php");

      mais bon, on n'a aucun moyen de le savoir...
      0
    3. luluwebmaster Messages postés 430 Statut Membre 5
       
      En effet ^^
      C'est bien cela ^^
      Par contre j'ai ce message :

      ( ! ) Fatal error: Call to undefined function code() in C:\wamp\www\test_forum\forum\voirtopic.php on line 130
      Call Stack
      # Time Memory Function Location
      1 0.0048 408576 {main}( ) ..\voirtopic.php:0

      Et je n'est pas le message que j'ai posté sur la page voirtopic.php
      0
    4. luluwebmaster Messages postés 430 Statut Membre 5
       
      Pour être plus précis, je n'est pas les messages qui on était posté, mais j'ai se message d'erreur :
      ( ! ) Fatal error: Call to undefined function code() in C:\wamp\www\test_forum\forum\voirtopic.php on line 130
      Call Stack
      # Time Memory Function Location
      1 0.0048 408576 {main}( ) ..\voirtopic.php:0
      0
  8. luluwebmaster Messages postés 430 Statut Membre 5
     
    J'ai encore un autre problème avec l'administration cette fois.
    Je me suis mis admin sur le compte que j'ai créer, mais il y as un problème,
    quand j'essais d'accéder au panneau d'admin, je ne peux pas, il met un un message d'erreur comme quoi je ne suis pas admin.
    Voici le code du fichier functions.php :
    <?php
    function erreur($err='')
    {
       $mess=($err!='')? $err:'Une erreur inconnue s\'est produite';
       exit('<p>'.$mess.'</p>
       <p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d\'accueil</p></div></body></html>');
    }
    
    function move_avatar($avatar)
    {
        $extension_upload = strtolower(substr(  strrchr($avatar['name'], '.')  ,1));
        $name = time();
        $nomavatar = str_replace(' ','',$name).".".$extension_upload;
        $name = "./images/avatars/".str_replace(' ','',$name).".".$extension_upload;
        move_uploaded_file($avatar['tmp_name'],$name);
        return $nomavatar;
    }
    
    function verif_auth($auth_necessaire)
    {
    $level=(isset($_SESSION['level']))?$_SESSION['level']:1;
    return ($auth_necessaire <= intval($level));
    }
    ?>


    Et le code du fichier admin.php :
    <?php
    error_reporting(E_ERROR | E_WARNING | E_PARSE);
    session_start();
    $titre="Administration";
    $balises = true;
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
     
    // On indique o l'on se trouve
    $cat = (isset($_GET['cat']))?htmlspecialchars($_GET['cat']):'';
     
    echo'<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> -->  <a href="./admin.php">Administration du forum</a>';
    if (!verif_auth(ADMIN)) erreur(ERR_AUTH_ADMIN);
     
    switch($cat) //1er switch
    {
    case "config":
        //ici configuration
        echo'<h1>Configuration du forum</h1>';
        echo '<form method="post" action="adminok.php?cat=config">';
     
        //Le tableau associatif
        $config_name = array(
        "avatar_maxsize" => "Taille maximale de l avatar",
        "avatar_maxh" => "Hauteur maximale de l avatar",
        "avatar_maxl" => "Largeur maximale de l avatar",
        "sign_maxl" => "Taille maximale de la signature",
        "auth_bbcode_sign" => "Autoriser le bbcode dans la signature",
        "pseudo_maxsize" => "Taille maximale du pseudo",
        "pseudo_minsize" => "Taille minimale du pseudo",
        "topic_par_page" => "Nombre de topics par page",
        "post_par_page" => "Nombre de posts par page",
        "forum_titre" => "Titre du forum"
        );
        $query = $db->query('SELECT config_nom, config_valeur FROM forum_config');
         
        while($data=$query->fetch())
        {
               echo '<p><label for='.$data['config_nom'].'>'.$config_name[$data['config_nom']].' </label> :
               <input type="text" id="'.$data['config_nom'].'" value="'.$data['config_valeur'].'" name="'.$data['config_nom'].'"></p>';
        }
        echo '<p><input type="submit" value="Envoyer" /></p></form>';
        $query->CloseCursor();
    break;
      
    case "forum":
    //Ici forum
    $action = htmlspecialchars($_GET['action']); //On récupère la valeur de action
            switch($action) //2eme switch
            {
       case "creer":
            //Création d'un forum
     
            //1er cas : pas de variable c
            if(empty($_GET['c']))
            {
                    echo'<br /><br /><br />Que voulez-vous faire?<br />
                    <a href="./admin.php?cat=forum&action=creer&c=f">Créer un forum</a><br />
                    <a href="./admin.php?cat=forum&action=creer&c=c">Créer une catégorie</a></br>';
            }
     
            //2ème cas : on cherche à créer un forum (c=f)
            elseif($_GET['c'] == "f")
            {
                    $query=$db->query('SELECT cat_id, cat_nom FROM forum_categorie
                    ORDER BY cat_ordre DESC');
                    echo'<h1>Création d un forum</h1>';
                    echo'<form method="post" action="./adminok.php?cat=forum&action=creer&c=f">';
                    echo'<label>Nom :</label><input type="text" id="nom" name="nom" /><br /><br />
                    <label>Description :</label>
                    <textarea cols=40 rows=4 name="desc" id="desc"></textarea>
                    <br /><br />
                    <label>Catégorie : </label><select name="cat">';
                    while($data = $query->fetch())
                    {
                echo'<option value="'.$data['cat_id'].'">'.$data['cat_nom'].'</option>';
                    }
                    echo'</select><br /><br />
                    <input type="submit" value="Envoyer"></form>';
            $query->CloseCursor();
            }       
            //3ème cas : on cherche à créer une catégorie (c=c)
            elseif($_GET['c'] == "c")
            {
                    echo'<h1>Création d une catégorie</h1>';
                    echo'<form method="post" action="./adminok.php?cat=forum&action=creer&c=c">';
                    echo'<label> Indiquez le nom de la catégorie :</label>
                    <input type="text" id="nom" name="nom" /><br /><br />   
                    <input type="submit" value="Envoyer"></form>';
            }
        break;
             
            case "edit":
            //Edition d'un forum
            break;
             
            case "droits":
            //Gestion des droits
            break;
             
            default; //action n'est pas remplie, on affiche le menu
            echo'<h1>Administration des forums</h1>';
            echo'<p>Bonjour, cher administrateur :p, que veux tu faire ?
            <br />
            <a href="./admin.php?cat=forum&amp;action=creer">Créer un forum</a>
            <br />
            <a href="./admin.php?cat=forum&amp;action=edit">Modifier un forum</a>
            <br />
            <a href="./admin.php?cat=forum&amp;action=droits">
            Modifier les droits d un forum</a><br /></p>';
            break;
            }
    break;
      
    case "membres":
    //Ici membres
    $action = htmlspecialchars($_GET['action']); //On récupère la valeur de action
            switch($action) //2eme switch
            {
            case "edit":
            //Edition d'un membre
            break;
             
            case "droits":
            //Droits d'un membre (rang)
            break;
             
            case "ban":
            //Bannissement
            break;
             
            default; //action n'est pas remplie, on affiche le menu 
            echo'<h1>Administration des membres</h1>';
            echo'<p>Salut mon ptit, alors tu veux faire quoi ?<br />
            <a href="./admin.php?cat=membres&amp;action=edit">
            Editer le profil d un membre</a><br />
            <a href="./admin.php?cat=membres&amp;action=droits">
            Modifier les droits d un membre</a><br />
            <a href="./admin.php?cat=membres&amp;action=ban">
            Bannir / Debannir un membre</a><br /></p>';
            break;
            }
    break;
    default; //cat n'est pas remplie, on affiche le menu général
    echo'<h1>Index de l administration</h1>';
    echo'<p>Bienvenue sur la page d administration.<br />
    <a href="./admin.php?cat=config">Configuration du forum</a><br />
    <a href="./admin.php?cat=forum">Administration des forums</a><br />
    <a href="./admin.php?cat=membres">Administration des membres</a><br /></p>';
    break;
    }
    ?>


    Merci d'avance, car la je suis bien embêté ^^
    0
  9. luluwebmaster Messages postés 430 Statut Membre 5
     
    Je remonte ^^
    0