Bonjour,
voilà quelques temps que je ne me suis pas connecté - raison professionnelle - et me voilà de retour avec un problème sur PHP que je ne maîtrise pas encore ...
Bon je m'explique. Je travaille sur un blog sur lequel je publie un article qui s'enregistre dans une base de données. Jusque là tous se passe bien.
J'ai la possibilité de commenter un article qui appartient à une catégorie (il en existe plusieurs dans ma base de données) - en m'enregistrant ou pas en tant qu'utilisateur dans ma base de données.
Lorsque je créer un seul article appartenant à une catégorie (obligatoire dans mon blog) et que je le commente tous fonctionne normalement. Par contre si j'écris un second article appartenant à la même catégorie et que je le commente, mes commentaires sont doublés à l'affichage sur ma page (uniquement à l'affichage sur ma page, pas dans ma base de données) - et ils sont triplés si j'écris un troisième article appartenant à la même catégorie et ainsi de suite
Pour information, je peux commenter un article depuis la page index de mon blog en cliquant sur un lien "commentaires" qui m'amène sur une page "commentaires.php" où je récupère les détails de l'article à commenter (catégorie, titre de l'article, etc) par un $_GET
Quelqu'un aurait une idée sur ce qui n va pas dans mon montage ?
Pour information, ci-dessous, les codes des pages pré-mentionnées :
La page "index.php" :
et voici ma page "commentaires.php" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <meta charset="utf-8"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>P2P_Blog</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="vue/blog/style.css" rel="stylesheet" type="text/css" /> </head> <body> <h1>Vous devez vous inscrire pour publier un <a href="register.php">article</a> !</h1> <h1>Ou vous disposez déjà d'un <a href="login.php">compte</a> !</h1> <p>Derniers articles du blog :</p> <?php foreach($billets as $billet) { ?> <div class="news"> <h3> <?php echo $billet['titre_article']; ?> <em>le <?php echo $billet['date_redaction_fr']; ?></em> - <?php echo $billet['pseudo']; ?> </h3> <p> <?php echo $billet['texte_article']; ?> <br /> <em><a href="vue/blog/commentaires.php?titre_article=<?php echo $billet['titre_article']; ?>&categorie_id=<?php echo $billet['categorie_id']; ?>&article_id=<?php echo $billet['article_id']; ?>&categorie=<?php echo $billet['nom']; ?>">Commentaires</a></em> </p> </div> <?php } ?> <p><em><a href="vue/blog/utilisateurs.php">page utilisateurs</a></em></p> <p><em><a href="vue/blog/categorie.php">page categories</a></em></p> <p><em><a href="vue/blog/article_detail.php">page article</a></em></p> </body> </html>
Merci d'avance pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
91
92
93 <?php session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Mon blog</title> <link href="style.css" rel="stylesheet" /> </head> <body> <h1>Commentaires sur les articles</h1> <p><a href="../../blog.php">Retour à la liste des billets</a></p> <?php include_once('../../modele/connexion_sql.php'); // Récupération de l'article $req = $bdd->prepare('SELECT *, DATE_FORMAT(categorie_article.date_redaction, \'%d/%m/%Y à %Hh%imin%ss\') AS date_redaction_fr FROM categorie_article WHERE titre_article = ?'); $req->execute(array($_GET['titre_article'])); $donnees = $req->fetch(); ?> <div class="news"> <h3> <?php echo htmlspecialchars($donnees['pseudo']); ?> <em>le <?php echo $donnees['date_redaction_fr']; ?></em> </h3> <p> <?php echo nl2br(htmlspecialchars($donnees['titre_article'])); ?> </p> </div> <h2>Commentaires</h2> <?php // Récupération des commentaires $reponse = $bdd->query( 'SELECT * , DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM commentaires_article INNER JOIN categorie_article ON commentaires_article.article_id = categorie_article.categorie_id INNER JOIN categorie ON commentaires_article.article_id = categorie.id_categorie WHERE commentaires_article.titre_article = "' . $_GET['titre_article'] . '"'); while ($donnees = $reponse->fetch()) { echo '<p><strong>' . htmlspecialchars($donnees['auteur']) . '</strong> : Le ' . htmlspecialchars($donnees['date_creation_fr']) . ' - ' . htmlspecialchars($donnees['texte_commentaire']) . '</p>'; } ?> <form action="" method="POST"> <?php if (isset($_GET['categorie']))?> <p><label> catégorie : </label><?php echo $_GET['categorie'] ?> <p><label> n° Catégorie : </label> <input type="text" name="article_id" value="<?php if(isset($_GET['categorie_id'])) echo $_GET['categorie_id']; ?>" placeholder="Numéro de Catégorie" /><p> <p><label> titre de l'article : </label> <input type="text" name="titre_article" value="<?php if(isset($_GET['titre_article'])) echo $_GET['titre_article']; ?>" placeholder="Titre de l'article" /><p> <p><label> Pseudo : </label> <input type="text" name="auteur" value="<?php if(isset($_SESSION['pseudo'])) echo $_SESSION['pseudo']; else echo 'Friendly user'; ?>"/><p> <p><label> Votre commentaire : </label> <textarea name="texte_commentaire" id="texte_commentaire">un texte par defaut ...</textarea></p> <p> <input type="submit"/></p> </form> <?php if (isset($_POST['titre_article']) AND isset($_POST['auteur']) AND (isset($_POST['texte_commentaire']))) { include_once('../../modele/connexion_sql.php'); $requete = $bdd->prepare('INSERT INTO commentaires_article(auteur, article_id, titre_article, texte_commentaire, date_creation) VALUES(?, ?, ?, ?, NOW())'); $requete->execute(array(htmlspecialchars($_POST['auteur']), htmlspecialchars($_POST['article_id']), htmlspecialchars($_POST['titre_article']), htmlspecialchars($_POST['texte_commentaire']))); } else { } ?> </body> </html>
Partager