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

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']; ?>&amp;categorie_id=<?php echo $billet['categorie_id']; ?>&amp;article_id=<?php echo $billet['article_id']; ?>&amp;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>
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
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>
Merci d'avance pour votre aide.