Récupérer le pseudo et le commentaire poste par un membre
- Accueil
- Forum
- Programmation
- PHP
- Récupérer le pseudo et le commentaire poste par un membre
Mardy_Dev Le 4 octobre 2019 à 06:57 (Édité le 21 octobre 2019 à 20:35)
Bonjour Bonsoir!
Je retourne à mon blog pour l'améliorer.
Je voulais autoriser seulement un membre a poster un commentaire sur un article,pour cela j'ai ->
1) ajouté un champ nomme id_membre dans la table commentaire
2) vérifié si l'utilisateur est connecte (Existence des variables $_SESSION) avant le post d'un commentaire.
Jusque-là c'est OK.
Maintenant je veux écrire la requête de jointure entre les tables membre et commentaire pour récupérer le Pseudo du membre et Son commentaire.
J’ai
lus le chapitre sur les jointures entres les tables, mais je n'arrive pas à construire la requête.Je compte sur vos aides .Merci d'avance.
@Mardy_Dev
Profil introuvable Le 4 octobre 2019 à 16:55 (Édité le 1 janvier 1970 à 01:00)
Petite question : quel est le chapitre ou tu as lu les jointures entre les tables ?
Mardy_Dev Le 4 octobre 2019 à 18:25 (Édité le 1 janvier 1970 à 01:00)
@Jerem971
Alors l'idée c'est de relier les deux tables : Table commentaire & Table membre (✅)
Voici la structure des deux tables (Les champs):
T_commentaire
Id
Id_membre
Id_article
commentaire
T_membre
id
pseudo
pass
Maitenant je veux récupérer le Pseudo d'un membre ainsi que le commentaire posté par ce dernier.
Je sais pas comment faire la requête de récupération.
Mardy_Dev Le 4 octobre 2019 à 18:30 (Édité le 4 octobre 2019 à 18:38)
Mardy_Dev Le 12 octobre 2019 à 04:02 (Édité le 12 octobre 2019 à 04:04)
J'ai réussi à construire la requête qui récupère le pseudo du membre ainsi que son commentaire sur un article.Voici comment j'ai procédé:
$req=" SELECT m.pseudo AS pseudonyme,c.commentaire AS commentaire
FROM membres AS m INNER JOIN commentaire AS c ON m.id=id_membre";
// Une boucle pour afficher les résultats
While($resultat=$req->fetch()){
Echo $resultat['pseudonyme'];
Echo $resultat['commentaire'];
}
Jusque-là OK.Mais le problème est que quand j'ajoute un order by id desc( Histoire d'afficher le dernier comment aire en premier) à la requête ça plante.Je sais pas ou peut être je ne comprend pas le pourquoi de ce plantage.
Alors je compte je sur vos aides et explications.@Mardy_Dev
Darkstevy Le 12 octobre 2019 à 14:58 (Édité le 12 octobre 2019 à 15:08)
essaie ceci, je te laisse le soin de remplacer ' * ' et je te conseille de créé un id-user dans ta table commentaire qui sera lié a l'id du membre comme ceci :
$req = "SELECT * FROM MaTableMembres INNER JOIN MaTableCommentaire ON MaTableMembre.id = MaTableCommentaire.id_user ORDER BY id DESC";
Mardy_Dev Le 12 octobre 2019 à 20:58 (Édité le 12 octobre 2019 à 20:59)
J'ai essayé ton code mais ça m'affiche seulement un commentaire mais pas tous les commentaires et les pseudo.
Voici ce que j'ai ajouté après ton code pour l'affichage des commentaires et du pseudo des membres:
$résultat=$req->fetch();
Echo $résultat['Pseudonyme']; // Ici le champ Pseudonyme de la table membre
Echo $résultat['commentaire']; // Ici le champ commentaire de la table commentaire
Alors ça me liste pas tous les commentaires.Qu'est-ce-qui ne va pas?
Darkstevy Le 13 octobre 2019 à 14:15 (Édité le 13 octobre 2019 à 14:25)
while($r = $req->fetch()) { ?>
<div><?=$r=['ColoneTablePseudo']; ?><div><br>
<div><?=$r=['ColoneTableCommentaire']; ?><div>
<?php
}
?>
ou
while($r = $req->fetch()) {
echo $r=['ColoneTablePseudo'];
echo $r=['ColoneTableCommentaire'];
}
Mardy_Dev Le 20 octobre 2019 à 22:47 (Édité le 1 janvier 1970 à 01:00)
@Darkstevy j'ai essayé mais ça enlève les commentaires.En fait je pense qu'on peut pas faire un ORDER BY id dans cette requête puisque selon ma logique, MYSQL ne sait pas si elle doit faire un ORDER BY de L' Id qui se trouve dans la table commentaire OU de L'Id qui se trouve dans la table membre.Mais si y'a un autre moyen de régler cela alors je ne l'ai pas encore trouvé.
Darkstevy Le 21 octobre 2019 à 11:18 (Édité le 1 janvier 1970 à 01:00)
Mardy_Dev Le 21 octobre 2019 à 16:30 (Édité le 1 janvier 1970 à 01:00)
En fait au lieu de ORDER BY MatableMembre.id J'ai fais un ORDER BY Matablecommentaire.id, et la magie, ça a marché😀
Alors @Darkstevy je te remercie pour ton idée,mais avant que je clique sur Résolu! Une dernière question un peu curieuse:
Je constate que quand j'ouvre deux comptes dans mon navigateur alors chacun des comptes dans un onglet -> Compte 1 | Compte 2 ,quand je déconnecte le compte 1 et ensuite je me rend sur le compte 2 dans l'autre onglet,Je rafraîchis la page alors le compte 2 est lui aussi déconnecté.Est-ce normal ça?
Darkstevy Le 21 octobre 2019 à 16:41 (Édité le 1 janvier 1970 à 01:00)
Et prend habitude dans tes requête comme celle ci de nommer ta table suivi de la colonne pour rester précis et éviter des erreurs.