Création d'un forum de discussion
La conception des tables de base de données
Vous devriez maintenant avoir deux tables vides, en attendant une entrée. Dans la section suivante, vous allez créer les formulaires d'entrée pour l'ajout d'un sujet et d'un poste.
Création des formulaires et des scripts d'entrée
Listing 14.1 montre la forme d'une nouvelle création de sujet, qui comprend un espace pour le premier message du sujet.
Liste 14.1 Formulaire d'ajout d'un sujet
Il semble assez simple les trois champs indiqués sous la forme que vous pouvez voir dans la figure 14.12, sont tout ce que vous devez remplir les deux tableaux?; votre script et base de données peuvent remplir le reste. Sauvegarde 14.1 quelque chose comme addtopic.html et le mettre dans la racine de votre document de serveur Web afin que vous puissiez suivre.
Figure 14.12. Le formulaire de création de sujet.
Listing 14.2 crée le script pour ajouter ces enregistrements à la table.
Liste 14.2 Script pour ajouter une rubrique
Les lignes 3? 7 chèque pour les trois champs obligatoires dont nous avons besoin pour remplir les deux tableaux. Si l'un de ces champs n'est pas présent, l'utilisateur est redirigé vers la forme originale.
Les lignes 10? 12 forment la connexion de base de données, ce qui devrait vous être familier maintenant. Les lignes 15? 17 créer et d'insérer la première requête, qui ajoute le sujet à la table forum_topics. Notez que le premier champ est laissé vide, de sorte que le numéro automatiquement incrémenté est ajouté par le système. De même, la fonction maintenant () est utilisée pour horodater le record avec l'heure actuelle. Les autres champs de l'enregistrement sont effectuées à l'aide des valeurs de la forme.
Les lignes 23? 25 créer et insérer la deuxième requête, en utilisant à nouveau un mélange de l'information connue et fournie par le système. Ligne 28 crée simplement un message pour l'utilisateur, et le reste du script complète l'affichage.
Sélectionner cette annonce comme do_addtopic.php? Le nom de l'action dans le script précédent? Et le placer dans la racine du document de votre serveur Web. Remplissez le formulaire et le soumettre, et vous devriez voir le message « Nouveau sujet Ajouté ». Les figures 14.13 et 14.14 montrent la séquence des événements.
Figure 14.13. Ajout d'un sujet et premier message.
Figure 14.14. plus réussie d'un sujet et premier post.
Affichage de la liste des sujets
Maintenant que vous avez un sujet et au moins un poste dans votre base de données, vous pouvez afficher ces informations et laisser les gens ajouter de nouveaux sujets ou répondre à ceux qui existent déjà. Dans le Listing 14.3, nous faisons un pas en arrière et créer une page liste des sujets. Cette page affiche les informations de base de chaque sujet et fournir à l'utilisateur un lien pour ajouter un nouveau sujet; vous avez déjà la forme et un script pour cela. Ce script serait en fait une page d'entrée pour votre forum.
Liste 14.3 Sujet Listing Script
Bien que Listing 14.3 ressemble à beaucoup de code, il est en fait beaucoup de petits concepts simples que vous avez déjà rencontrés. Les lignes 3? 5 font la connexion à la base de données, en vue de la délivrance des requêtes. Les lignes 8? 10 montrent la première de ces requêtes, et celui-ci en particulier sélectionne toutes les informations le sujet, dans l'ordre par date décroissante. En d'autres termes, afficher le sujet qui a été créé en dernier (le plus récent sujet) en haut de la liste. Dans la requête, notez l'utilisation de la fonction date_format () pour créer un affichage de la date beaucoup plus agréable que celui stocké dans la base de données.
Ligne 12 vérifie la présence de tous les enregistrements renvoyés par la requête. Si aucun enregistrement sont renvoyés, et donc pas de sujets sont dans la table, vous voulez dire à l'utilisateur. La ligne 14 crée ce message. À ce stade, si aucun sujet existait, le script éclaterait de si. d'autre construire et être plus avec l'action suivante se passe à la ligne 51, qui est le début de l'HTML statique. Si le script a pris fin, le message créé à la ligne 14 serait imprimé en ligne 57, et vous verrez quelque chose comme la figure 14,15.
Figure 14.15. Aucun sujet n'a trouvé.
La boucle tandis que dans la ligne 24 indique que, si il y a des éléments à extraire de l'ensemble de résultats, extraire chaque ligne dans un tableau appelé $ topic_info. et utiliser les noms des champs comme l'élément de tableau pour affecter la valeur à une nouvelle variable. Ainsi, le premier élément que nous essayons d'extraire est le champ topic_id, sur la ligne 25. Nous avons fixé la valeur de topic_id $ à $ topic_info [ « topic_id »]. ce qui signifie que nous obtenons une valeur locale pour topic_id $ à partir d'un tableau appelé topic_info de $. contenant une fente appelée topic_id. Continuez à faire cela pour la TOPIC_TITLE de $. topic_create_time de $. et les variables $ topic_owner dans les lignes 26? 28. La fonction stripslashes () supprime tous les caractères d'échappement qui ont été entrées dans la table au moment de l'insertion de la fiche.
Figure 14.16. Les sujets sont disponibles.
Si vous l'avez fait passé le chèque pour un topic_id. Les lignes 9? 11 font la connexion à la base de données, en vue de la délivrance des requêtes. Les lignes 14? 17 montrent la première de ces requêtes, et celui-ci est utilisé pour valider que le topic_id envoyé dans la chaîne de requête est en fait une entrée valide, en sélectionnant le TOPIC_TITLE associé au sujet en question. Si la validation échoue le test en ligne 19, un message est créé dans les lignes 21? 22, et le script éclate de si. déclaration d'autre et se termine par l'impression HTML. Cette sortie ressemble à la figure 14,17.
Figure 14.17. Sujet non valide sélectionné.
Dans la ligne 53, nous continuons la création de la chaîne de display_block de $, en utilisant l'opérateur de concaténation (. =) Pour vous assurer que cette chaîne est clouée à la fin de la chaîne, nous avons créé jusqu'à présent. Dans la ligne 54, nous créons la colonne de tableau HTML pour afficher l'auteur et l'heure création du poste. La deuxième ligne de tableau HTML, sur la ligne 56, indique le texte du message ainsi qu'un lien pour répondre au poste. Sur la ligne 60 nous sortir de la boucle while et en ligne 63 ajouter le dernier bit à la chaîne de display_block de $, pour fermer la table. Les lignes restantes imprimer le code HTML de la page, y compris la valeur de la chaîne de display_block de $.
Un sujet d'un poste est ennuyeux, donc Finissons cette heure en créant le script pour ajouter un message à un sujet.
Liste 14.5 Script pour ajouter à un sujet Réponses
Les lignes 3? 5 font la connexion de base de données au début du script. Bien que vous effectuez plusieurs tâches en fonction de l'état de la forme (que ce soit être présentés ou soumis), les deux conditions nécessitent une interaction de base de données à un moment donné.
Ligne 8 vérifie si le formulaire est soumis. Si la valeur de $ _POST [op] n'est pas "addpost". la forme n'a pas encore été soumis. Par conséquent, il doit être démontré. Avant de montrer la forme, cependant, vous devez vérifier que un élément nécessaire; lignes 10? 13 vérifier l'existence d'une valeur pour post_id dans la chaîne de requête GET. Si une valeur $ _GET [post_id] n'existe pas, l'utilisateur est redirigé vers la page de liste des sujets.
Si vous l'avez fait passé le chèque pour un topic_id. lignes 17 20 émettre une requête complexe prospectifs qui obtient le topic_id et TOPIC_TITLE de la table forum_topics, basée sur la seule valeur que vous savez: la valeur de la post_id. Cette requête valide à la fois l'existence du poste et obtient des informations dont vous aurez besoin plus tard dans le script. Les lignes 21? 24 agissent sur les résultats de ce test de validité, rediriger à nouveau l'utilisateur à la page topiclist.php.
Si le poste est valide, vous extrayez la valeur de topic_id et TOPIC_TITLE dans les lignes 27? 29, en utilisant à nouveau pour enlever les caractères d'échappement stripslashes (). Ensuite, l'ensemble du formulaire pour ajouter un message est imprimé à l'écran, et que ce soit pour ce script jusqu'à ce que le bouton de soumission de formulaire est pressé. Dans la forme, vous voyez que l'action est _SERVER $ [PHP_SELF] sur la ligne 38, ce qui indique que ce script sera rappelé en action. Deux champs cachés sont présents, dans les lignes 46 et 47, qui contiennent les informations qui doivent être transmis le long de la prochaine itération du script.
Se déplaçant le long de la ligne 55, ce bloc de code est exécuté lorsque le script est rechargé et la valeur de $ _POST [op] (l'un des champs cachés sous la forme) est « addpost ». Ce bloc vérifie la présence de tous les champs obligatoires du formulaire (lignes 57? 61), puis, si elles sont toutes présentes, les questions de la requête pour ajouter le poste à la base de données (lignes 64? 66). Après le poste est ajouté à la base de données, la page showtopic.php est rafraîchie (lignes 69? 70), montrant nouveau poste de l'utilisateur le long de la ligne.