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
Réponse acceptée

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.

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
Auteur

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.

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

Manide
Auteur

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
Auteur

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?

Manide
Auteur

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