Poster.php
- <?php
- session_start();
- $titre="Poster";
- $balises = true;
- include("includes/identifiants.php");
- include("includes/debut.php");
- include("includes/menu.php");
- include("includes/auth-data_bd.php");
- ?>
- <?php
- //Qu'est ce qu'on veut faire ? poster, répondre ou éditer ?
- $action = (isset($_GET['action']))?htmlspecialchars($_GET['action']):'';
- connexion_bd();
-
- //Il faut être connecté pour poster !
- //on va chercher tout ce qui correspond à l'utilisateur
- $affiche = mysql_query("SELECT * FROM LOGIN WHERE pseudo='".mysql_real_escape_string(stripcslashes($_SESSION['pseudo']))."' AND pass='".mysql_real_escape_string($_SESSION['pass'])."'");
- $result = mysql_fetch_assoc($affiche);
- //si le statut ne retourne pas 1,2 ou 3, ce n'est pas un membre..on éjecte l'utilisateur
- if(mysql_num_rows($affiche) == 0)
- {
- echo 'Il faut être connecté pour poster.<script type="text/javascript"> window.setTimeout("location=(\'index.php?dec=close\');",3000) </script>'; return false;
- }
- close_bd();
-
- //Si on veut poster un nouveau topic, la variable f se trouve dans l'url,
- //On récupère certaines valeurs
- if (isset($_GET['f']))
- {
- $forum = (int) $_GET['f'];
- $query= $db->prepare('SELECT forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
- FROM forum_forum WHERE forum_id =:forum');
- $query->bindValue(':forum',$forum,PDO::PARAM_INT);
- $query->execute();
- $data=$query->fetch();
- echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> -->
- <a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
- --> Nouveau topic</p>';
-
-
- }
-
- //Sinon c'est un nouveau message, on a la variable t et
- //On récupère f grâce à une requête
- elseif (isset($_GET['t']))
- {
- $topic = (int) $_GET['t'];
- $query=$db->prepare('SELECT topic_titre, forum_topic.forum_id,
- forum_name, auth_view, auth_post, auth_topic, auth_annonce, 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();
- $forum = $data['forum_id'];
-
- echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> -->
- <a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
- --> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
- --> Répondre</p>';
- }
-
- //Enfin sinon c'est au sujet de la modération(on verra plus tard en détail)
- //On ne connait que le post, il faut chercher le reste
- elseif (isset ($_GET['p']))
- {
- $post = (int) $_GET['p'];
- $query=$db->prepare('SELECT post_createur, forum_post.topic_id, topic_titre, forum_topic.forum_id,
- forum_name, auth_view, auth_post, auth_topic, auth_annonce, auth_modo
- FROM forum_post
- LEFT JOIN forum_topic ON forum_topic.topic_id = forum_post.topic_id
- LEFT JOIN forum_forum ON forum_forum.forum_id = forum_topic.forum_id
- WHERE forum_post.post_id =:post');
- $query->bindValue(':post',$post,PDO::PARAM_INT);
- $query->execute();
- $data=$query->fetch();
-
- $topic = $data['topic_id'];
- $forum = $data['forum_id'];
-
- echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> -->
- <a href="./voirforum.php?f='.$data['forum_id'].'">'.stripslashes(htmlspecialchars($data['forum_name'])).'</a>
- --> <a href="./voirtopic.php?t='.$topic.'">'.stripslashes(htmlspecialchars($data['topic_titre'])).'</a>
- --> Modérer un message</p>';
- }
- $query->CloseCursor();
- ?>
- <?php
- switch($action)
- {
- case "repondre": //Premier cas on souhaite répondre
- ?>
- <h1>Poster une réponse</h1>
-
- <form method="post" action="postok.php?action=repondre&t=<?php echo $topic ?>" name="formulaire">
-
- <fieldset><legend>Mise en forme</legend>
- <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
- <input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
- <input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
- <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
- <br /><br />
- <img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(' :D ');return(false)" />
- <img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies(' <img src="https://static.lephpfacile.com/img/smiley/icon_lol.gif" alt="smiley" class="smiley" /> ');return(false)" />
- <img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(' :triste: ');return(false)" />
- <img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(' :frime: ');return(false)" />
- <img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies(' XD ');return(false)" />
- <img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(' :s ');return(false)" />
- <img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(' :o ');return(false)" />
- <img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(' :interrogation: ');return(false)" />
- <img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(' :exclamation: ');return(false)" />
- </fieldset>
-
- <fieldset><legend>Message</legend><textarea cols="80" rows="8" id="message" name="message"></textarea></fieldset>
-
- <input type="submit" name="submit" value="Envoyer" />
- <input type="reset" name = "Effacer" value = "Effacer"/>
- </p></form>
- <?php
- break;
-
- case "nouveautopic":
- ?>
-
- <h1>Nouveau topic</h1>
- <p>Auteur : <?php echo($pseudo); ?> </p>
- <form method="post" action="postok.php?action=nouveautopic&f=<?php echo $forum ?>" name="formulaire">
-
- <fieldset><legend>Titre</legend>
- <input type="text" size="80" id="titre" name="titre" /></fieldset>
-
- <fieldset><legend>Mise en forme</legend>
- <input type="button" id="gras" name="gras" value="Gras" onClick="javascript:bbcode('[g]', '[/g]');return(false)" />
- <input type="button" id="italic" name="italic" value="Italic" onClick="javascript:bbcode('[i]', '[/i]');return(false)" />
- <input type="button" id="souligné" name="souligné" value="Souligné" onClick="javascript:bbcode('[s]', '[/s]');return(false)" />
- <input type="button" id="lien" name="lien" value="Lien" onClick="javascript:bbcode('[url]', '[/url]');return(false)" />
- <br /><br />
- <img src="./images/smileys/heureux.gif" title="heureux" alt="heureux" onClick="javascript:smilies(':D');return(false)" />
- <img src="./images/smileys/lol.gif" title="lol" alt="lol" onClick="javascript:smilies('<img src="https://static.lephpfacile.com/img/smiley/icon_lol.gif" alt="smiley" class="smiley" />');return(false)" />
- <img src="./images/smileys/triste.gif" title="triste" alt="triste" onClick="javascript:smilies(':triste:');return(false)" />
- <img src="./images/smileys/cool.gif" title="cool" alt="cool" onClick="javascript:smilies(':frime:');return(false)" />
- <img src="./images/smileys/rire.gif" title="rire" alt="rire" onClick="javascript:smilies('XD');return(false)" />
- <img src="./images/smileys/confus.gif" title="confus" alt="confus" onClick="javascript:smilies(':s');return(false)" />
- <img src="./images/smileys/choc.gif" title="choc" alt="choc" onClick="javascript:smilies(':O');return(false)" />
- <img src="./images/smileys/question.gif" title="?" alt="?" onClick="javascript:smilies(':interrogation:');return(false)" />
- <img src="./images/smileys/exclamation.gif" title="!" alt="!" onClick="javascript:smilies(':exclamation:');return(false)" /></fieldset>
-
- <fieldset><legend>Message</legend>
- <textarea cols="80" rows="8" id="message" name="message"></textarea>
- <label><input type="radio" name="mess" value="Annonce" />Annonce</label>
- <label><input type="radio" name="mess" value="Message" checked="checked" />Topic</label>
- </fieldset>
- <p>
- <input type="submit" name="submit" value="Envoyer" />
- <input type="reset" name = "Effacer" value = "Effacer" /></p>
- </form>
- <?php
- break;
-
- //D'autres cas viendront s'ajouter ici par la suite
- ?>
- <?php
- 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>
postok.php
- <?php
- session_start();
- $titre="Poster";
- include("includes/identifiants.php");
- include("includes/debut.php");
- include("includes/menu.php");
- include("includes/auth-data_bd.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
- //on va chercher tout ce qui correspond à l'utilisateur
- connexion_bd();
- $affiche = mysql_query("SELECT * FROM LOGIN WHERE pseudo='".mysql_real_escape_string(stripcslashes($_SESSION['pseudo']))."' AND pass='".mysql_real_escape_string($_SESSION['pass'])."'");
- $result = mysql_fetch_assoc($affiche);
- //si le statut ne retourne pas 2, ce n'est pas un admin..on éjecte l'utilisateur
- if(mysql_num_rows($affiche) == 0)
- {
- echo 'Il faut être connecté pour poster.<script type="text/javascript"> window.setTimeout("location=(\'index.php?dec=close\');",3000) </script>'; return false;
- }
- close_bd();
- switch($action)
- {
- //Premier cas : nouveau topic
- case "nouveautopic":
- //On passe le message dans une série de fonction
- $message = $_POST['message'];
- $mess = $_POST['mess'];
-
- //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 LOGIN SET post = post + 1 WHERE 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 !
-
- //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'];
- $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 LOGIN SET post = post + 1 WHERE 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;
- default;
- echo'<p>Cette action est impossible</p>';
- } //Fin du Switch
- ?>
- </div>
- </body>
- </html>
voirforum.php
- <?php
- session_start();
- $titre="Voir un forum";
- include("includes/identifiants.php");
- include("includes/debut.php");
- include("includes/menu.php");
-
- //On récupère la valeur de f
- $forum = (int) $_GET['f'];
-
- //A partir d'ici, on va compter le nombre de messages
- //pour n'afficher que les 25 premiers
- $query=$db->prepare('SELECT forum_name, forum_topic, auth_view, auth_topic FROM forum_forum WHERE forum_id = :forum');
- $query->bindValue(':forum',$forum,PDO::PARAM_INT);
- $query->execute();
- $data=$query->fetch();
-
- $totalDesMessages = $data['forum_topic'] + 1;
- $nombreDeMessagesParPage = 25;
- $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; UTF-8" />
- <meta http-equiv="Content-Language" content="fr" />
- <title>Forum</title>
- <link type="text/css" href="design.css" rel="stylesheet"/>
- </head>
-
- <body>
- <?php
- 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>';
-
- //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 ne met pas de lien sur la page actuelle
- {
- echo $i;
- }
- else
- {
- echo '
- <a href="voirforum.php?f='.$forum.'&page='.$i.'">'.$i.'</a>';
- }
- }
- echo '</p>';
-
-
- $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
-
- //Le titre du forum
- echo '<h1>'.stripslashes(htmlspecialchars($data['forum_name'])).'</h1><br /><br />';
-
-
- //Et le bouton pour poster
- echo'<a href="./poster.php?action=nouveautopic&f='.$forum.'">
- <img src="./images/nouveau.gif" alt="Nouveau topic" title="Poster un nouveau topic" /></a>';
- $query->CloseCursor();
- ?>
- <?php
- //On prend tout ce qu'on a sur les Annonces du forum
-
-
- $query=$db->prepare('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post,
- Mb.pseudo AS pseudo_createur, post_createur, post_time, Ma.pseudo AS pseudo_last_posteur, post_id FROM forum_topic
- LEFT JOIN LOGIN Mb ON Mb.id = forum_topic.topic_createur
- LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id
- LEFT JOIN LOGIN Ma ON Ma.id = forum_post.post_createur
- WHERE topic_genre = "Annonce" AND forum_topic.forum_id = :forum
- ORDER BY topic_last_post DESC');
- $query->bindValue(':forum',$forum,PDO::PARAM_INT);
- $query->execute();
- ?>
- <?php
- //On lance notre tableau seulement s'il y a des requêtes !
- if ($query->rowCount()>0)
- {
- ?>
- <table>
- <tr>
- <th><img src="./images/annonce.gif" alt="Annonce" /></th>
- <th class="titre"><strong>Titre</strong></th>
- <th class="nombremessages"><strong>Réponses</strong></th>
- <th class="nombrevu"><strong>Vus</strong></th>
- <th class="auteur"><strong>Auteur</strong></th>
- <th class="derniermessage"><strong>Dernier message</strong></th>
- </tr>
-
- <?php
- //On commence la boucle
- while ($data=$query->fetch())
- {
- //Pour chaque topic :
- //Si le topic est une annonce on l'affiche en haut
- //mega echo de bourrain pour tout remplir
-
- echo'<tr><td><img src="./images/annonce.gif" alt="Annonce" /></td>
-
- <td id="titre"><strong>Annonce : </strong>
- <strong><a href="./voirtopic.php?t='.$data['topic_id'].'"
- title="Topic commencé à
- '.date('H\hi \l\e d M,y',$data['topic_time']).'">
- '.stripslashes(htmlspecialchars($data['topic_titre'])).'</a></strong></td>
-
- <td class="nombremessages">'.$data['topic_post'].'</td>
-
- <td class="nombrevu">'.$data['topic_vu'].'</td>
-
- <td><a href="./voirprofil.php?m='.$data['topic_createur'].'
- &action=consulter">
- '.stripslashes(htmlspecialchars($data['pseudo_createur'])).'</a></td>';
-
- //Selection dernier message
- $nombreDeMessagesParPage = 15;
- $nbr_post = $data['topic_post'] +1;
- $page = ceil($nbr_post / $nombreDeMessagesParPage);
-
- echo '<td class="derniermessage">Par
- <a href="./voirprofil.php?m='.$data['post_createur'].'
- &action=consulter">
- '.stripslashes(htmlspecialchars($data['pseudo_last_posteur'])).'</a><br />
- A <a href="./voirtopic.php?t='.$data['topic_id'].'&page='.$page.'#p_'.$data['post_id'].'">'.date('H\hi \l\e d M y',$data['post_time']).'</a></td></tr>';
- }
- ?>
- </table>
- <?php
- }
- $query->CloseCursor();
- ?>
- <?php
- //On prend tout ce qu'on a sur les topics normaux du forum
-
-
- $query=$db->prepare('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post,
- Mb.pseudo AS pseudo_createur, post_id, post_createur, post_time, Ma.pseudo AS pseudo_last_posteur FROM forum_topic
- LEFT JOIN LOGIN Mb ON Mb.id = forum_topic.topic_createur
- LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id
- LEFT JOIN LOGIN Ma ON Ma.id = forum_post.post_createur
- WHERE topic_genre <> "Annonce" AND forum_topic.forum_id = :forum
- ORDER BY topic_last_post DESC
- LIMIT :premier ,:nombre');
- $query->bindValue(':forum',$forum,PDO::PARAM_INT);
- $query->bindValue(':premier',(int) $premierMessageAafficher,PDO::PARAM_INT);
- $query->bindValue(':nombre',(int) $nombreDeMessagesParPage,PDO::PARAM_INT);
- $query->execute();
-
- if ($query->rowCount()>0)
- {
- ?>
- <table>
- <tr>
- <th><img src="./images/message.gif" alt="Message" /></th>
- <th class="titre"><strong>Titre</strong></th>
- <th class="nombremessages"><strong>Réponses</strong></th>
- <th class="nombrevu"><strong>Vus</strong></th>
- <th class="auteur"><strong>Auteur</strong></th>
- <th class="derniermessage"><strong>Dernier message </strong></th>
- </tr>
- <?php
- //On lance la boucle
-
- while ($data = $query->fetch())
- {
- //Ah bah tiens... re vla l'echo de fou
- echo'<tr><td><img src="./images/message.gif" alt="Message" /></td>
-
- <td class="titre">
- <strong><a href="./voirtopic.php?t='.$data['topic_id'].'"
- title="Topic commencé à
- '.date('H\hi \l\e d M,y',$data['topic_time']).'">
- '.stripslashes(htmlspecialchars($data['topic_titre'])).'</a></strong></td>
-
- <td class="nombremessages">'.$data['topic_post'].'</td>
-
- <td class="nombrevu">'.$data['topic_vu'].'</td>
-
- <td><a href="./voirprofil.php?m='.$data['topic_createur'].'
- &action=consulter">
- '.stripslashes(htmlspecialchars($data['pseudo_createur'])).'</a></td>';
-
- //Selection dernier message
- $nombreDeMessagesParPage = 15;
- $nbr_post = $data['topic_post'] +1;
- $page = ceil($nbr_post / $nombreDeMessagesParPage);
-
- echo '<td class="derniermessage">Par
- <a href="./voirprofil.php?m='.$data['post_createur'].'
- &action=consulter">
- '.stripslashes(htmlspecialchars($data['pseudo_last_posteur'])).'</a><br />
- A <a href="./voirtopic.php?t='.$data['topic_id'].'&page='.$page.'#p_'.$data['post_id'].'">'.date('H\hi \l\e d M y',$data['post_time']).'</a></td></tr>';
-
- }
- ?>
- </table>
- <?php
- }
- else //S'il n'y a pas de message
- {
- echo'<p>Ce forum ne contient aucun sujet actuellement</p>';
- }
- $query->CloseCursor();
- ?>
- </div>
- </body></html>
voirtopic.php
- <?php
- 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);
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html />
- <meta http-equiv="Content-Language" content="fr" />
- <title>Forum</title>
- <link type="text/css" href="design.css" rel="stylesheet"/>
- </head>
-
- <body>
- <?php
- 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&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&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 !
- ?>
- <?php
- $query=$db->prepare('SELECT post_id, post_createur, post_texte, post_time,
- id, pseudo, date, post
- FROM forum_post
- LEFT JOIN LOGIN ON LOGIN.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['id'].'&action=consulter">
- '.stripslashes(htmlspecialchars($data['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'].'&action=delete">
- <img src="./images/supprimer.gif" alt="Supprimer"
- title="Supprimer ce message" /></a>
- <a href="./poster.php?p='.$data['post_id'].'&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['date']).'
- <br />Messages : '.$data['post'].'<br /></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.'&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
- ?>
- </body>
- </html>