SQL + PHP : Système d'amis

Eléphant du PHP | 386 Messages

15 déc. 2016, 18:46

Salut,

J'aimerai utiliser une requête sur le site https://openclassrooms.com/courses/cree ... ois-autres

Code : Tout sélectionner

$query = $db->prepare(' SELECT (ami_from + ami_to - :id) AS ami_id, ami_date, membre_pseudo, online_id FROM forum_amis LEFT JOIN forum_membres ON membre_id = (ami_from + ami_to - :id) LEFT JOIN forum_whosonline ON online_id = membre_id WHERE (ami_from = :id OR ami_to = :id) AND ami_confirm = :conf ORDER BY membre_pseudo'); $query->bindValue(':id',$id,PDO::PARAM_INT); $query->bindValue(':conf','1',PDO::PARAM_STR); $query->execute();
Vu qu'elle fonctionne, j'aimerai la comprendre avant de pouvoir l'utiliser.

Le passage avec "SELECT (ami_from + ami_to - :id) AS ami_id" me paraît un peu dur ^^
La jointure "ON membre_id = (ami_from + ami_to - :id)"
Et le passage de "WHERE (ami_from = :id OR ami_to = :id)"

Pour le reste, j'ai les bases, j'y arrive.

C'est la parenthèse, les signes = + - qui me bloque dans cette requête.
Merci pour votre aide =)

ViPHP
ViPHP | 1996 Messages

15 déc. 2016, 20:04

Est ce que ne serait-ce pas juste une addition et une soustraction ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 1967 Messages

16 déc. 2016, 01:17

Oui le but est de récupèrer les amis from et les amis to d'un membre en particulier en une seule requète.
l'explication de la difference from / to est expliquée sur le lien.
donc chaque ligne aura soit ami_from soit ami_to qui sera égal à id (signe =)
mais par exemple si un membre id = 35 a :
un ami_from (id = 44)
un ami_from (id = 15)
un ami_to (id = 78)
un ami_to (id = 100)
donc pour chaque ligne, on va tenter de récupèrer l'id de l'ami qui n'a pas l'id recherché (35)
ligne 1 ami_from = 44 ami_to = 35 & id = 35 donc 44 + 35 - 35 = 44
ligne 3 ami_from = 35 ami_to = 78 & id = 35 donc 35 + 78 - 35 = 78
donc dans tous les cas on retrouve l'id de l'autre ami de 35. pas besoin de savoir distinguer si il est from ou to.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube