IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Comparer 2 tables [Débutant(e)] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut Comparer 2 tables
    Bonjour à tous,
    je suis débutant en php et je suis en train de développer un petit jeu. J'ai une base de données avec 2 tables, une avec les réponses du joueur, et une avec les réponses correctes. J'aimerai comparer les réponses de l'utilisateur avec les bonnes réponses. Comment puis-je faire?

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Tu peux poster le shéma des deux tables stp

  3. #3
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Voici un lien avec le fichier sql dedans: ici

    Je cherche par exemple un moyen de comparer les idjoueur de la table repeleve et l'id de la table joueur.

    Je sais qu'il y a du SELECT,... mais je n'arrive pas à comprendre comment faire et surtout comment je peux comparer d'une table à l'autre...

    Merci d'avance

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    je suis peut-être vieux jeu, mais sur mon ordi personnel je n'ai pas de décompresseur de rar et cela ne m'empêche pas de vivre
    c'est con mais c'est ainsi
    alors si tu pouvais mettre la structure de tes tables ici...

  5. #5
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    arf, un développeur vieux jeu, si tu me permet le jeu de mot, ça se fait rare

    bon v4np13, a priori tu as deux champs identiques 'ID' ce qui aurait pu permettre une méthode simple, sauf que l'auto-increment est sur les deux...

    ce qu'il faudrait que tu fasses ( au plus simple) c'est inverser les champs id et id_joueur de manière a ce que dans la table "repeleve" le champs "id" corresponde a celui de la table "reptrue"

    donc :
    CREATE TABLE `repeleve` (
    `IDJOUEUR` int(11) NOT NULL auto_increment,
    `ID` int(4) NOT NULL default '0',
    `IMAGE` int(4) NOT NULL default '0',
    `CHOIX` varchar(6) NOT NULL default '',
    KEY `ID` (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    aprés il ne te reste plus qu'a tester avec une jointure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = "SELECT t.ID FROM reptrue as t,repeleve as e WHERE e.ID = t.ID AND e.CHOIX = t.VRAI";
    $res = mysql_query($sql) or die (mysql_error());
    $nb = mysql_num_row($res);
    if($nb != 0) echo "Vous avez $nb réponses justes";
    else echo "Aucune réponse juste trouvée";
    voila ;-)

  6. #6
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Merci pour vos réponses

    Pourriez-vous m'expliquer la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT t.ID FROM reptrue as t,repeleve as e WHERE e.ID = t.ID AND e.CHOIX = t.VRAI
    Je vais tester ce code et je vous tiens au jus.

    Je ne peux pas inverser id et id_joueur, le jeu est plus compliqué que ça. id_joueur, c'est le id de la table joueurs. Et l'id de la table reptrue, c'est 'image' de la table repeleve (j'avais demandé une étape pour simplifier la demande et essayer de trouver la suite par moi-même)

    P.S.: j'ai trouvé plus simple de compresser et de le mettre sur mon FTP que de mettre directement le .sql dedans ou de copier-coller toute la BDD en SQL ici

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par v4np13
    j'ai trouvé plus simple de compresser et de le mettre sur mon FTP que de mettre directement le .sql dedans ou de copier-coller toute la BDD en SQL ici
    On te demandais juste le schéma des tables, pas toute la base Je sais même pas si j'ai un décompresseur rar sur ma machine et j'ai pas envie de savoir.

  8. #8
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Citation Envoyé par Mr N.
    Citation Envoyé par v4np13
    j'ai trouvé plus simple de compresser et de le mettre sur mon FTP que de mettre directement le .sql dedans ou de copier-coller toute la BDD en SQL ici
    On te demandais juste le schéma des tables, pas toute la base Je sais même pas si j'ai un décompresseur rar sur ma machine et j'ai pas envie de savoir.
    J'avoue que ce serais plus simple pour votre compréhension de faire un schéma mais je le fais avec quoi?

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    En base de données un schéma c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `repeleve` (
    `IDJOUEUR` int(11) NOT NULL auto_increment,
    `ID` int(4) NOT NULL default '0',
    `IMAGE` int(4) NOT NULL default '0',
    `CHOIX` varchar(6) NOT NULL default '',
    KEY `ID` (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
    Facile à faire non ? un petit copier coller depuis phpMyAdmin suffit

  10. #10
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE TABLE `joueurs` (
      `ID` int(11) NOT NULL auto_increment,
      `NOM` varchar(30) NOT NULL default '',
      `PRENOM` varchar(30) NOT NULL default '',
      `CLASSE` varchar(6) NOT NULL default '',
      `MOTDEPASSE` varchar(20) NOT NULL default '',
      `DATEHEURE` datetime NOT NULL default '0000-00-00 00:00:00',
      `POINTS` int(5) NOT NULL default '0',
      PRIMARY KEY  (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    CREATE TABLE `repeleve` (
      `ID` int(11) NOT NULL auto_increment,
      `IDJOUEUR` int(4) NOT NULL default '0',
      `IMAGE` int(4) NOT NULL default '0',
      `CHOIX` varchar(6) NOT NULL default '',
      KEY `ID` (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
     
    CREATE TABLE `reptrue` (
      `ID` int(11) NOT NULL auto_increment,
      `IMAGE` int(4) NOT NULL default '0',
      `VRAI` varchar(6) NOT NULL default '',
      KEY `ID` (`ID`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    Et ID de joueurs = IDJOUEURS de repeleve
    IMAGE de repeleve = ID de reptrue
    CHOIX de repeleve = VRAI de reptrue (pas toujours, c'est pour vérifier).

    Je vous ai fait un schéma en excel pour mieux illustrer cela:

  11. #11
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Au final tu veux faire quoi ? juste mettre à jour le score ? afficher les réponses fausses ?

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Pour mettre à jour le score je verrais bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE reptrue AS t INNER JOIN (
       repeleve AS e INNER JOIN joueurs AS j
          ON (e.idjoueur = j.id)
       ) ON (e.image = t.id)
    SET j.choix = j.choix + 1
    WHERE e.choix = t.vrai
    (pas du tout testé)

  13. #13
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Au final, il faut que je mette à jour le score des joueurs dans la table joueurs, en ayant compter le nombre de bonnes réponses (IMAGE;CHOIX) doit être égal à (ID; VRAI).

    P.S.: qu'est-ce que c'est les t. , e. ,... dans votre code?

  14. #14
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    c'est les alias des différentes tables.

  15. #15
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Ok merci beaucoup pour vos aides. Je vais continuer ça

  16. #16
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    grrrr bon avant de faire perdre du temps à des gens qui sacrifie une partie du leur a essayer d'aider d'autres personnes qui ne reverront probablement jamais, il faut que tu comprennes deux choses :
    • la première c'est que tu nous demande de t'aider pour un problème que tu es le seul a connaître, donc donnes nous au moins tous les éléments pour t'aider à le résoudre, je ne comprends rien a ton histoire d'images, de vrai d'un coté de etc...
    • la secondes, c'est que nous sommes d'accord pour t'aider sur un problème précis, mais pas pour te pondre une appli, qui ( entre nous ) me paraît construite n'importe comment, donc, commence par apprendre comment structurer une base, et comment y trouver les informations que tu veux.

    désolé, c'est toi qui prend, mais en fait c'est la goutte d'eau qui fait déborder le vase...

    donc sois plus explicite, et recherches aussi de ton côté... tu aurais pu le trouver toi-même l'histoire des alias, ceci juste en regardant un tantinet la doc mysql...

    [edit]
    oups, nos post se sont croisés, désolé, je vois que tu vas travailler ça de ton coté, retires tout ce que j'ai dis...
    ;-)
    [/edit]

  17. #17
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    ska_root, de retour, et pas content

  18. #18
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par genova
    ska_root, de retour, et pas content
    salut genova,

    bah, moi aussi j'ai le droit de g..... de temps en temps, en plus il flotte ici, ça me met de mauvaise humeur. ;-)

  19. #19
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Oui oui clair, je disais ça avec humour ^^

    Clair quel temps moisi

    Bref je suis un peu hors sujet là

  20. #20
    Membre actif
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Points : 271
    Points
    271
    Par défaut
    Si ma présence vous gêne falait me dire avant hin !!! Merci pour ton accueil chaleureux ska_root. Je m'en souviendrais de la façon dont on accueille les débutants ici !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comparer 2 tables sans checker chaque row
    Par BoOom dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 04/05/2006, 13h21
  2. [MySQL] Comparer 2 tables
    Par anti-conformiste dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/04/2006, 14h03
  3. [C#][VS2k5]Comparer 2 tables sans checker chaque row?
    Par BoOom dans le forum Windows Forms
    Réponses: 5
    Dernier message: 25/04/2006, 15h27
  4. Comparer 2 tables de structure identique.
    Par FMaz dans le forum Requêtes
    Réponses: 13
    Dernier message: 31/03/2006, 22h48
  5. Réponses: 7
    Dernier message: 20/02/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo