Bonjour a tous je suis entrain de créer un blog et je suis bloqué sur un code. lorsque je poste un commentaire sur un billet le commentaire s affiche sur tous les billets ! je suis perdu voici mon code :
<?php
session_start();
if (isset($_SESSION['id'])) {
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Bloggy </title>
<link rel="stylesheet" type="text/css" href="inscription.css">
</head>
<body>
<div id="container">
<?php
include('header.html');
?>
<section>
<article>
<?php
try{
$bdd=new PDO('mysql:host=localhost;dbname=test','root','root');
$bdd->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e){
die('Erreur connexion base de donnée'.$e->getMessage());
}
$req=$bdd->query('SELECT billets.titre,billets.date_creation,billets.contenu,user.pseudo,billets.id
FROM billets,user
WHERE user.id = billets.id_user
ORDER BY billets.id
DESC');
while ($donnees=$req->fetch())
{
?>
<div id="billet">
<div id="titreBillet">
<h2><?php echo htmlspecialchars($donnees['titre']);?></h2>
<div>
<em>Posté à <?php echo $donnees['date_creation'];?> par
<?php echo htmlspecialchars($donnees['pseudo']); ?></em>
</div>
</div>
<div id="txt">
<?php
echo htmlspecialchars($donnees['contenu']);
?>
</div>
<div id="coms">
<form method="post" action="addCom.php?billet=<?php echo $donnees['id'];?>">
<table>
<tbody>
<tr>
<td>
<textarea style="resize:none;width:800px;" name="comPost"></textarea>
</td>
<td>
<input type="submit" style="font-size:1.5em;">
</td>
</tr>
</tbody>
</table>
</form>
<?php
$req1=$bdd->query('SELECT user.pseudo, commentaires.commentaire, commentaires.date_com
FROM user,billets,commentaires
WHERE commentaires.id_user=user.id
AND commentaires.id_billet=billets.id
ORDER BY commentaires.id
DESC');
while ($donnees1=$req1->fetch()) {
?>
<div id="comsRep">
<em>Posté a <?php echo $donnees1['date_com'];?> par <?php echo $donnees1['pseudo'];?></em>
<p><?php echo $donnees1['commentaire'].'<br>';?></p>
</div>
<?php
}
?>
</div>
</div>
<?php
}
?>
</article>
</section>
</div>
</body>
</html>
<?php }else{
header('location:inscription.php');
}?>
le code de la page addCom.php :
<?php
try{
$bdd= new PDO('mysql:host=localhost;dbname=test;charset=utf8','root','root');
$bdd->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e){
die('Erreur connexion a la base de donnée'.$e->getMessage());
}
session_start();
$id_user = $_SESSION['id'];
$id_billet = $_GET['billet'];
$req=$bdd->prepare('INSERT INTO commentaires(commentaire,id_billet,id_user,date_com)
VALUES (?,?,?,NOW())');
$req->execute(array($_POST['comPost'],$id_billet,$id_user));
header('location:blog.php?billet='.$id_billet);
?>
il faut liée un article a un commentaire banane ! sinon tu sais comment que ce commentaire apartien à cette article ?
PS: enleve les die et autre catche merci !
D'accord je veux bien (comme si j'y avais pas deja pensé ...)
Quelle est la facon de procéder dans ce cas la !!
jointure ?
commentaire.id_billet=billets.id c est la que j'ai lié l 'article au commentaire
SELECT user.pseudo, commentaires.commentaire, commentaires.date_com
FROM user,billets,commentaires
WHERE commentaires.id_user=user.id
AND commentaires.id_billet=billets.id
ORDER BY commentaires.id
DESC
À quel moment indiques-tu de ne récupérer que les commmentaire dont l'id_billet est celui du billet affiché ? Jamais. Tu dois donc ajouter une condition.
Je te conseille revoir tes jointures, c'est du SQL à l'ancienne ici
Bonjour, ca ne m aide pas du tout merci
Le 13 février 2016 à 18:14:39 jas75 a écrit :
Bonjour, ca ne m aide pas du tout merci
On te dis qu'il manque quelque chose banane
regarde ta table commentaires la clef étrangère !
ecoutez je suis a deux doigts de lancer mon ordinateur par la fenetre, il est évident que je n'arrive pas a trouver la reponse par moi meme, si vous pouviez me la donner au lieu de me lancer des enigmes depuis plus d'une heure ce serait fort sympathique de votre part merci
Le 13 février 2016 à 18:33:46 jas75 a écrit :
ecoutez je suis a deux doigts de lancer mon ordinateur par la fenetre, il est évident que je n'arrive pas a trouver la reponse par moi meme, si vous pouviez me la donner au lieu de me lancer des enigmes depuis plus d'une heure ce serait fort sympathique de votre part merci
C'est n'est pas une énigme, mec. je ne sais pas si tu suis des cours ou si tu es autodidactes.
quoiqu'il en soit si tu ne vois pas le problèmes, tu peux remettre en question ta fonction de développeur.
Je t'invite à faire une pause et a revenir quand tu sera frais sur ton code.
et là si tu ne vois rien va suivre un cours sur le sql !
je n'ai pas a remettre en question ma fonction de développeur je suis actuellement en apprentissage ca me parait tout a fait normal au début de buter sur des choses qu'un pro pourrait paraitre evidente enfin bref je me retrouve a me justifier sur un forum de jeux video.
de base si je suis venu demander de l'aide sur un forum ce n'est pas pour qu on me dise de chercher l érreur par moi meme ou encore de remettre en question ma fonction de dev ... simplement pour me donner la réponse histoire que je comprenne l erreur et que je passe a la suite
Le 13 février 2016 à 18:46:16 jas75 a écrit :
je n'ai pas a remettre en question ma fonction de développeur je suis actuellement en apprentissage ca me parait tout a fait normal au début de buter sur des choses qu'un pro pourrait paraitre evidente enfin bref je me retrouve a me justifier sur un forum de jeux video.
de base si je suis venu demander de l'aide sur un forum ce n'est pas pour qu on me dise de chercher l érreur par moi meme ou encore de remettre en question ma fonction de dev ... simplement pour me donner la réponse histoire que je comprenne l erreur et que je passe a la suite
C'est pas une erreur de débutant ! C'est un problème de logique.
Et tu comprend même pas nos explication qui sont claire.
À quel moment indiques-tu de ne récupérer que les commentaire dont l'id_billet est celui du billet affiché ? Jamais. Tu dois donc ajouter une condition.
Je suis pas doué en français c'est claire quand même !
Surtout que tu as du avoir un cours là-dessus !
ça sera quoi quand tu devras utiliser un ORM ? et la POO ? Si tu bloque sur des problème aussi simple pose toi des questions ( parles-en autour de toi surtout)