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 :

Récupérer le résultat d'une requête dans un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    63
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 63
    Points : 57
    Points
    57
    Par défaut Récupérer le résultat d'une requête dans un tableau
    Bonjour,

    Je suis en train d'essayer d'écrire un programme pour un jeu.
    Dans ce jeu, il y a des mobiles qui se déplacent sur des cases.
    Les cases ont certaines caractéristiques définies dans une table nommée table_case, et la position des mobiles est inscrite dans la table qui regroupe les caractéristiques des mobiles, nommée table_mobile.

    Le problème, c'est qu'une case ne doit pouvoir être occupée que par un seul mobile à la fois, le temps de déplacement d'une case à l'autre est fonction des caractéristiques de la case, etc...

    La mise à jour des position de mobiles se fait mobile par mobile. L'ensemble des mobiles présents dans table_mobile sont sélectionnés tour à tour avec une boucle de type while(mysql fetch array), à l'intérieur de laquelle sont inscrites les actions nécessaires à la mise à jour.

    Etant donné que le programme doit savoir quel est l'état (libre ou occupé) de la case sur laquelle souhaite aller chaque mobile, il faudrait une requête SQL suivie d'une autre boucle while(mysql fetch array) pour récupérer l'état de la case en question dans table_case. Hors, il me semble que les boucles imbriquées comme ça ne marche pas, à moins de mettre la boucle imbriquée dans un fichier séparé ensuite inclus avec "include".

    Dans table_case, il y a un entrée par case, et 8 champs définissant les caractéristiques de la case. Je voudrais récupérer ces champs dans un array, qui serait créé avant la boucle de mise à jour des caractéristiques des mobiles, afin de ne pas avoir de boucles imbriquées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // En gros, je voudrais éviter ça:
    $reponse = mysql_query("SELECT * FROM table_mobile "); 
    while ($donnees = mysql_fetch_array($reponse) )
    {
    $case = $donnees['position'];
     $reponse = mysql_query("SELECT * FROM table_case WHERE numero='$case'"); 
    while ($donnees2 = mysql_fetch_array($reponse) )
    {
    $etat = $donnees2['etat'];
    //...
    //Code de mise à jour
    //...
    }
    }
    mais plutôt avoir quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $reponse = mysql_query("SELECT * FROM table_case"); 
    ... Création d'un array avec le résultat de la requête ...
    $reponse = mysql_query("SELECT * FROM table_mobile"); 
    while ($donnees = mysql_fetch_array($reponse) )
    {
    $case = $donnees['postion'];
    ... rechercher l'état de $case dans l'array constitué plus haut ...
    //...
    //Code de mise à jour
    //...
    }
    pour résumer, je voudrais savoir comment on fait pour mettre l'ensemble du résultat d'une requête SQL dans un array.

    Bonne nuit et merci d'avance pour vos réponses

  2. #2
    Membre régulier Avatar de langevert
    Profil pro
    Inscrit en
    Août 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 92
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Moi je ferai une seule requête, avec une jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM table_mobile t1 INNER JOIN table_case t2 ON(t1.position = t2.numero)
    Bien entendu, ceci est un exemple de requête (J'ai mis "*" car je ne connais pas tes tables. De plus je ne sais par si le INNER JOIN est la meilleure jointure pour ton cas )

    Petite documentation sur les jointures : http://sqlpro.developpez.com/cours/sqlaz/jointures/


    Sinon pour revenir à ta question, je sais qu'en PDO, c'est possible de faire ceci (avec un fetchAll() ) , mais avec le mysql_query , je ne sais pas...

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    63
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 63
    Points : 57
    Points
    57
    Par défaut
    Bonsoir, merci pour ta réponse, c'est une bonne idée, je ne savais pas que ça existait, je vais essayer, merci beaucoup.

    Bon week-end.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Récupérer le résultat d'une requête dans un tableau à une seule dimension
    Par Robjerey dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/09/2014, 16h20
  2. [MySQL] Comment récupérer le résultat d'une requête dans PHP
    Par zouzino dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/11/2007, 22h53
  3. [MySQL] Récupérer le résultat d'une requête dans une variable
    Par kryogen dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/10/2007, 14h29
  4. [MySQL] récupérer le résultat d'une requête dans un tableau
    Par faty2 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/05/2007, 16h22
  5. Réponses: 7
    Dernier message: 30/06/2005, 10h06

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