Ikoula - Solutions d'Hebergement : Domaines, Packs, Serveurs...
ikoula.com
  A Propos
  Technologies
  Emploi 
  Espace Presse
  Support 
Connexion   FR|EN

Live Help
Petites Entreprises >
  Moyennes & Grandes Entreprises >
  Developpeurs & Revendeurs >
 
 

Menu principal
Accueil Support
Ouvrir un Ticket
Historique des tickets
Explorer base de connaissances
Etat du reseau

Login
 Login:
 Password:

Base de connaissance


(Entrez les mots cles separes par des espaces. Par exemple: produit garantie information)

Infogérance avec Ikoula

Anti-Spam

R1Soft
Base de connaissances
Comment créer un Forum de discussion
Top : Hébergement Mutualisé : Windows : Applications autour des ASP

ID de l'article: 001660
Note: 4.2 / 5.0 (10 votes)
Lu: 1507

Probleme
Comment créer un Forum de discussion

Solution
INTRODUCTION

Un forum de discussion est un lieu d'échange d'idées,
de questions et de réponses. Je vous propose ici une étude de cas de ce concept.
Pour la réalisation, le forum se repose sur une base de données. Ici, Access. Mais vous pouvez bien sur utiliser une autre base comme Oracle, SQL Server...
Bien sur, il est libre et vous pouvez l'utiliser comme bon vous semble, même à des fins commerciales.

Conception et Préparation

Crééons une base Acces comprenant une table nommée "message" . Puis ajoutez les champs suivants :

id
:NuméroAuto
groupe
: Numérique
famille
: Numérique
class
: Numérique
ladate
: Date/Heure
sujet :
Texte
auteur
: Texte
email
: Texte
texte
: Mémo
renvoie: Oui/Non
lapage : Numérique

Les explications se trouvent sur le schéma ci-dessous :


Crééons maintenant une DSN portant le nom de "forum". Nous aurons besoin pour la bonne lisibilité de notre forum de petites images. Vous pouvez récuperer celles ci (clic droit + enregistrer l'image sous...):


ainsi qu'une image d'1*1 pixel blanc. Placez ces images dans un répertoire nommé "imgs". Nous voilà prêt pour notre premier pas, la saisie et l'enregistrement d'un message dans la base !

Saisie et Enregistrement d'un message dans la base

Il se peut que ces pages vous paraissent complexes à comprendre. Mais n'oubliez pas qu'elles ne constituent qu'une pierre à l'édifice de notre application. Certaines variables peuvent peut être vous surprendre, mais tout sera plus clair lorsque vous aurez la totalité du code sous les yeux.

Nous allons utiliser 2 fichiers distincts : saisie_message.asp et enregistre.asp .

1) saisie_message.asp : Il va nous servir à saisir un message en vérifiant si il s'agit d'un nouveau sujet, ou d'une réponse.
Il faut aussi vérifier la page d'origine du message, afin de faciliter le classement
ulterieur du message. Nous crééons donc un formulaire dans lequel l'utilisateur
va saisir des informations. Le code documenté se trouve dans le fichier "forum"
que vous devez télécharger. Voici ce que vous devez obtenir :



2) enregistre.asp : Il s'agit du fichier qui va enregistrer le message dans la base. Il va bien sur effectuer une série d'opétaions comme la récupération des données et le traitement de ces dernières, afin de les enregistrer correctement dans notre base. Remarques concernant le traitement avant insertion: Pour chaque champ, on REMPLACE tous les ' par ' ' (en fait deux '). Sinon, les chaines contenant les requêtes SQL seront faussées.
On REMPLACE aussi les < et les > afin de ne pas interpreter du code HTML et
ASP. En effet, il serait alors impossible d'écrire des exemples de code dans
nos messages !!! Pour le champ sujet, si l'auteur ne rempli pas le champ, on
le rempli pour lui en mettant "Divers". Pour le champ auteur, si ce dernier est
vide, on le remplace par "Illustre inconnu". Pour le champ texte, on remplace
les sauts de lignes par une balise. Cela, afin de respecter les retours la ligne. Pour le champ ladate, il est utile de lui faire un traitement afin de l'enregistrer sous la norme française (JJ/AA)

Remarques concernant la procedure d'enregistrement :

Il faut créer un identifiant pour le message (identifiant unique nommé id, qui
est un clef primaire). Pour cela, on selectione grace à une requête SQL, le
dernier ID, le plus grand, et on lui ajoute 1 . Si c'est un nouveau message,
on crée un nouveau groupe. le mot groupe désigne donc un groupe de message ayant le même sujet. On prend donc le plus grand (grâce à une requête SQL) et on lui ajoute 1. Notez aussi que famille désigne la position du message dans le groupe (cela nous sera utile pour créer le décalage lors de l'affichage) On calcule
ensuite l'ordre de classement du message : l'ordre est égal au groupe+id+famille.
Ainsi, le classement sera toujours effectué correctement. Enfin, nous utilisons
une requête SQL toute simple pour enregistrer notre message correctement formaté et vérifié (avec INSERT INTO...).
Voici ce que vous devez obtenir :



Nous pouvons passer maintenant à la prochaine étape : l'affichage de la liste des messages !

Affichage de la liste des messages

Maintenant que nous savons saisir et enregistrer des messages dans notre base, nous allons voir comment afficher la liste des messages, en soignant le lisibilité.

liste.asp :

Pour cela, partons du principe que chaque nouveau groupe sera matérialisé par une enveloppe comme cela : . Les réponses à ce groupe seront alors matérialisées avec ceci : , ce qui traduit bien une réponse à la question ; un message sur le même sujet. Pour accroître la lisibilité, nous allons décaler les réponses sur la droite. Nous comparons aussi la date du message avec la date du jour. Si les deux valeurs sont identiques, alors on affiche une image pour signaler que le message est du jour . Enfin, pour faciliter la lecture de la page en cours, nous affichons le nombre de pages disponibles sur le forum, en mettant en gras et dans une police supérieure la page active, c'est à dire la page sur laquelle nous nous trouvons.

Au début du fichier, vous trouverez un petit traitement. Il s'agit d'une astuce qui permet d'une part de revenir à la derniere page vue (c'est à dire que si vous désirez lire un message de la page 30, lorsque vous cliquerez sur le bouton liste, vous reviendre à la page 30 et non pas à la première page du forum). D'autre part, on récupère ici deux variables qui sont le nombre de pages du forum, ainsi que la plus grande. Cela nous permettra d'utiliser ces données pour enregistrer un message. En effet, fixons le nombre de message par page à 11, pour une bonne lisibilité. Dans le fichier enregistré, si le nombre de messages de la page dépasse 11, on créé alors une nouvelle page, en affectant un numéro de page supérieur, au nouveau message. Nous transmettons des données dans les liens. Cela va nous permettre de placer un message, lors de l'enregistrement ou bien sur de le lire. Par exemple, si vous survolez avec la souris le bouton "Nouveau message" ou bien un message quelconque, vous pouvez voir dans la barre d'information (au bas du navigateur) les données transmises. Nous utilisons une requête toute simple, comprenant un SELECT, pour afficher les message selon un ordre (ORDER BY) qui est orchestré par groupe et class. Voici ce que vous devez obtenir :



Passons maintenant à l'affichage d'un message

Affichage d'un message
Lorsque vous vous trouvez dans la liste des messages, vous ne voyez que les titres de ces derniers. Pour afficher le corps du message, nous cliquons donc sur le titre désiré. Le message aparait alors, et nous avons la possibilité d'y répondre ou bien de retourner à liste des messages, à la page où nous l'avons quittée.

affiche_message.asp :
Afin de construire notre requête SQL pour afficher notre message, il convient de récuperer l'ID, le groupe et la famille du message sur lequel nous avons cliqué. Les valeurs transmises sont récupérée par un request.querystring.

Ainsi, les données transmises sont : class, id, groupe, famille et lapage. Notez que la requête SQL utilise seulement ID pour afficher le message. Mais il faut penser que l'utilisateur peut répondre directement à ce message en cliquant sur "Répondre" qui va le conduire sue la page nommée saisi_message.asp qui a besoin de ces valeurs (class, groupe...) pour le bon enregistrement du message. Enfin, grâce à une autre requête SQL, nous affichons, en bas du message, la liste des messages du même groupe, c'est à dire du même sujet. Cela permet à l'utilisateur de lire les messages sur ce sujet, sans repasser par la liste générale des messages. Voici ce que vous devez obtenir :


Note
Avez vous trouve cet article utile?

Articles lies
Comment créer un admin AMX ?
Comment créer un admin Adminmod ?
Comment télécharger un fichier sous linux?
Comment interdire un domaine d'envoyer des mails sur votre serveur ?
Comment créer un nouveau site sur votre serveur Cobalt ?