Aller au menu - Aller au contenu

Icône Avant tout

Avatar
Mise à jour : 30/11/2010
Difficulté : Facile Facile Creative Commons BY
4 418 visites depuis 7 jours , dont 524 sur ce chapitre , classé 40/777
Comme le titre l'indique, cette partie va tout mettre en place.
Que ce soit dans votre tête, dans la base de données comme dans les dossiers, on va faire en sorte que tout soit prêt pour commencer le reste.
Du coup, on va s'en tenir à la base de la base : donc, pas de php ici ; tout ce qu'on va faire, c'est mettre au point ce que nous allons réaliser.

Surtout ne faites pas l'erreur de sauter ce chapitre, sans avoir bien pris le temps d'analyser ce que l'on veut faire, on fonce dans le mur et après vous allez être perdu devant les codes qui suivent !


Allez au boulot ;)
Sommaire du chapitre :
Icône du chapitre
Sommaire Chapitre suivant

Présentation

On ne peut pas vraiment se lancer dans la création d'un forum sans avoir pris le temps d'étudier un peu la question.
Alors, on va voir en détail ce qu'est un forum : ça peut paraître barbant pour certains, mais au moins, ça mettra les choses au clair.

Différents types de forums



Lorsque vous créez un site, vous êtes souvent amenés à vouloir communiquer avec les internautes qui le visitent : c'est là que le forum est utile. Au final, ce n'est pas très différent d'un livre d'or, on va simplement diviser le tout en plusieurs catégories, et utiliser un système de connexion.

A partir du moment où vous souhaitez installer un forum sur votre site, deux choix s'offrent à vous :
  • Utiliser une plate-forme comme la célèbre phpbb (avantages : c'est facile, gratuit et, quoi qu'on en dise, assez sûr).
  • Programmer votre propre forum (avantages : vous pouvez modifier ce que vous voulez, l'insérer dans votre design, et puis ça fait plus classe ^^ ).

Comme on n'a rien sans rien, c'est évidemment plus long et plus difficile d'utiliser la deuxième solution, mais pas de panique : on va s'y mettre ensemble :) , et au final, vous serez contents de pouvoir vous plonger dans vos scripts sans choper une migraine, comme c'est le cas avec phpbb.

De quoi ai-je besoin ?



Pour créer un forum, il ne faut rien d'extraordinaire :
  • Une base de données : elle va nous permettre de stocker toutes les informations de notre forum.
  • Un programme de traitement de texte : le mieux est d'utiliser Notepad++, présenté par M@teo21 dans ses cours, mais vous faites comme vous voulez :p .
  • Un logiciel FTP : grâce à lui, on va envoyer le tout sur le site, et voir le résultat.

Bref, l'attirail classique du programmeur PHP ; la seule différence, c'est qu'il va falloir créer un dossier appelé forum, car on va y mettre pas mal de scripts.

Avant de passer à la base de données, on va voir les fonctionnalités que proposera le forum, une fois terminé :
  • Possibilité de s'inscrire pour avoir un pseudo, et grâce auquel on peut poster de nouveaux topics, ou bien répondre.
  • Possibilité de modifier ou de supprimer ses propres messages, en cas de fautes d'orthographe.
  • Possibilité de consulter une page qui affiche des informations sur les membres (profil), et de pouvoir modifier le sien.
  • Possibilité de recevoir et d'envoyer des messages privés aux autres membres.
  • Et j'en passe ^^ .


Ça résume un peu les services principaux proposés aux visiteurs de notre forum, et en fait, ça regroupe à peu près toutes les bases. Une fois que ce sera terminé, vous pourrez vous-mêmes ajouter des fonctions, comme une barre de recherche, une liste d'amis, etc.

Évidemment il faut ajouter à cela toutes les fonctions administration du forum, on les verra en leur temps.

La base de données

On va maintenant passer à la création de notre base de données : elle va être simplifiée par rapport à celle qu'on utilise avec phpbb, car le forum va être un peu plus simple.

Han !! Tu vas nous faire programmer un forum super-simple, alors que t'avais dit que ça serait un beau forum complet ! :colere2:


Pas de panique : en fait, phpbb est une plate-forme qui s'utilise par plusieurs sites ; aussi, il faut prévoir des dizaines de paramètres à modifier facilement par l'administrateur afin d'ajuster son forum à ses goûts. La différence, c'est que nous, on ne veut pas l'exporter, ni proposer à des internautes de le télécharger : on veut simplement l'utiliser pour nous. Forcément, ça simplifie pas mal les choses.

Puisqu'on est dans la partie des pages membres, je ne mets pas les tables qui concernent l'administration : on verra ça en détail plus tard. Aussi sachez qu'il y aura plus de tables au final ;) .


Bref, pour en revenir à nos tables, voici ce qu'on va faire.

Une table forum_categorie
: elle va comporter trois champs, cat_id, cat_nom, cat_ordre.
C'est dans cette table que vont être stockées les différentes catégories du forum ; par exemple, sur le Site du Zér0, il y en a cinq (Site Web, Programmation, Mapping, etc.).

Une table forum_forum
: elle va comporter treize champs, forum_id, cat_id, forum_name, forum_desc, forum_ordre, forum_last_post_id, forum_topic, forum_post, auth_view, auth_post, auth_topic, auth_annonce, auth_modo.
C'est tout simplement la table qui va être utilisée pour écrire le nom de chaque forum, leur description, etc.

Que représentent les champs avec le préfixe auth_ ?


Ils vont comporter un numéro qui renseignera sur le niveau qu'il faut avoir pour lire, poster ou créer un nouveau message pour chaque forum (il est possible que vous souhaitiez faire un forum spécial pour les administrateurs ; dans ce cas on mettra un numéro particulier, mais on verra ça plus tard ;) ).


Une table forum_topic : elle va comporter dix champs, topic_id, forum_id, topic_titre, topic_createur, topic_vu, topic_time, topic_genre, topic_last_post, topic_first_post, topic_post.

Dans l'ordre logique, on est passé de la catégorie au forum, et on arrive aux topics (ou sujets).

Une table forum_post
: elle va comporter six champs, post_id, post_createur, post_texte, post_time, topic_id, post_forum_id. C'est donc la table qui va contenir les informations sur les posts (ou messages).

Une table forum_membres : elle va comporter un grand nombre de champs, mais le nombre exact, c'est à vous de le déterminer. En fait, ça dépend du nombre d'informations que vous voulez connaître sur vos membres.
Toutefois, il faut créer un minimum de champs, à savoir : membre_id, membre_pseudo, membre_mdp, membre_email, membre_avatar, membre_signature, membre_localisation, membre_inscrit, membre_derniere_visite, membre_rang, membre_post.

Dans ma requête, j'en ai ajouté quelques autres, comme membre_msn, membre_siteweb.

Voici donc les requêtes à copier :

Code : SQL
 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-- 
-- Table `forum_categorie`
-- 
 
CREATE TABLE `forum_categorie` (
  `cat_id` int(11) NOT NULL AUTO_INCREMENT,
  `cat_nom` varchar(30) collate latin1_general_ci NOT NULL,
  `cat_ordre` int(11) NOT NULL,
  PRIMARY KEY  (`cat_id`),
  UNIQUE KEY `cat_ordre` (`cat_ordre`)
);
 
-- 
-- Table `forum_forum`
-- 
 
CREATE TABLE `forum_forum` (
  `forum_id` int(11) NOT NULL AUTO_INCREMENT,
  `forum_cat_id` mediumint(8) NOT NULL,
  `forum_name` varchar(30) collate latin1_general_ci NOT NULL,
  `forum_desc` text collate latin1_general_ci NOT NULL,
  `forum_ordre` mediumint(8) NOT NULL,
  `forum_last_post_id` int(11) NOT NULL,
  `forum_topic` mediumint(8) NOT NULL,
  `forum_post` mediumint(8) NOT NULL,
  `auth_view` tinyint(4) NOT NULL,
  `auth_post` tinyint(4) NOT NULL,
  `auth_topic` tinyint(4) NOT NULL,
  `auth_annonce` tinyint(4) NOT NULL,
  `auth_modo` tinyint(4) NOT NULL,
  PRIMARY KEY  (`forum_id`)
); 
 
 
-- 
-- Table `forum_membres`
-- 
 
CREATE TABLE `forum_membres` (
  `membre_id` int(11) NOT NULL AUTO_INCREMENT,
  `membre_pseudo` varchar(30) collate latin1_general_ci NOT NULL,
  `membre_mdp` varchar(32) collate latin1_general_ci NOT NULL,
  `membre_email` varchar(250) collate latin1_general_ci NOT NULL,
  `membre_msn` varchar(250) collate latin1_general_ci NOT NULL,
  `membre_siteweb` varchar(100) collate latin1_general_ci NOT NULL,
  `membre_avatar` varchar(100) collate latin1_general_ci NOT NULL,
  `membre_signature` varchar(200) collate latin1_general_ci NOT NULL,
  `membre_localisation` varchar(100) collate latin1_general_ci NOT NULL,
  `membre_inscrit` int(11) NOT NULL,
  `membre_derniere_visite` int(11) NOT NULL,
  `membre_rang` tinyint (4) DEFAULT 2,
  `membre_post` int(11) NOT NULL,
  PRIMARY KEY  (`membre_id`)
); 
 
 
-- 
-- Table `forum_post`
-- 
 
CREATE TABLE `forum_post` (
  `post_id` int(11) NOT NULL AUTO_INCREMENT,
  `post_createur` int(11) NOT NULL,
  `post_texte` text collate latin1_general_ci NOT NULL,
  `post_time` int(11) NOT NULL,
  `topic_id` int(11) NOT NULL,
  `post_forum_id` int(11) NOT NULL,
  PRIMARY KEY  (`post_id`)
);
 
 
 
-- 
-- Table  `forum_topic`
-- 
 
CREATE TABLE `forum_topic` (
  `topic_id` int(11) NOT NULL AUTO_INCREMENT,
  `forum_id` int(11) NOT NULL,
  `topic_titre` char(60) collate latin1_general_ci NOT NULL,
  `topic_createur` int(11) NOT NULL,
  `topic_vu` mediumint(8) NOT NULL,
  `topic_time` int(11) NOT NULL,
  `topic_genre` varchar(30) collate latin1_general_ci NOT NULL,
  `topic_last_post` int(11) NOT NULL,
  `topic_first_post` int(11) NOT NULL,
  `topic_post` mediumint(8) NOT NULL,
  PRIMARY KEY  (`topic_id`),
  UNIQUE KEY `topic_last_post` (`topic_last_post`)
);


Il existe également une table forum_message_privee que je n'ajoute pas encore, car on la verra plus tard :) .



À première vue, le nom de chaque champ est assez explicite, et vous ne devez pas avoir trop de mal à comprendre à quoi ils vont nous servir.
Les seules qui peuvent poser problèmes sont cat_ordre et forum_ordre : il s'agit en fait de nombres entiers (int) qui seront attribués à chaque catégorie ou forum. Ainsi, on pourra afficher la liste des forums dans un ordre précis.

Le design

Voilà la dernière partie avant de passer à la programmation pure et dure. On va ici s'intéresser à l'aspect visuel de notre forum, c'est-à-dire voir ce qu'on peut faire pour éviter d'avoir un simple tableau blanc présentant des messages.

Le CSS



Comme pour n'importe quelle page d'un site, on va utiliser le CSS pour améliorer le design ; je vais donc vous demander de créer un fichier appelé design.css, et que vous allez placer dans votre dossier forum (si vous voulez garder le même fichier css que pour le reste de votre site, ça ne pose pas de problème, mais il va falloir prévoir de le modifier).

Au fur et à mesure qu'on va utiliser des balises, je vous demanderai de temps en temps de modifier ce fichier : donc gardez-le à portée.

Les images



Vous l'avez sûrement remarqué, dans un forum, il y a quelques images qui rendent le résultat un peu moins triste que si on touchait à rien. Et comme on ne veut pas que ce soit sobre, on va créer quelques images.
Il va vous falloir :

- un bouton 'Nouveau Topic'
- un bouton 'Répondre'
- un bouton 'Éditer'
- un bouton 'Supprimer'
- une liste de smilies
- un signal pour montrer qu'un topic est non lu, et un autre pour montrer qu'il est déjà lu
- une petite flèche sur laquelle on va cliquer pour accéder au dernier message de chaque forum.

Après, c'est à vous de voir pour la réalisation, ça dépend totalement du style général de votre forum :) ; vous pouvez d'ailleurs en mettre davantage si vous le souhaitez (par exemple, un signal spécial pour les topic-annonces) ; à titre d'exemple, je mets ici quelques images utilisées par phpbb dans le template utilisé par défaut : subsilver.

Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur

On arrive à la fin de ce chapitre : même si jusqu'ici vous n'avez pas vraiment l'impression d'avoir fait quoi que ce soit, on a au moins posé les bases. On n'a pas encore utilisé de php, certes, mais si on résume : on a vu ce qu'on voulait faire, on a préparé le terrain en créant nos tables, et on a même nos images.
Sans plus attendre, on va commencer à coder le tout en débutant par la page index.php :pirate: .
Sommaire Chapitre suivant

Partager

69 commentaires pour "Avant tout"
Note moyenne : 3.66 / 4 (334 votes)
Pseudo Commentaire
En ligne dryusdan # Posté le 30/03/2011 à 23:35:56
L'ignorance fait le savoir ...
Avatar

Avis : Très bon
Flux RSS

bonjour
ce tuto es très interressent mais il manque d'explication,
on va dire aussi je n'ai pas tout compris mais je met quand même :euh: 18/20 passable :p (mais non exellent)
 
Hors ligne rainesage2 # Posté le 05/05/2011 à 17:29:17

Chic un tuto pour les forum, c'est justement ce qu'il me manquait !
Merci pour ce tutoriel intéressant et clair.
Hors ligne franchar # Posté le 28/06/2011 à 08:58:47
Avatar

Avis : Décevant

Merci pour ton tuto
Hors ligne darkmtt # Posté le 17/09/2011 à 22:32:55
Avatar

Très bon tutoriel, même si chez moi je me retrouve avec une erreur bizarre^^ Il y a toujours du monde pour aidez ou pas?
Hors ligne hendyhdi # Posté le 03/02/2012 à 22:13:00

Avis : Bon

bonjour j'ai un gros problème (il arrive plus loin) mai il concerne la base de donée donc je vais en parler ici.
mon problème est que membre_post ne marche pas >< et sa c'est un très gros problème je suis bloger a la page poster et je peux plus rien faire ><

Voir tous les commentaires