Bonjour, imaginons que j'ai deux tables :
La table LIKES
Qui contient l'ID de la photo dans la table photos sous la forme "id_photo"
La table PHOTOS
qui a donc un id et qui possède l'username de la personne qui l'a posté ( posteur_username )
En gros quand on like une photo, ça crée une entrée dans la BDD likes ou ça rentre ton nom et l'id de la photo que tu as aimé.
Imaginons que je veuille afficher les "posteur_username" de toutes les photos que tu as aimé, j'ai essayé plusieurs méthodes ( un while dans un while, c'était bizarre ), mais je viens de tomber sur des liaisons de table.
Qu'est ce qui ne vas dans mon code ?
$lastPictures = $bdd->prepare("SELECT * FROM likes, photos WHERE photos.username = '$membre' AND likes.id_photo = photos.id");
$lastPictures->execute();
while ($lastPicturesID = $lastPictures->fetch(PDO::FETCH_OBJ)) {
echo "Test : ".$lastPicturesID->posteur_username;
}
Si quelqu'un pouvait m'expliquer, ça m'oterait une sacrée épine du pied, merci !
Effectivement, c´etait bien
WHERE likes.username
a la place.
Merci !
Bonsoir.
Pourquoi ne pas plutôt sauvegarder l'identifiant de l'utilisateur dans la table likes ?
Surtout que si par exemple l'utilisateur peut changer son nom d'utilisateur, tu auras plusieurs données de la table likes qui seront faussées.
Merci de ta réponse.
Oui, ou alors lorsqu'il modifie son nom d'utilisateur, je le modifie aussi dans la table likes.
Mais la n'est pas la question.
Ce que je veux, c'est accéder aux informations des photos dont l'ID apparraissent dans la table likes donc
Pour commencer, je ne vois pas l'intérêt de faire une requête préparée, si tu ne l'utilises pas correctement, vu la manière que tu l'utilises, la méthode query serait largement suffisante, sinon tu fais en sorte de l'utiliser normalement.
Ensuite, si tu nous expliquais le problème que tu rencontres, ça nous permettrait de pouvoir t'aider.
Sinon, je ne vois absolument pas à quel moment tu fais une quelconque jointure dans ta requête SQL.
Il te faut utiliser les mots clés concernées avec la table liée.
Je m'entraine, je m'entraine, on apprend tout les jours, hein.
En attendant, ça ne me donne aucune idée de comment procéder.
Rien ne va dans ton code.
Il n'y a pas de jointure et ton while n'a aucun interêt puisqu'en faisant la requette et un fetchAll() tu peux récupérer toutes les données dont tu as besoin en une execution.
En plus tu dis que tu veux récupérer les "photos_username" en fonction du nom de la personne qui a cliqué sur le like mais à aucun moment tu met le nom de l'utilisateur dans la condition de ta requête
Je pense que ta requête devrait ressembler à ça si j'ai bien compris :
SELECT p.posteur_username
FROM photos as p
LEFT JOIN likes as l
ON p.id = l.photo_id
WHERE l.user = '$user'