Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > PHP > Systèmes complets > Créer son forum de toutes pièces > Les pages membres > Avant tout > Lecture du tutoriel

Avant tout

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)
Avatar
Auteur : General Vans
Note : 18 / 20 (25 votes)
Visualisations : 31 933

Plus d'informations Plus d'informations
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.


A l'avenir, lorsque, dans un script php, j'aurais besoin d'écrire une apostrophe ('), je la remplacerai par un espace, plutôt que de mettre \' comme le veut la syntaxe du langage. Ce n'est pas pour compliquer les choses, mais c'est pour rendre la colorisation du code plus clair ^^ .


Dans tous le tuto, vous allez voir que j'ouvre et je ferme les balises php sans arrêt, c'est un problème de coloration syntaxique sur le SDZ qui fait qu'on est obligé de mettre un code php enter les balises pour qu'il soit coloré, prudence donc...
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 :
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 :

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é :

Ç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.

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 onze 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 souhaitez 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 neuf champs, topic_id, forum_id, topic_titre, topic_createur, topic_vu, topic_time, topic_genre, topic_last_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 en son temps :) .



A 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 à 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
Retour en haut Retour en haut


Créé : le 13/09/2006 à 19:48:41
Modifié : le 01/09/2008 à 23:08:45
Avancement : 100%
Licence : Creative Commons BY

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 215 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0282s (0.0163s)