Afficher Des Commentaires
Résolu
BuddyLove_x52
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
BuddyLove_x52 Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
BuddyLove_x52 Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
Salut tous le monde ! Et oui c'est encore moi et j'aurais encore besoin de votre aide... J'aimerais me débrouiller seul, et après plusieurs heures de recherche et d'essais j'avoue que je craque ! Je fais donc appelle a vous pour m'aider.
Voici mon problème j'aimerai créer un blog avec des commentaires mais le problème c'est que j'arrive pas a afficher les commentaires correctement... Les commentaires vont bien dans la base de données mais quand je veut afficher les commentaires c'est le même pseudo qui est afficher pour tous les commentaires même si il y a plusieurs utilisateur qui ont écrit des commentaires...
Voici mon code :
Index :
Commentaire :
Test51 :
Voici mon problème j'aimerai créer un blog avec des commentaires mais le problème c'est que j'arrive pas a afficher les commentaires correctement... Les commentaires vont bien dans la base de données mais quand je veut afficher les commentaires c'est le même pseudo qui est afficher pour tous les commentaires même si il y a plusieurs utilisateur qui ont écrit des commentaires...
Voici mon code :
Index :
<!DOCTYPE html> <meta charset='utf-8'> <?php session_start(); ?> <html> <head> <meta charset="utf-8" /> <title>Mon blog</title> <link href="style.css" rel="stylesheet" /> </head> <body> <h1>Mon super blog !</h1> <img src="elisa.jpg"><br /> <a href="commentaire.php">Commenter</a> </html> <?php if(isset($_SESSION['pseudo'])) {}else{ header('Location:login.php'); } ?>
Commentaire :
<?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=blablabla', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Insertion du message à l'aide d'une requête préparée $req = $bdd->prepare('INSERT INTO user(message) VALUES(?)'); $req->execute(array($_POST['message'])); // Redirection du visiteur vers la page du minichat header('Location: test51.php'); ?>
Test51 :
<?php session_start(); if(isset($_SESSION['pseudo'])) ?> <meta charset="utf-8" /> <title>Mini-chat</title> </head> <style> form { text-align:center; } </style> <body> <form action="commentaire.php" method="post"> <p> <label for="message">Message</label> : <input type="text" name="message" id="message" /><br /> <input type="submit" value="Envoyer" /> </p> </form> <?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=blablabla', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Récupération des 10 derniers messages $reponse = $bdd->query('SELECT message FROM user ORDER BY ID DESC LIMIT 0, 10'); // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars) while ($donnees = $reponse->fetch()) { echo '<p><strong>' .$_SESSION['pseudo']. '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>'; } $reponse->closeCursor(); ?> <?php if(isset($_SESSION['pseudo'])) {}else{ header('Location:login.php'); } ?> </body> </html>
A voir également:
- Afficher Des Commentaires
- Afficher les commentaires word - Guide
- Afficher appdata - Guide
- Afficher taille dossier windows - Guide
- Windows 11 afficher d'autres options - Guide
- Afficher mot de passe wifi android - Guide
8 réponses
Bonjour,
Le problème est ici:
Tu affiches le pseudo de la personne qui est connectée sur sa session. Tu devrais plutôt mettre:
en remplaçant bien sûr nom_de_la_colonne_des_utilisateurs_ici par le nom de la colonne des utilisateurs dans ta base de données.
Le problème est ici:
echo '<p><strong>' .$_SESSION['pseudo']. '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
Tu affiches le pseudo de la personne qui est connectée sur sa session. Tu devrais plutôt mettre:
echo '<p><strong>' .$donnees['nom_de_la_colonne_des_utilisateurs_ici']. '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
en remplaçant bien sûr nom_de_la_colonne_des_utilisateurs_ici par le nom de la colonne des utilisateurs dans ta base de données.
Il y a une dernière modification à faire. Actuellement lorsque tu fais ta requête, tu ne sélectionnes que les valeurs de la colonne "message", mais en réalité tu ne veux pas afficher que ces résultats là, tu veux aussi afficher les pseudo. Tu peux demander à la requête de tout sélectionner ce qu'il y a dans ta table avec l'astérix comme suit:
Ça devrait régler ton problème ;)
$reponse = $bdd->query('SELECT * FROM user ORDER BY ID DESC LIMIT 0, 10');
Ça devrait régler ton problème ;)
Ah ok, il s'agit d'un autre problème alors, cette fois au niveau de ton insert. Ici, tu ne fais qu'insérer le message de l'utilisateur dans la bdd, tu n'insères pas son pseudo.
Remplace les deux lignes ci-dessus par celles-ci:
Remplace nom_de_la_colonne_user_ici par le nom de ta colonne user dans ta bdd.
$req = $bdd->prepare('INSERT INTO user(message) VALUES(?)'); $req->execute(array($_POST['message']));
Remplace les deux lignes ci-dessus par celles-ci:
$req = $bdd->prepare('INSERT INTO user(nom_de_la_colonne_user_ici, message) VALUES(:pseudo, :message)'); $req->execute(array('pseudo' => $_SESSION['pseudo'], 'message' => $_POST['message']));
Remplace nom_de_la_colonne_user_ici par le nom de ta colonne user dans ta bdd.
Montre-moi le code où tu attribues une valeur à $_SESSION['pseudo'] (le code où la personne entre son nom d'utilisateur et son mot de passe).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Qu'es que que je ferais sans toi GrifOli ? lol.
Maintenant sa ne m'affiche plus aucun pseudo mais sa m'affiche les commentaires. Je me suis pourtant bien co a ma BD et j'ai bien apeller l'username et les commentaires , je pense que je doit modifier mon formulaire non ? Ou créer une session id ?
Maintenant sa ne m'affiche plus aucun pseudo mais sa m'affiche les commentaires. Je me suis pourtant bien co a ma BD et j'ai bien apeller l'username et les commentaires , je pense que je doit modifier mon formulaire non ? Ou créer une session id ?
Cela ne marche toujours pas, quand j'écrit le commentaire il s'enrgistre bien dans ma bdd mais sans le pseudo, comment je pourrais faire un "insert" mais en invisible ? Est-ce possible d'inséré le pseudo et le commentaire dans la base de donnés sans être obliger de retaper son pseudo d'utilisateur a chaque fois ?
Ou a marche enfin ! J'avais penser a faire comme tu as fais, mais moi je faisais juste :
par contre ; quand le nom s'enrgistre dans la bdd il a pour nom vv.. Est-ce moi qui ait pu faire une erreur de frappe dans une de mes pages ?
$req = $bdd->prepare('INSERT INTO user(username) VALUES(:pseudo, :message)'); $req->execute(array($_SESSION['pseudo'], $_POST['message']));
par contre ; quand le nom s'enrgistre dans la bdd il a pour nom vv.. Est-ce moi qui ait pu faire une erreur de frappe dans une de mes pages ?