Menu

Variable non defenit

- - Dernière réponse :  arthur - 3 mai 2019 à 12:31
Bonjour,

j'ai mis ce code pour raiter un nouveau topic avec une autorisation

	  //Premier cas : nouveau topic
	  case "nouveautopic":
	  
	  //On passe le message dans une série de fonction
	  $message = $_POST['message'];
	  
	  ///////////////////////////////////////////////////////////le 01/05/2019 : j'affiche un début pour verifier autorisation
	  if (!verif_auth($data['auth_annonce']) && isset($_POST['mess']))
	  {
	  exit('</div></body></html>');
	  }
	  ///////////////////////////////////////////////////////////le 01/05/2019 : j'affiche un fin pour verifier autorisation


	  //Pareil pour le titre
	  $titre = $_POST['titre'];
	  
	  //ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable f
	  
	  $forum = (int) $_GET['f'];
	  $temps = time();
	  
	  if (empty($message) || empty($titre))
	  {
	  echo'<p>Votre message ou votre titre est vide, cliquez <a href="./poster.php?action=nouveautopic&f='.$forum.'">ici</a> pour recommencer</p>';
	  }
	  else //Si jamais le message n'est pas vide
	  {
	  
	  //On entre le topic dans la base de donnée en laissant
	  //le champ topic_last_post à 0
	  
	  $query=$db->prepare('INSERT INTO forum_topic (forum_id, topic_titre, topic_createur, topic_vu, topic_time, topic_genre)
	                       VALUES(:forum, :titre, :id, 1, :temps, :mess)');
      $query->bindValue(':forum', $forum, PDO::PARAM_INT);
	  $query->bindValue(':titre', $titre, PDO::PARAM_STR);
	  $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->bindValue(':temps', $temps, PDO::PARAM_INT);
	  $query->bindValue(':mess', $mess, PDO::PARAM_STR);
	  $query->execute();
	  
	  $nouveautopic = $db->lastInsertId(); //Notre fameuse fonction !
	  $query->CloseCursor();
	  
	  //Puis on entre le message
	  $query=$db->prepare('INSERT INTO forum_post (post_createur, post_texte, post_time, topic_id, post_forum_id)
	                       VALUES (:id, :mess, :temps, :nouveautopic, :forum)');
      $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->bindValue(':mess', $message, PDO::PARAM_STR);
	  $query->bindValue(':temps', $temps,PDO::PARAM_INT);
	  $query->bindValue(':nouveautopic', (int) $nouveautopic, PDO::PARAM_INT);
	  $query->bindValue(':forum', $forum, PDO::PARAM_INT);
	  $query->execute();
	  
	  $nouveaupost = $db->lastInsertId(); //Encore notre fameuse fonction !
	  $query->CloseCursor();
	  
	  //Ici on update comme prévu la valeur de topic_last_post et de topic_first_post
	  $query=$db->prepare('UPDATE forum_topic
	                       SET topic_last_post = :nouveaupost, topic_first_post = :nouveaupost
						   WHERE topic_id = :nouveautopic');
      $query->bindValue(':nouveaupost', (int) $nouveaupost, PDO::PARAM_INT);    
      $query->bindValue(':nouveautopic', (int) $nouveautopic, PDO::PARAM_INT);
      $query->execute();
      $query->CloseCursor();
	  
	  //Enfin on met à jour les tables forum_forum et forum_membres
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post + 1 ,forum_topic = forum_topic + 1, forum_last_post_id = :nouveaupost
	                       WHERE forum_id = :forum');
      $query->bindValue(':nouveaupost', (int) $nouveaupost, PDO::PARAM_INT);    
	  $query->bindValue(':forum', (int) $forum, PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  $query=$db->prepare('UPDATE forum_membres SET membre_post = membre_post + 1 WHERE membre_id = :id');
	  $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Et un petit message
	  echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />Cliquez <a href="./voirtopic.php?t='.$nouveautopic.'">ici</a> pour le voir</p>';
	  }
	  break; //Houra !


ligne 8 et 40

il e dit

Notice: Undefined variable: data in /var/www/legtux.org/users/site/www/V1/postok.php on line 44

Notice: Undefined variable: mess in /var/www/legtux.org/users/site/www/V1/postok.php on line 75


merci
Configuration: Windows / Chrome 73.0.3683.103
Afficher la suite 

Votre réponse

1 réponse

Messages postés
25575
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
1620
0
Merci
Bonjour,

Comme pour tes 15 questions précédentes pour ce même type de souci ............
As tu définis la variable $data dans ton code ( avant son utilisation dans le if ) ??
Sinon... normal que ça t'affiche cette erreur...




jordane45
Messages postés
25575
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
1620 -
Et pour le message concernant la variable $mess ... ne serait-ce pas plutot $message qu'il faut utiliser ?
si quelqu'un pouvait m'expiquer la page constant, a mon avis ca vien de là le ereurs autorisation

<?php
define('VISITEUR',1);
define('INSCRIT',2);
define('MODO',3);
define('ADMIN',4);
define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
define('ERR_AUTH_ADMIN', 'Vous n\'êtes pas un Admin');
define('ERR_AUTH_MOVE', 'Vous n\'êtes pas un modo');


?>


là je comprendsle principe ce n'est pas la question

qd je mets a la base sql membre rang 3 pour etre modo il me dit vous n'etes pas un modo
si je met 4 pour admin, il me dit que je ne suis pas admin

malgrez que je change le numéro directement a la base sql afin de savoir si ca fonctionne


je penses que ca vient de là

et pour l'autre question mess je vien de modiffier message a ma requette valu
il a disparut cette erreur

pour l'autorisation non

merci
jordane45
Messages postés
25575
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
1620 -
Non....
Ca vient du fait que tes variables n'existent pas au moment où tu y fais appel......
Pourquoi elles n'existent pas... ça vient peut-être du fait que les requêtes ne retournent rien....
Pour te répondre précisément, il faudrait que tu nous montres TOUTES les lignes de codes qui se trouvent avant l'utilisation de ta variable $data
voilà la page entier postok j'ai mis des ccomentaire de chaque étape

<?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="Poster";
	  $balises = true;
	  include("includes/identifiants.php");
	  include("includes/debut.php");
	  include("includes/menu.php");
	  
	  //On récupère la valeur de la variable action
	  $action = (isset($_GET['action']))?htmlspecialchars($_GET['action']):'';
	  
	  // Si le membre n'est pas connecté, il est arrivé ici par erreur
	  if ($id==0) erreur(ERR_IS_CO);

	  /////////////on va afficher le swith pour le traitement/////////////////////////////
	  ///qui se compose en 2 partie pour le moment
	  // première partie : nouveau topic
	  // deuxième partie : on repond un topic
	  // troixième étape repondre mp
	  // quatrième étape  nouveau mp
	  // cinnquième étape supprimer mp
	  // sixième étape editer topic
	  // septième étape delete
	  // huitième étape delete topic
	  // neuvième étape verouiler topic
	  // dixième étape deverouiler topic
	  // onzième étape deplacer topic

	  
	  switch($action)
	  {
	  
	  ////////////////////////////////////////////////la premier étape/////////////////////////////////////////////////////////////////////////
	  //Premier cas : nouveau topic
	  case "nouveautopic":
	  
	  //On passe le message dans une série de fonction
	  $message = $_POST['message'];
	  
	  ///////////////////////////////////////////////////////////le 01/05/2019 : j'affiche un début pour verifier autorisation
	  if (!verif_auth($data['auth_annonce']) && isset($_POST['message']))
	  {
	  exit('</div></body></html>');
	  }
	  ///////////////////////////////////////////////////////////le 01/05/2019 : j'affiche un fin pour verifier autorisation


	  //Pareil pour le titre
	  $titre = $_POST['titre'];
	  
	  //ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable f
	  
	  $forum = (int) $_GET['f'];
	  $temps = time();
	  
	  if (empty($message) || empty($titre))
	  {
	  echo'<p>Votre message ou votre titre est vide, cliquez <a href="./poster.php?action=nouveautopic&f='.$forum.'">ici</a> pour recommencer</p>';
	  }
	  else //Si jamais le message n'est pas vide
	  {
	  
	  //On entre le topic dans la base de donnée en laissant
	  //le champ topic_last_post à 0
	  
	  $query=$db->prepare('INSERT INTO forum_topic (forum_id, topic_titre, topic_createur, topic_vu, topic_time, topic_genre)
	                       VALUES(:forum, :titre, :id, 1, :temps, :message)');
      $query->bindValue(':forum', $forum, PDO::PARAM_INT);
	  $query->bindValue(':titre', $titre, PDO::PARAM_STR);
	  $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->bindValue(':temps', $temps, PDO::PARAM_INT);
	  $query->bindValue(':message', $message, PDO::PARAM_STR);
	  $query->execute();
	  
	  $nouveautopic = $db->lastInsertId(); //Notre fameuse fonction !
	  $query->CloseCursor();
	  
	  //Puis on entre le message
	  $query=$db->prepare('INSERT INTO forum_post (post_createur, post_texte, post_time, topic_id, post_forum_id)
	                       VALUES (:id, :mess, :temps, :nouveautopic, :forum)');
      $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->bindValue(':mess', $message, PDO::PARAM_STR);
	  $query->bindValue(':temps', $temps,PDO::PARAM_INT);
	  $query->bindValue(':nouveautopic', (int) $nouveautopic, PDO::PARAM_INT);
	  $query->bindValue(':forum', $forum, PDO::PARAM_INT);
	  $query->execute();
	  
	  $nouveaupost = $db->lastInsertId(); //Encore notre fameuse fonction !
	  $query->CloseCursor();
	  
	  //Ici on update comme prévu la valeur de topic_last_post et de topic_first_post
	  $query=$db->prepare('UPDATE forum_topic
	                       SET topic_last_post = :nouveaupost, topic_first_post = :nouveaupost
						   WHERE topic_id = :nouveautopic');
      $query->bindValue(':nouveaupost', (int) $nouveaupost, PDO::PARAM_INT);    
      $query->bindValue(':nouveautopic', (int) $nouveautopic, PDO::PARAM_INT);
      $query->execute();
      $query->CloseCursor();
	  
	  //Enfin on met à jour les tables forum_forum et forum_membres
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post + 1 ,forum_topic = forum_topic + 1, forum_last_post_id = :nouveaupost
	                       WHERE forum_id = :forum');
      $query->bindValue(':nouveaupost', (int) $nouveaupost, PDO::PARAM_INT);    
	  $query->bindValue(':forum', (int) $forum, PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  $query=$db->prepare('UPDATE forum_membres SET membre_post = membre_post + 1 WHERE membre_id = :id');
	  $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Et un petit message
	  echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />Cliquez <a href="./voirtopic.php?t='.$nouveautopic.'">ici</a> pour le voir</p>';
	  }
	  break; //Houra !


	  ////////////////////////////////////////////////la deucième étape/////////////////////////////////////////////////////////////////////////
	  
	  //Deuxième cas : répondre
	  case "repondre":
	  $message = $_POST['message'];
	  
	  //ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable t
	  $topic = (int) $_GET['t'];
	  
	  /////////////////////////////////////////01/05/2019 qui va agir ce veroulage
	  
	  $query=$db->prepare('SELECT topic_locked FROM forum_topic WHERE topic_id = :topic');
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  if ($data['topic_locked'] != 0)
	  {
	  erreur(ERR_TOPIC_VERR); //A vous d'afficher un message du genre : le topic est verrouillé qu'est ce que tu fous là !?
	  }
	  $query->CloseCursor();

	  $temps = time();
	  
	  if (empty($message))
	  {
	  echo'<p>Votre message est vide, cliquez <a href="./poster.php?action=repondre&t='.$topic.'">ici</a> pour recommencer</p>';
	  }
	  
	  else //Sinon, si le message n'est pas vide
	  {
	  
	  //On récupère l'id du forum
	  $query=$db->prepare('SELECT forum_id, topic_post FROM forum_topic WHERE topic_id = :topic');
	  $query->bindValue(':topic', $topic, PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  $forum = $data['forum_id'];
	  
	  //Puis on entre le message
	  $query=$db->prepare('INSERT INTO forum_post (post_createur, post_texte, post_time, topic_id, post_forum_id)
	                       VALUES(:id,:mess,:temps,:topic,:forum)');
	  $query->bindValue(':id', $id, PDO::PARAM_INT);   
	  $query->bindValue(':mess', $message, PDO::PARAM_STR);
	  $query->bindValue(':temps', $temps, PDO::PARAM_INT);
	  $query->bindValue(':topic', $topic, PDO::PARAM_INT);
	  $query->bindValue(':forum', $forum, PDO::PARAM_INT);
	  $query->execute();
	  
	  $nouveaupost = $db->lastInsertId();
	  $query->CloseCursor();
	  
	  //On change un peu la table forum_topic
	  $query=$db->prepare('UPDATE forum_topic SET topic_post = topic_post + 1, topic_last_post = :nouveaupost WHERE topic_id =:topic');
	  $query->bindValue(':nouveaupost', (int) $nouveaupost, PDO::PARAM_INT);
	  $query->bindValue(':topic', (int) $topic, PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Puis même combat sur les 2 autres tables
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post + 1 , forum_last_post_id = :nouveaupost WHERE forum_id = :forum');
	  $query->bindValue(':nouveaupost', (int) $nouveaupost, PDO::PARAM_INT);
	  $query->bindValue(':forum', (int) $forum, PDO::PARAM_INT);
	  $query->execute();
	  
	  $query->CloseCursor();
	  
	  $query=$db->prepare('UPDATE forum_membres SET membre_post = membre_post + 1 WHERE membre_id = :id');
	  $query->bindValue(':id', $id, PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Et un petit message
	  $nombreDeMessagesParPage = 15;
	  $nbr_post = $data['topic_post']+1;
	  $page = ceil($nbr_post / $nombreDeMessagesParPage);
	  echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />Cliquez <a href="./voirtopic.php?t='.$topic.'&page='.$page.'#p_'.$nouveaupost.'">ici</a> pour le voir</p>';
	  }
	  //Fin du else
	  break;	
	  
	  
	  
	  ////////////////////////////////////////////////la troixieme étape/////////////////////////////////////////////////////////////////////////
	  case "repondremp": //Si on veut répondre
	  
	  //On récupère le titre et le message
	  $message = $_POST['message'];
	  $titre = $_POST['titre'];
	  $temps = time();
	  
	  //On récupère la valeur de l'id du destinataire
	  $dest = (int) $_GET['dest'];
	  
	  //Enfin on peut envoyer le message
	  
	  $query=$db->prepare('INSERT INTO forum_mp (mp_expediteur, mp_receveur, mp_titre, mp_text, mp_time, mp_lu)
	                       VALUES(:id, :dest, :titre, :txt, :tps, "0")'); 
	  $query->bindValue(':id',$id,PDO::PARAM_INT);   
	  $query->bindValue(':dest',$dest,PDO::PARAM_INT);
	  $query->bindValue(':titre',$titre,PDO::PARAM_STR);
	  $query->bindValue(':txt',$message,PDO::PARAM_STR);
	  $query->bindValue(':tps',$temps,PDO::PARAM_STR);
	  $query->execute();
	  $query->CloseCursor();
	  
	  echo'<p>Votre message a bien été envoyé!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du  forum<br /><br />Cliquez <a href="./messagesprives.php">ici</a> pour retourner à la messagerie</p>';
	  
	  
	  break;	  
	  
	  ////////////////////////////////////////////////la quatrème étape/////////////////////////////////////////////////////////////////////////
	  
	  case "nouveaump": //On envoie un nouveau mp
	  
	  //On récupère le titre et le message
	  $message = $_POST['message'];
	  $titre = $_POST['titre'];
	  $temps = time();
	  $dest = $_POST['to'];
	  
	  //On récupère la valeur de l'id du destinataire
	  //Il faut déja vérifier le nom
	  
	  $query=$db->prepare('SELECT membre_id FROM forum_membres
	                       WHERE LOWER(membre_pseudo) = :dest');
      $query->bindValue(':dest',$dest,PDO::PARAM_STR);
	  $query->execute();
	  if($data = $query->fetch())
	  {
	  
	  $query=$db->prepare('INSERT INTO forum_mp (mp_expediteur, mp_receveur, mp_titre, mp_text, mp_time, mp_lu)
	                        VALUES(:id, :dest, :titre, :txt, :tps, :lu)');
	  $query->bindValue(':id',$id,PDO::PARAM_INT);   
	  $query->bindValue(':dest',(int) $data['membre_id'],PDO::PARAM_INT);
	  $query->bindValue(':titre',$titre,PDO::PARAM_STR);
	  $query->bindValue(':txt',$message,PDO::PARAM_STR);   
	  $query->bindValue(':tps',$temps,PDO::PARAM_INT);
	  $query->bindValue(':lu','0',PDO::PARAM_STR);
	  $query->execute();
	  $query->CloseCursor();
	  
	  echo'<p>Votre message a bien été envoyé!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br /><br />Cliquez <a href="./messagesprives.php">ici</a> pour retourner à la messagerie</p>';
	  }
	  //Sinon l'utilisateur n'existe pas !
	  else
	  {
      echo'<p>Désolé ce membre n existe pas, veuillez vérifier et réessayez à nouveau.</p>';
	  }
	  break;

	  ////////////////////////////////////////////////la cinquième étape/////////////////////////////////////////////////////////////////////////
	  case "supprimer":
	  
	  //On récupère la valeur de l'id
	  $id_mess = (int) $_GET['id'];
	  
	  //Il faut vérifier que le membre est bien celui qui a reçu le message
	  
	  $query=$db->prepare('SELECT mp_receveur
	                       FROM forum_mp WHERE mp_id = :id');
      $query->bindValue(':id',$id_mess,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  
	  //Sinon la sanction est terrible :p
	  if ($id != $data['mp_receveur']) erreur(ERR_WRONG_USER);
	  $query->CloseCursor();
	  
	  
	  //2 cas pour cette partie : on est sûr de supprimer ou alors on ne l'est pas
	  $sur = (int) $_GET['sur'];
	  
	  //Pas encore certain
	  
	  if ($sur == 0)
	  {
	  echo'<p>Etes-vous certain de vouloir supprimer ce message ?<br /><a href="./messagesprives.php?action=supprimer&id='.$id_mess.'&sur=1">Oui</a> - <a href="./messagesprives.php">Non</a></p>';
	  }
	  //Certain
	  
	  else
	  {
	  $query=$db->prepare('DELETE from forum_mp WHERE mp_id = :id');
	  $query->bindValue(':id',$id_mess,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  echo'<p>Le message a bien été supprimé.<br />Cliquez <a href="./messagesprives.php">ici</a> pour revenir à la boite de messagerie.</p>';
	  }
	  
	  break;
	  
	  ////////////////////////////////////////////////la sixième étape/////////////////////////////////////////////////////////////////////////
	  
	  case "edit": //Si on veut éditer le post
	  //On récupère la valeur de p
	  
	  $post = (int) $_GET['p'];
	  
	  //On récupère le message
	  $message = $_POST['message'];
	  
	  //Ensuite on vérifie que le membre a le droit d'être ici (soit le créateur soit un modo/admin)
	  $query=$db->prepare('SELECT post_createur, post_texte, post_time, topic_id, auth_modo
	                       FROM forum_post
						   LEFT JOIN forum_forum ON forum_post.post_forum_id = forum_forum.forum_id
						   WHERE post_id=:post');
	  $query->bindValue(':post',$post,PDO::PARAM_INT);
	  $query->execute();
	  $data1 = $query->fetch();
	  $topic = $data1['topic_id'];
	  
	  //On récupère la place du message dans le topic (pour le lien)
	  $query = $db->prepare('SELECT COUNT(*) AS nbr FROM forum_post 
	                         WHERE topic_id = :topic AND post_time < '.$data1['post_time']);
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data2=$query->fetch();
	  
	  if (!verif_auth($data1['auth_modo'])&& $data1['post_createur'] != $id)
	  {
	  // Si cette condition n'est pas remplie ça va barder :o
	  erreur(ERR_AUTH_EDIT);
	  }
	  else //Sinon ça roule et on continue
	  {
	  $query=$db->prepare('UPDATE forum_post SET post_texte =  :message WHERE post_id = :post');
	  $query->bindValue(':message',$message,PDO::PARAM_STR);
	  $query->bindValue(':post',$post,PDO::PARAM_INT);
	  $query->execute();
	  $nombreDeMessagesParPage = 15;
	  $nbr_post = $data2['nbr']+1;
	  $page = ceil($nbr_post / $nombreDeMessagesParPage);
	  echo'<p>Votre message a bien été édité!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br />Cliquez <a href="./voirtopic.php?t='.$topic.'&page='.$page.'#p_'.$post.'">ici</a> pour le voir</p>';
	  $query->CloseCursor();
	  }
	  break;	  
	  
	  ////////////////////////////////////////////////la septième étape/////////////////////////////////////////////////////////////////////////
	  
	  case "delete": //Si on veut supprimer le post
	  
	  //On récupère la valeur de p
	  $post = (int) $_GET['p'];
	  $query=$db->prepare('SELECT post_createur, post_texte, forum_id, topic_id, auth_modo
	                       FROM forum_post
						   LEFT JOIN forum_forum ON forum_post.post_forum_id = forum_forum.forum_id
						   WHERE post_id=:post');
	  $query->bindValue(':post',$post,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  $topic = $data['topic_id'];
	  $forum = $data['forum_id'];
	  $poster = $data['post_createur'];
	  
	  //Ensuite on vérifie que le membre a le droit d'être ici 
	  //(soit le créateur soit un modo/admin)
	  if (!verif_auth($data['auth_modo']) && $poster != $id)
	  {
	  // Si cette condition n'est pas remplie ça va barder :o
	  erreur(ERR_AUTH_DELETE); 
	  }
	  
	  else //Sinon ça roule et on continue
	  {
	  
	  //Ici on vérifie plusieurs choses :
	  //est-ce un premier post ? Dernier post ou post classique ?
	  
	  $query = $db->prepare('SELECT topic_first_post, topic_last_post FROM forum_topic
	                         WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data_post=$query->fetch();
	  
	  //On distingue maintenant les cas
	  if ($data_post['topic_first_post']==$post) //Si le message est le premier
	  {
	  //Les autorisations ont changé !
	  //Normal, seul un modo peut décider de supprimer tout un topic
	  if (!verif_auth($data['auth_modo']))
	  {
	  erreur('ERR_AUTH_DELETE_TOPIC');
	  }
	  
	  //Il faut s'assurer que ce n'est pas une erreur
	  echo'<p>Vous avez choisi de supprimer un post. Cependant ce post est le premier du topic. Voulez vous supprimer le topic ? <br /><a href="./postok.php?action=delete_topic&t='.$topic.'">oui</a> - <a href="./voirtopic.php?t='.$topic.'">non</a></p>';
	  $query->CloseCursor();
	  }
	  elseif ($data_post['topic_last_post']==$post)  //Si le message est le dernier
	  {
	  //On supprime le post
	  $query=$db->prepare('DELETE FROM forum_post WHERE post_id = :post');
	  $query->bindValue(':post',$post,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On modifie la valeur de topic_last_post pour cela on
	  //récupère l'id du plus récent message de ce topic
	  $query=$db->prepare('SELECT post_id FROM forum_post WHERE topic_id = :topic 
	                       ORDER BY post_id DESC LIMIT 0,1');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  $last_post_topic=$data['post_id'];
	  $query->CloseCursor();
	  
	  //On fait de même pour forum_last_post_id
	  $query=$db->prepare('SELECT post_id FROM forum_post WHERE post_forum_id = :forum
	                       ORDER BY post_id DESC LIMIT 0,1');
      $query->bindValue(':forum',$forum,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  $last_post_forum=$data['post_id'];
	  $query->CloseCursor();
	  
	  //On met à jour la valeur de topic_last_post
	  $query=$db->prepare('UPDATE forum_topic SET topic_last_post = :last
	                       WHERE topic_last_post = :post');
      $query->bindValue(':last',$last_post_topic,PDO::PARAM_INT);
	  $query->bindValue(':post',$post,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On enlève 1 au nombre de messages du forum et on met à
	  //jour forum_last_post
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post - 1, forum_last_post_id = :last
	                       WHERE forum_id = :forum');
	  $query->bindValue(':last',$last_post_forum,PDO::PARAM_INT);
	  $query->bindValue(':forum',$forum,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On enlève 1 au nombre de messages du topic
	  $query=$db->prepare('UPDATE forum_topic SET  topic_post = topic_post - 1
	                       WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor(); 
	  
	  //On enlève 1 au nombre de messages du membre
	  $query=$db->prepare('UPDATE forum_membres SET  membre_post = membre_post - 1
	                       WHERE membre_id = :id');
	  $query->bindValue(':id',$poster,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Enfin le message
	  echo'<p>Le message a bien été supprimé !<br />Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
	  }
	  else // Si c'est un post classique
	  {
	  //On supprime le post
	  $query=$db->prepare('DELETE FROM forum_post WHERE post_id = :post');
	  $query->bindValue(':post',$post,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On enlève 1 au nombre de messages du forum
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post - 1  WHERE forum_id = :forum');
	  $query->bindValue(':forum',$forum,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On enlève 1 au nombre de messages du topic
	  $query=$db->prepare('UPDATE forum_topic SET  topic_post = topic_post - 1
	                       WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On enlève 1 au nombre de messages du membre
	  $query=$db->prepare('UPDATE forum_membres SET  membre_post = membre_post - 1
	                       WHERE membre_id = :id');
      $query->bindValue(':id',$data['post_createur'],PDO::PARAM_INT);
	  $query->execute();
      $query->CloseCursor();
	  
	  //Enfin le message
	  echo'<p>Le message a bien été supprimé !<br />Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
	  }
	  } //Fin du else
	  break;	  
	  
	  ////////////////////////////////////////////////la huitème étape/////////////////////////////////////////////////////////////////////////
	  
	  case "delete_topic":
      $topic = (int) $_GET['t'];
      $query=$db->prepare('SELECT forum_topic.forum_id, auth_modo
                           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'];
 
      //Ensuite on vérifie que le membre a le droit d'être ici 
	  //c'est-à-dire si c'est un modo / admin
	  
	  if (!verif_auth($data['auth_modo']))
	  {
	  erreur('ERR_AUTH_DELETE_TOPIC');
	  }
	  else //Sinon ça roule et on continue
	  {
	  $query->CloseCursor();
	
      //On compte le nombre de post du topic
	  $query=$db->prepare('SELECT topic_post FROM forum_topic WHERE topic_id = :topic');
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  $nombrepost = $data['topic_post'] + 1;
	  $query->CloseCursor();
	  
	  //On supprime le topic
	  $query=$db->prepare('DELETE FROM forum_topic
	                       WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On enlève le nombre de post posté par chaque membre dans le topic
	  $query=$db->prepare('SELECT post_createur, COUNT(*) AS nombre_mess FROM forum_post
	                       WHERE topic_id = :topic GROUP BY post_createur');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  
	  while($data = $query->fetch())
	  {
	  $query=$db->prepare('UPDATE forum_membres
	                       SET membre_post = membre_post - :mess
		                   WHERE membre_id = :id');
      $query->bindValue(':mess',$data['nombre_mess'],PDO::PARAM_INT);
	  $query->bindValue(':id',$data['post_createur'],PDO::PARAM_INT);
	  $query->execute();
	  }
	  
	  ///////////////////////////////////////////01/05/209 là j'ajoute une requette
	  
	  $query = $db->prepare('SELECT topic_locked FROM forum_topic WHERE topic_id = :topic');
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  
	  if ($data['topic_locked'] == 1) // Topic verrouillé !
	  {
	  echo'<a href="./postok.php?action=unlock&t='.$topic.'"><img src="./images/unlock.gif" alt="deverrouiller" title="Déverrouiller ce sujet" /></a>';
	  }
	  else //Sinon le topic est déverrouillé !
	  {
	  echo'<a href="./postok.php?action=lock&t='.$topic.'"><img src="./images/lock.gif" alt="verrouiller" title="Verrouiller ce sujet" /></a>';
	  }
	  
	  $query->CloseCursor();
	  
	  //Et on supprime les posts !
	  $query=$db->prepare('DELETE FROM forum_post WHERE topic_id = :topic');
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Dernière chose, on récupère le dernier post du forum
	  $query=$db->prepare('SELECT post_id FROM forum_post
	                       WHERE post_forum_id = :forum ORDER BY post_id DESC LIMIT 0,1');
      $query->bindValue(':forum',$forum,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  
	  //Ensuite on modifie certaines valeurs :
	  $query=$db->prepare('UPDATE forum_forum
	                       SET forum_topic = forum_topic - 1, forum_post = forum_post - :nbr, forum_last_post_id = :id
						   WHERE forum_id = :forum');
      $query->bindValue(':nbr',$nombrepost,PDO::PARAM_INT);
	  $query->bindValue(':id',$data['post_id'],PDO::PARAM_INT);
	  $query->bindValue(':forum',$forum,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Enfin le message
	  echo'<p>Le topic a bien été supprimé !<br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
	  } //Fin du else
	  break;

	  ////////////////////////////////////////////////la neuvième étape/////////////////////////////////////////////////////////////////////////
	  
	  case "lock": //Si on veut verrouiller le topic
	  //On récupère la valeur de t
	  
	  $topic = (int) $_GET['t'];
	  $query = $db->prepare('SELECT forum_topic.forum_id, auth_modo FROM forum_topic
	                         LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
							 WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  
	  //Ensuite on vérifie que le membre a le droit d'être ici
	  if (!verif_auth($data['auth_modo']))
	  {
	  // Si cette condition n'est pas remplie ça va barder :o
	  erreur(ERR_AUTH_VERR);
	  }
	  else //Sinon ça roule et on continue
	  {
	  //On met à jour la valeur de topic_locked
	  $query->CloseCursor();
	  $query=$db->prepare('UPDATE forum_topic SET topic_locked = :lock WHERE topic_id = :topic');
	  $query->bindValue(':lock',1,PDO::PARAM_STR);
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  echo'<p>Le topic a bien été verrouillé ! <br />Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
	  }
	  break;
	  
	  ////////////////////////////////////////////////la dixième étape/////////////////////////////////////////////////////////////////////////
	  
	  case "unlock": //Si on veut déverrouiller le topic
	  //On récupère la valeur de t
	  $topic = (int) $_GET['t'];
	  
	  $query = $db->prepare('SELECT forum_topic.forum_id, auth_modo FROM forum_topic
	                         LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
							 WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  
	  //Ensuite on vérifie que le membre a le droit d'être ici
	  
	  if (!verif_auth($data['auth_modo']))
	  {
	  // Si cette condition n'est pas remplie ça va barder :o
	  erreur(ERR_AUTH_VERR);
	  }
	  else //Sinon ça roule et on continue
	  {
	  //On met à jour la valeur de topic_locked
	  $query->CloseCursor();
	  $query=$db->prepare('UPDATE forum_topic SET topic_locked = :lock WHERE topic_id = :topic');
	  $query->bindValue(':lock',0,PDO::PARAM_STR);
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  echo'<p>Le topic a bien été déverrouillé !<br />Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour retourner au topic<br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
	  }
	  break;

	  ////////////////////////////////////////////////la onzième étape/////////////////////////////////////////////////////////////////////////
	  
	  case "deplacer":
	  
	  $topic = (int) $_GET['t'];
	  $query= $db->prepare('SELECT forum_topic.forum_id, auth_modo
	                        FROM forum_topic
							LEFT JOIN forum_forum
							ON forum_forum.forum_id = forum_topic.forum_id
							WHERE topic_id =:topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  
	  if (!verif_auth($data['auth_modo']))
	  {
	  // Si cette condition n'est pas remplie ça va barder :o
	  erreur(ERR_AUTH_MOVE);
	  }
	  else //Sinon ça roule et on continue
	  {
	  $query->CloseCursor();
	  $destination = (int) $_POST['dest'];
	  $origine = (int) $_POST['from'];
	  
	  //On déplace le topic
	  $query=$db->prepare('UPDATE forum_topic SET forum_id = :dest WHERE topic_id = :topic');
	  $query->bindValue(':dest',$destination,PDO::PARAM_INT);
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On déplace les posts
	  $query=$db->prepare('UPDATE forum_post SET post_forum_id = :dest
	                       WHERE topic_id = :topic');
      $query->bindValue(':dest',$destination,PDO::PARAM_INT);
	  $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //On s'occupe d'ajouter / enlever les nombres de post / topic aux
	  //forum d'origine et de destination
	  //Pour cela on compte le nombre de post déplacé
	  $query=$db->prepare('SELECT COUNT(*) AS nombre_post
	                       FROM forum_post WHERE topic_id = :topic');
      $query->bindValue(':topic',$topic,PDO::PARAM_INT);
	  $query->execute();
	  $data = $query->fetch();
	  $nombrepost = $data['nombre_post'];
	  $query->CloseCursor();
	  
	  //Il faut également vérifier qu'on a pas déplacé un post qui été
	  //l'ancien premier post du forum (champ forum_last_post_id)
	  $query=$db->prepare('SELECT post_id FROM forum_post WHERE post_forum_id = :ori
	                       ORDER BY post_id DESC LIMIT 0,1');
      $query->bindValue(':ori',$origine,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  $last_post=$data['post_id'];
	  $query->CloseCursor();
	  
	  //Puis on met à jour le forum d'origine
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post - :nbr, forum_topic = forum_topic - 1,
	                       forum_last_post_id = :id
						   WHERE forum_id = :ori');
      $query->bindValue(':nbr',$nombrepost,PDO::PARAM_INT);
	  $query->bindValue(':ori',$origine,PDO::PARAM_INT);
	  $query->bindValue(':id',$last_post,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //Avant de mettre à jour le forum de destination il faut
	  //vérifier la valeur de forum_last_post_id
	  $query=$db->prepare('SELECT post_id FROM forum_post WHERE post_forum_id = :dest
	                       ORDER BY post_id DESC LIMIT 0,1');
	  $query->bindValue(':dest',$destination,PDO::PARAM_INT);
	  $query->execute();
	  $data=$query->fetch();
	  $last_post=$data['post_id'];
	  $query->CloseCursor();
	  
	  //Et on met à jour enfin !
	  $query=$db->prepare('UPDATE forum_forum SET forum_post = forum_post + :nbr,
	                       forum_topic = forum_topic + 1,
						   forum_last_post_id = :last
						   WHERE forum_id = :forum');
      $query->bindValue(':nbr',$nombrepost,PDO::PARAM_INT);
	  $query->bindValue(':last',$last_post,PDO::PARAM_INT);
	  $query->bindValue(':forum',$destination,PDO::PARAM_INT);
	  $query->execute();
	  $query->CloseCursor();
	  
	  //C'est gagné ! On affiche le message
	  echo'<p>Le topic a bien été déplacé <br />Cliquez <a href="./voirtopic.php?t='.$topic.'">ici</a> pour revenir au topic<br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum</p>';
	  }
	  break;

	  //Si rien n'est demandé ou s'il y a une erreur dans l'url 
	  //On affiche la boite de mp.
	  default;
	  
	  echo'<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> <a href="./messagesprives.php">Messagerie privée</a>';
	  echo '<h1>Messagerie Privée</h1><br /><br />';
	  
	  $query=$db->prepare('SELECT mp_lu, mp_id, mp_expediteur, mp_titre, mp_time, membre_id, membre_pseudo
	                       FROM forum_mp
						   LEFT JOIN forum_membres ON forum_mp.mp_expediteur = forum_membres.membre_id
						   WHERE mp_receveur = :id ORDER BY mp_id DESC');
      $query->bindValue(':id',$id,PDO::PARAM_INT);
	  $query->execute();
	  echo'<p><a href="./messagesprives.php?action=nouveau"><img src="./images/nouveau.gif" alt="Nouveau" title="Nouveau message" /></a></p>';
	  
	  if ($query->rowCount()>0)
	  {
	  ?>
      
	  <table>
	  <tr>
	  <th></th>
	  <th class="mp_titre"><strong>Titre</strong></th>
	  <th class="mp_expediteur"><strong>Expéditeur</strong></th>
	  <th class="mp_time"><strong>Date</strong></th>
	  <th><strong>Action</strong></th>
	  </tr>
	  
	  <?php
	  
	  //On boucle et on remplit le tableau
	  
	  while ($data = $query->fetch())
	  {
	  
	  echo'<tr>';
	  //Mp jamais lu, on affiche l'icone en question
	  if($data['mp_lu'] == 0)
	  {
	  echo'<td><img src="./images/message_non_lu.gif" alt="Non lu" /></td>';
	  }
	  else //sinon une autre icone
	  {
	  echo'<td><img src="./images/message.gif" alt="Déja lu" /></td>';
	  }
	  echo'<td id="mp_titre"><a href="./messagesprives.php?action=consulter&id='.$data['mp_id'].'">'.stripslashes(htmlspecialchars($data['mp_titre'])).'</a></td>
	       <td id="mp_expediteur"><a href="./voirprofil.php?action=consulter&m='.$data['membre_id'].'">'.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</a></td><td id="mp_time">'.date('H\hi \l\e d M Y',$data['mp_time']).'</td>
		   <td><a href="./messagesprives.php?action=supprimer&id='.$data['mp_id'].'&sur=0">supprimer</a></td></tr>';
	  } //Fin de la boucle
	  $query->CloseCursor();
	  
	  echo '</table>';
	  
	  } //Fin du if
	  
	  else
	  {
	  echo'<p>Vous n avez aucun message privé pour l instant, cliquez<a href="./index.php">ici</a> pour revenir à la page d index</p>';
	  }
	  } //Fin du switch

?>
</div>
</body>
</html>


et apres oil faudra qu'on m'explique la page constant pour admin etc....

car je met en admin et il me dit vous n'etes ps pas admin
Commenter la réponse de jordane45