Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Darkstevy, Mardy_Dev
Ce topic a été résolu
Auteur Sujet: Récupérer le pseudo et le commentaire poste par un membre

Mardy_Dev

Messages: 8

 
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
Publicité

Jerem971

Messages: 888

Hello @Mardy_Dev,

Petite question : quel est le chapitre ou tu as lu les jointures entre les tables ?

Mardy_Dev

Messages: 8

Salut!
 @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
mail

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

Messages: 8

Concernant le chapitre sur les jointures,source: @Concevez votre site web avec PHP et MSQL de @Mateo21 ET le channel de @PrimFx 
Le chapitre : Jointure Avec SQL

Darkstevy

Messages: 13

donne nous tes deux table

Mardy_Dev

Messages: 8

Bonjour/Bonsoir 

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

Messages: 13

Salut @Mardy_Dev

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

Messages: 8

Merci @Darkstevy

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

Messages: 13

Normal il n'y a aucune boucle
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'];
}

bilbil

Messages: 1


Mardy_Dev

Messages: 8

Bonjour,Bonsoir

@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

Messages: 13

@Mardy_Dev et si tu écrivais ORDER BY MaTableMembre.id ? 

Mardy_Dev

Messages: 8

Yes! C'était une bonne idée! 
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

Messages: 13

@Mardy_Dev  si je ne me trompe pas, c'est normal car quand tu détruit la Session on ne peux savoir de quel session tu parle. D'ailleurs ce ne serait pas bon de pouvoir se connecter sur plusieurs session du même site sur un même navigateur. Pour tes test je te propose donc de te connecter sur session 1 avec par exemple Chrome et session 2 avec par exemple Edge et comme ça tout fonctionnera. 

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.
Publicité

Mardy_Dev

Messages: 8

D'accord merci @Darkstevy !


Vous devez vous connecter ou créer un compte pour poster une réponse