Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
La page
voirforum.php n'est pas très différente de notre page d'index. La seule différence, c'est qu'on va afficher la liste des
topics au lieu de celle des
forums. Mais finalement, les scripts restent assez similaires.
Ce qu'on va faire
Une requête dans la base de données pour retourner toutes les infos sur le forum en question
Un tableau qui va afficher les 25 derniers topics.
Comme vous avez pu le remarquer, dans la page d'index, l'url d'un forum est de la forme :
voirforum.php?f=2.
On va donc récupérer la valeur de f qui correspond à l'id du forum qu'on va afficher.
Sans plus attendre, le début du code :
Page : voirforum.php
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 | <?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 = "Voir un forum";
include("includes/debut.php");
?>
<body>
<div id="banniere"></div>
<?php
//Maintenant, on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
//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
$requete1 = mysql_query("SELECT forum_name, forum_topic, auth_view, auth_topic FROM forum_forum WHERE forum_id = '".$forum."'") or die (mysql_error());
$data1 = mysql_fetch_assoc($requete1);
$totalDesMessages = $data1['forum_topic'] + 1;
$nombreDeMessagesParPage = 25;
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
?>
<div id="corps_forum">
|
Voilà le début du code. On compte donc le nombre de messages afin de savoir combien de pages on va devoir créer. C'est exactement le même principe que dans le TP sur le Livre d'or (d'ailleurs, j'ai pris les mêmes noms de variables).
Je profite de cette requête pour récupérer les valeurs des champs
auth_view et
auth_topic : vous comprendrez plus tard pourquoi.
Maintenant, on va afficher le haut de la page, c'est-à-dire qu'on va écrire le nombre de pages et des informations sur le visiteur.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 | <?php
echo'<a href ="./index.php">Index du forum</a> /
<a href="./voirforum.php?f='.$forum.'">'.stripslashes(htmlspecialchars($data1['forum_name'])).'</a>';
if (isset($_SESSION['pseudo'])) // Si le membre est connecté
{
//Voici les options
echo'<p>Vous êtes connecté en tant que
<a href="./voirprofil.php?m='.intval($_SESSION['id']).'&action=consulter">
'.stripslashes(htmlspecialchars($_SESSION['pseudo'])).'</a><br />
<a href="./voirprofil.php?action=modifier">Modifier mon profil</a><br />
<a href="./messagesprives.php">Consulter mes messages privés</a><br />
<a href ="./deconnexion.php">Se déconnecter</a><br /></p>';
}
// Sinon, on propose de se connecter ou de s'enregistrer
else
{
echo'<p>Vous n êtes pas connecté <br />
<a href="./connexion.php">Se connecter</a><br />
<a href="./register.php">Pas encore inscrit ?</a><br /></p>';
}
//Nombre de pages
if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$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($data1['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>';
?>
|
Vous remarquez au passage que l'url du lien vers le profil prend maintenant un sens

.
Le tableau
Une fois qu'on est arrivés là, on va devoir faire une requête de fou furieux pour prendre en une seule fois tout ce que l'on veut sur les forums.
Attention : on y va.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12 | <?php
//On prend tout ce qu'on a sur les Annonces du forum
$requete3 = mysql_query('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post,
Mb.membre_pseudo AS membre_pseudo_createur, post_createur, post_time, Ma.membre_pseudo AS membre_pseudo_last_posteur FROM forum_topic
LEFT JOIN forum_membres Mb ON Mb.membre_id = forum_topic.topic_createur
LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id
LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur
WHERE topic_genre = "Annonce" AND forum_topic.forum_id = "'.$forum.'"
ORDER BY topic_last_post DESC');
?>
|
Bon bah, allons détailler : comme vous avez sûrement dû le remarquer, on fait une requête qui, grâce à des jointures, associe 4 tables. La première est
forum_topic, ce qui est logique puisqu'on veut avant tout lister les différents topics du forum. On connaît l'id du membre qui a posté le premier message, et on associe alors la table
forum_membres pour connaître son nom. Ensuite, on associe la table
forum_post à forum_topic pour connaître tout ce que l'on veut sur le dernier message, et en l'occurrence, ce qui nous intéresse c'est
qui l'a posté. On repart donc sur la table
forum_membres 
, et on sort le nom du bonhomme qui a posté ce message.
Si vous avez en tête la structure du tableau listant les sujets de chaque forum du Site du Zér0, ou de la plupart des autres forums, vous comprendrez facilement pourquoi il nous faut toutes ces infos.
Euh... c'est quoi, ça ? LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur
C'est un alias, comme on utilise deux fois la table
forum_membre, ça permet de différencier la première jointure de la seconde. La première, on la renomme
Mb, et la seconde
Ma ; ensuite, grâce au mot clé
AS, on re-renomme les champs, pour ne plus les confondre dans l'
echo qui va suivre.
Traitement des annonces !
En fait, on va faire deux tableaux : un pour les annonces et un pour les topics normaux (c'est la raison du
Where topic_genre = "Annonce"). C'est la méthode la plus simple que j'ai trouvée pour avoir les annonces toujours en haut, et les sujets à la suite.
Évidemment on peut toujours économiser une requête en ajoutant des conditions pour afficher la bonne image... On peut toujours arriver à supprimer une requête par ci par là, cependant dans le tuto j'ai choisis de garder des méthodes simples, à vous de changer ça si vous voulez gagner un peu plus de performance.
Revenons au code :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 | <?
//On lance notre tableau seulement s'il y a des requêtes !
if (mysql_num_rows($requete3) > 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 ($data3 = mysql_fetch_assoc($requete3))
{
//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='.$data3['topic_id'].'"
title="Topic commencé à
'.date('H\hi \l\e d M,y',$data3['topic_time']).'">
'.stripslashes(htmlspecialchars($data3['topic_titre'])).'</a></strong></td>
<td class="nombremessages">'.$data3['topic_post'].'</td>
<td class="nombrevu">'.$data3['topic_vu'].'</td>
<td><a href="./voirprofil.php?m='.$data3['topic_createur'].'
&action=consulter">
'.stripslashes(htmlspecialchars($data3['membre_pseudo_createur'])).'</a></td>';
//Selection dernier message
$nombreDeMessagesParPage = 15;
$nbr_post = $data3['topic_post'] +1;
$page = ceil($nbr_post / $nombreDeMessagesParPage);
echo '<td class="derniermessage">Par
<a href="./voirprofil.php?m='.$data3['post_createur'].'
&action=consulter">
'.stripslashes(htmlspecialchars($data3['membre_pseudo_last_posteur'])).'</a><br />
A <a href="./voirtopic.php?t='.$data3['topic_id'].'&page='.$page.'#p_'.$data3['post_id'].'">'.date('H\hi \l\e d M y',$data3['post_time']).'</a></td></tr>';
}
?>
</table>
<?php
}
?>
|
Voilà : on arrive au bout de la première boucle. Il n'y a pas grand-chose de compliqué à comprendre : on fait un tableau qu'on remplit avec le contenu de la requête.

Remarquez qu'on n'affiche pas un tableau vide... Enfin on pourrait, mais c'est très moche. Du coup, je vérifie avant que la requête renvoie bien au moins 1 donnée.
Sans plus attendre, les topics !
Ici encore, on va faire une requête de tarés et mettre son contenu dans un tableau. Toutefois, il faut encore vérifier que le forum contient au moins 1 topic. C'est comme pour la page d'index, il est possible que ce soit la première fois que vous mettiez les pieds sur cette page ; si ça se produit, on affiche un message et non pas le tableau.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 | <?
//On prend tout ce qu'on a sur les topics normaux du forum
$requete3 = mysql_query('SELECT forum_topic.topic_id, topic_titre, topic_createur, topic_vu, topic_post, topic_time, topic_last_post,
Mb.membre_pseudo AS membre_pseudo_createur, post_createur, post_time, Ma.membre_pseudo AS membre_pseudo_last_posteur FROM forum_topic
LEFT JOIN forum_membres Mb ON Mb.membre_id = forum_topic.topic_createur
LEFT JOIN forum_post ON forum_topic.topic_last_post = forum_post.post_id
LEFT JOIN forum_membres Ma ON Ma.membre_id = forum_post.post_createur
WHERE topic_genre <> "Annonce" AND forum_topic.forum_id = "'.$forum.'"
ORDER BY topic_last_post DESC
LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage .'')
or die (mysql_error());
if (mysql_num_rows($requete3) > 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 ($data3 = mysql_fetch_assoc($requete3))
{
//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='.$data3['topic_id'].'"
title="Topic commencé à
'.date('H\hi \l\e d M,y',$data3['topic_time']).'">
'.stripslashes(htmlspecialchars($data3['topic_titre'])).'</a></strong></td>
<td class="nombremessages">'.$data3['topic_post'].'</td>
<td class="nombrevu">'.$data3['topic_vu'].'</td>
<td><a href="./voirprofil.php?m='.$data3['topic_createur'].'
&action=consulter">
'.stripslashes(htmlspecialchars($data3['membre_pseudo_createur'])).'</a></td>';
//Selection dernier message
$nombreDeMessagesParPage = 15;
$nbr_post = $data3['topic_post'] +1;
$page = ceil($nbr_post / $nombreDeMessagesParPage);
echo '<td class="derniermessage">Par
<a href="./voirprofil.php?m='.$data3['post_createur'].'
&action=consulter">
'.stripslashes(htmlspecialchars($data3['membre_pseudo_last_posteur'])).'</a><br />
A <a href="./voirtopic.php?t='.$data3['topic_id'].'&page='.$page.'#p_'.$data3['post_id'].'">'.date('H\hi \l\e d M y',$data3['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>';
}
|
On est arrivés en bas de notre page : voyons plus en détail ce code. La requête que l'on fait est très voisine de celle que l'on a utilisée pour lister les annonces, sauf qu'on limite le nombre de retours à un certain nombre. Ensuite, on remplit le nouveau tableau, et comme on liste d'abord les annonces, elles resteront toujours en haut ! Pour sélectionner les topics "normaux", il faut prendre ceux qui ne sont pas des annonces ; le signe
<> signifie "différent de".
On termine
Elle est pas belle, la vie ? Vous avez maintenant une page qui liste les topics de chaque forum. Enfin je dis avez... il reste encore à terminer en fermant les balises.
Code : PHP
Et voilà.
La page
voirtopic.php se construit comme le script de news présenté dans le TP. A savoir qu'on va afficher chaque message du plus ancien au plus récent, la seule différence, c'est qu'à la gauche de ces messages, on montrera l'avatar du membre qui a posté.
Le css
Tout ceci nécessite un petit tour par
notre fichier CSS. Voici comment j'ai fait, libre à vous de modifier chaque ligne pour les adapter à votre design.
Code : CSS 1
2
3
4
5
6
7
8
9
10 | .vt_auteur
{
width:20%;
background-color : rgb(244,238,250);
}
.vt_mess
{
width:75%;
background-color : rgb(244,238,250);
}
|
On va donc faire un tableau à deux colonnes, la première affichera les infos sur le membre qui a posté (son avatar, son nom, etc.), et la seconde son message

.
On passe au php
Comme pour la page voirforum.php, on doit d'abord compter le nombre de messages pour compter le nombre de pages nécessaires, afin d'en n'afficher que 15 par page.
Page : voirtopic.php
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 | <?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 = "Voir un topic";
include("includes/bbcode.php"); //On verra plus tard ce qu'est ce fichier
include("includes/debut.php");
?>
<body>
<div id="banniere"></div>
<?php
//Maintenant on se connecte à la base de données
include("includes/identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
//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
$requete1 = mysql_query("
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."'") or die (mysql_error());
$data1 = mysql_fetch_assoc($requete1);
$totalDesMessages = $data1['topic_post'] + 1;
$nombreDeMessagesParPage = 15;
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
?>
<div id="corps_forum">
|
Vous remarquez que le code est exactement pareil, sauf qu'on récupère
t la place de
f. Par ailleurs, puisqu'il nous faut aussi des infos sur le forum auquel appartient le sujet, il faut faire une jointure.
Et si j'ai envie d'afficher 10 messages ? Je dois changer le script ?
En fait, le script qu'on est en train de réaliser est temporaire ; dans la seconde partie de ce tuto consacrée à la partie administration, on aura à le modifier légèrement. Ainsi, vous pourrez changer le nombre de messages par page facilement.
Maintenant qu'on a le haut de notre page, on va afficher quelques options, comme la liste des pages et les éternelles propositions au membre connecté

.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | <a href ="./index.php">Index du forum</a> /
<a href="./voirforum.php?f=<?php echo $data1['forum_id'] ?>"><?php echo stripslashes(htmlspecialchars($data1['forum_name'])); ?></a> /
<a href="./voirtopic.php?t=<?php echo $topic ?>"><?php echo stripslashes(htmlspecialchars($data1['topic_titre'])); ?></a>
<?php
// A partir d'ici, comme d'habitude, on affiche des options pour le visiteur
if (isset($_SESSION['pseudo'])) // Si le membre est connecté
{
//Voici les options
echo'<p>Vous êtes connecté en tant que
<a href="./voirprofil.php?m='.intval($_SESSION['id']).'&action=consulter">
'.stripslashes(htmlspecialchars($_SESSION['pseudo'])).'</a><br />
<a href="./voirprofil.php?action=modifier">Modifier mon profil</a><br />
<a href="./messagesprives.php">Consulter mes messages privés</a><br />
<a href ="./deconnexion.php">Se déconnecter</a><br /></p>';
}
// Sinon, on propose de se connecter ou de s'enregistrer
else
{
echo'<p>Vous n êtes pas connecté <br />
<a href="./connexion.php">Se connecter</a><br />
<a href="./register.php">Pas encore inscrit ?</a><br /></p>';
}
|
Enfin, on compte le nombre de pages, et on commence notre boucle pour afficher tous les messages. Vous allez voir que finalement ce script est l'un des plus simples.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | <?php
//Nombre de pages
if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$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 le titre :
echo '<h1>'.stripslashes(htmlspecialchars($data1['topic_titre'])).'</h1>';
//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='.$data1['forum_id'].'">
<img src="./images/nouveau.gif" alt="Nouveau topic" title="Poster un nouveau topic" /></a>';
//Enfin on commence la boucle !
?>
|
Je m'arrête une minute avant d'afficher la requête (je vous rassure, elle n'est pas trop longue

). En fait, vous devriez être capables de la faire tout seuls comme des grands
pendant que je pars siroter un café si vous avez bien compris les jointures. On doit prendre, à partir de l'id du créateur de chaque post, toutes les infos possibles sur ce membre.
Voilà comment faire :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | <?php
$requete2 = mysql_query('
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 ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage . '')
or die(mysql_error());
//On vérifie que la requête a bien retourné des messages
if (mysql_num_rows($requete2) < 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 ($data2 = mysql_fetch_assoc($requete2))
{
|
Vous avez vu qu'une fois encore je vérifie si la requête retourne au moins un message. En général, ça sera le cas puisque lors de la création d'un topic, on y adjoint un premier post. Mais comment on ne sait jamais, il vaut mieux vérifier

.
Sinon, on lance notre beau tableau, et on va voir de suite quoi mettre dedans.
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | <?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='.$data2['membre_id'].'&action=consulter">
'.stripslashes(htmlspecialchars($data2['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 (intval($_SESSION['id']) == $data2['post_createur'])
{
echo'<td id=p_'.$data2['post_id'].'>Posté à '.date('H\hi \l\e d M y',$data2['post_time']).'
<a href="./poster.php?p='.$data2['post_id'].'&action=delete">
<img src="./images/supprimer.gif" alt="Supprimer"
title="Supprimer ce message" /></a>
<a href="./poster.php?p='.$data2['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',$data2['post_time']).'
</td></tr>';
}
//Détails sur le membre qui a posté
echo'<tr><td>
<img src="./images/avatars/'.$data2['membre_avatar'].'" alt="" />
<br />Membre inscrit le '.date('d/m/Y',$data2['membre_inscrit']).'
<br />Messages : '.$data2['membre_post'].'<br />
Localisation : '.stripslashes(htmlspecialchars($data2['membre_localisation'])).'</td>';
//Message
echo'<td>'.code(nl2br(stripslashes(htmlspecialchars($data2['post_texte'])))).'
<br /><hr />'.code(nl2br(stripslashes(htmlspecialchars($data2['membre_signature'])))).'</td></tr>';
} //Fin de la boucle ! \o/
?>
</table>
|
C'est quoi, la fonction code ?
C'est une fonction que l'on va se dépêcher de créer dans le prochain chapitre du cours. Dans un forum, on donne la possibilité de mettre en forme son texte (gras, italique, souligné...). Mais on ne peut pas laisser le membre utiliser les balises html, car ça serait trop dangereux ; c'est pourquoi on utilise des balises qu'on convertit ensuite en html grâce à la fonction
code. Pensez par exemple au Zcode

.
Bon, bah on a terminé notre boucle, on a fermé notre tableau, il reste à terminer la page :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | <?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
mysql_query('UPDATE forum_topic
SET topic_vu = topic_vu + 1 WHERE topic_id = '.$topic.'');
} //Fin du if qui vérifiait si le topic contenait au moins un message
mysql_close();
?>
</div>
</body>
</html>
|
Héhé... on a terminé

. C'était peut être un peu long, mais à présent, les posts sont listés, tout comme les topics !
C'est maintenant à vous de voir comment vous voulez organiser votre page : dans l'exemple, j'ai fait apparaitre pour chaque message le pseudo du membre, son avatar, le nombre de messages qu'il a postés et sa localisation. Mais personne ne vous interdit de mettre autre chose

.