2010-07-27 13 views
0

Je réalise qu'il s'agit en quelque sorte d'une question abstraite qui a plusieurs réponses, mais je ne sais pas par où commencer. Je souhaite avoir une zone de commentaires distincte pour chacun des articles de mon blog. Devrais-je simplement mettre en place une table différente pour les commentaires pour chaque entrée manuellement chaque fois que je mets à jour le code pour inclure la dernière entrée?Qu'est-ce qu'un moyen efficace de coder des zones de commentaire séparées?

Répondre

2

Créer une nouvelle table pour les commentaires avec une structure similaire à (bien sûr vous pouvez le personnaliser à vos besoins):


Comments 
    id INT NOT NULL auto_increment, 
    blog_id INT NOT NULL, 
    author_id INT NOT NULL DEFAULT 0, 
    comment text NOT NULL, 
    added_date DATETIME NOT NULL 

Le author_id est lié à la table des utilisateurs pour les utilisateurs connectés, 0 pour un utilisateur anonyme. Tout le reste devrait être explicite, j'espère.

+0

Est-ce que 'blog_id' ne devrait pas être' post_id' ou quelque chose? > Je veux avoir une zone de commentaires séparée pour chacun de mes ** billets de blog ** – Svish

+0

Ma réponse était juste une configuration lâche. Comme je l'ai dit, cela devrait être explicite. Si vous avez configuré vos blogs en tant que "posts", alors oui, ce serait post_id. –

0

Je ne suis pas sûr de ce que vous voulez dire ... mais il semble que vous vouliez avoir des commentaires spécifiques à chaque article. Si c'est le cas, créez simplement un champ dans la table des commentaires pour "post_id" ou quelque chose de similaire. Ensuite, sur chaque page de publication, utilisez simplement une instruction SELECT pour récupérer des commentaires pour ce post_id particulier.

0

Il suffit d'avoir une table de base de données stockant l'ID poste dans l'un des champs. Quelque chose de semblable à ce qui suit:

CREATE TABLE blog_comments (
    id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    author_id INT(10) UNSIGNED NOT NULL DEFAULT '0', 
    post_id INT(10) UNSIGNED NOT NULL, 
    comment TEXT NOT NULL, 
    added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
); 

Ensuite, vous pouvez simplement interroger pour poster des commentaires comme ainsi:

$pid = 13; // or whatever your post ID is; could be a $_GET value 
$sql = "SELECT * FROM comments WHERE post_id = '$pid' ORDER BY added_on DESC"; 

Bien sûr, assurez-vous de désinfecter la requête ci-dessus, que vous ne voulez pas un passant ce qu'ils se sentent pour la valeur de $pid. Vous devez vous assurer que c'est un nombre, et un nombre seulement.

+0

Par exemple '$ pid = (int) $ _GET ['pid'];' – Svish

+0

Comment puis-je concevoir mon formulaire html pour envoyer une valeur pour ma variable d'identifiant de publication que je choisis? Je sais que je dois faire la méthode = "get" mais je ne veux pas qu'une zone de texte soit créée, je veux passer un nombre ou une variable qui contient un nombre. – Jimmy

+0

Avec un champ caché. '' où '$ post-> id' est l'endroit où vous souhaitez répercuter l'ID de poste réel en utilisant la méthode que vous utilisez déjà pour extraire les données de la base de données. –