Interaction entre tables d'une base de données

Par Manide, il y a 10 ans


Bonjour,

Je vous explique ma situation. J'aimerai créer dans le compte des utilisateurs , une liste de choses qu'ils ont gagné. J'ai une bdd avec plusieurs tables dont : une "membre" et une "choses à gagner".

Je n'arrive pas et je ne sais pas comment faire cette liste. Il faut que j'intéragisse avec les tables...Je voudrais juste récupérer et afficher le nom de la chose à gagner (voire son image) dans le compte.

Je ne demande pas une réponse clé en main mais juste me donner un début de piste.

Merci

7 réponses

JacobDelcroix, il y a 10 ans

Tu crées une table qui va faire le lien entre les deux qui contiendra un id_user et un id_chose_a_gagner.
Ensuite te suffit de faire une requête avec des INNER JOIN pour récupérer les informations que tu souhaites. Rien de bien compliquer.

Manide, il y a 10 ans

A oki merci bien ^^ par contre je ne connais pas INNER JOIN j'irai voir sur la doc php, je te tiens au courant si j'y arrive. Encore merci.

Defy, il y a 10 ans

la doc SQL pas php INNER JOIN c'est du SQL ;-)

Manide, il y a 10 ans

Bon j'ai compris comment ça fonctionnait mais je n'arrive pas à l'utiliser. J'ai créé :
->une table choses gagnées (contenant id_user et un id_chose_a_gagner) et voici ma requete :

$essai = App::getInstance()->getDb()->query( 'SELECT name, file FROM choses_gagnees INNER JOIN chose_a_gagner ON choses_gagnees.id_user = choses_gagnees.id_chose_a_gagner ORDER BY chose_a_gagner.name');

J'ai mis la valeur 29 dans id_user et id_chose_a_gagner (il y a un user pour cet id mais pas de chose à gagner) et le var_dump me donne toutes les choses à gagner...

Du coup un peu de mal a comprendre lol

Manide, il y a 10 ans

Du coup j'ai réussi sans passer par une table neutre j'ai juste créer un chose_gagnes_id dans user et j'ai mis l'id de la chose gagnée.Par contre j'ai un

Array ( [0] => stdClass Object ( [name] => Peluche [file] => ../webroot/img/lol/Ours.jpg ) )

Du coup j'arrive pas à récupérer les infos. Qq1 à une idée?

JacobDelcroix, il y a 10 ans

Tu as trois tables :

  • utilisateurs
  • choses_a_gagner
  • choses_gagner (ici tu as user_id et chose_id)

Te suffit donc de faire :

SELECT * FROM choses_gagner AS c INNER JOIN choses_a_gagner AS cg ON c.chose_id = cg.id INNER JOIN utilisateurs AS u ON c.user_id = u.id WHERE c.user_id = ? # ton id utilisateur

Et après tu mets ce que tu veux dans ton select.

Manide, il y a 10 ans

ok merci je vais tester ça. Sinon pour récupérer les donnés de mon poste précédent suffit de faire

echo nom de la variable[0]->name echo nom de la variable[0]->file