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

Langage SQL Discussion :

Requête ligne par ligne


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Requête ligne par ligne
    Bonsoir à tous,

    je suis entrain de faire un jeu de plateau et j'ai fait une base de données sous mysql pour stocker mes cartes. J'aurais voulu savoir s'il existait une requête me permettant à chaque fois que je tombe sur une case de passer à la requête qui suit. Par exemple première fois que je tombe sur la case première ligne de ma base de données, puis deuxième fois deuxième ligne...

    Merci par avance pour vos réponses

    Très bonne soirée

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Une table de BDD SQL est à considérer comme un ensemble. Il n'y a pas d'ordre a priori et ce sont seulement les requêtes qui peuvent déterminer un ordre de présentation des données.

    Conformément aux règles de ce forum, il faudrait nous en dire plus pour qu'on puisse t'aider plus efficacement, notamment le nom de ton SGBD et la structure des tables impliquées dans ton problème.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Il s'agit d'une table carte composée de 4 champs: id (auto-increment et clé primaire), titre, contenu, image.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Informations toujours insuffisantes !
    Je ne comprends pas ce que tu veux faire.

    Lis la phrase en bleu de ma signature et applique son principe si tu veux qu'on t'aide.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Ok alors je vais tâcher d'être plus claire.
    J'ai fait un jeu type Monopoly, et mes cartes sont enregistrées dans la base de données "carte" composée de quatre champs id, titre, contenu, image.
    Lorsque le joueur arrive sur cette case, il pioche une carte.
    Plus précisément, le premier joueur arrive sur cette case il pioche une carte correspondant à la première ligne de ma base de données (id=1). La requête serait donc celle ci:
    "select titre, contenu,montant,image from cartes ORDER BY id LIMIT 1".
    Maintenant j'aimerais que quand la deuxième personne arrive sur cette case l'id soit égal à 2 et donc que les données renvoyées soient le titre, le contenu et l'image de la deuxième ligne de ma base de données. C'est en quelque sorte un système d'incrémentation à chaque joueur qui arrive sur cette case.
    Et ainsi de suite. Comme dans un tas de carte, tu pioches la première carte puis tu la remets en dessous.

    Voila j'espère avoir été plus claire

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Dernière précision ma base de données est enregistrée dans mysql

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    OK je comprends mieux.

    Au Monopoly, on mélange les cartes avant le début de la partie, celles-ci n'ont donc pas toujours le même ordre et ta colonne d'identifiant n'est pas suffisante pour déterminer un ordre à chaque partie.

    Ce que tu peux faire, c'est ajouter une colonne booléenne qui indiquera si la carte a déjà été tirée et mettre un ordre aléatoire à ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select titre, contenu, montant, image 
    from cartes 
    WHERE tiree = 0
    ORDER BY RAND(0)
    LIMIT 1
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 152
    Points : 7 402
    Points
    7 402
    Billets dans le blog
    1
    Par défaut
    Oublie cette méthode.

    Regarde en PHP comment :
    - Créer une variable de session persistante (ou une variable d'application, si plusieurs personnes peuvent jouer ensemble)
    - Créer un objet "pile" de type FIFO

    Ensuite, tu crées un objet pile FIFO en variable de session ou d'application, et au démarrage de la session ou de l'application, tu charges ta table dedans, en faisant un "order by rand(0)".

    Là, tu auras dans on objet l'ensemble des cartes mélangées à chaque partie d'une façon différente.

    Ensuite, tu n'auras plus qu'à piocher dedans (vraissemblablement une méthode "pop()"), avant de la remettre au fond du tas, avec une méthode "push()").

    Attention, certaines cartes ne sont pas toujours remises dans le tas immédiatement (cartes "sortie de prison" par exemple).

    Je te conseille de déplacer ton topic vers la catégorie PHP.

    En SGBD pur et dur, je doute que tu arrives à quelque-chose d'utilisable/viable, même si tu te lances dans une usine à gaz.

    -- Edit : Ca, c'était pour les cartes style "caisse de communauté" ou "chance".

    Pour les cartes de propriété, alors c'est plus ou moins identique :
    - Une variable de session/application qui contient au début de la partie toutes les cartes de propriété.
    - Un indexeur dessus pour retrouver facilement une carte (et si elle est présente)
    - La même variable pour chaque joueur, initialisée à vide
    - Et quand un joueur tombe sur une case propriété, tu n'as plus qu'à rechercher la carte dans le deck de la pioche (et proposer à l'achat si elle est trouvée), ou dans les decks des autres joueurs (et inviter à payer le loyer), ou dans le deck du joueur (et proposer d'acheter des maisons si c'est possible).

    A nouveau, en base de données, tu vas plus t'embêter qu'autre chose.

    La BDD sera très bien pour stocker une image du jeu "dans sa boîte", mais dès qu'une partie commence, ce sera à la fois plus simple et plus performant de travailler en mémoire avec des variables de session/application.

    D'autant qu'avec une structure en base de données, ça va vite être la galère pour gérer plusieurs parties en même temps.

    C'est en tout cas la méthode que j'utiliserais.
    On ne jouit bien que de ce qu’on partage.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Mercii beaucoup beaucoup pour vos réponses je vais voir ça

    Bonne journée à vous

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

Discussions similaires

  1. Requête de récupération ligne par ligne
    Par Zheis dans le forum JDBC
    Réponses: 15
    Dernier message: 14/02/2013, 10h35
  2. Traiter ligne par ligne le résultat d'une requête
    Par pupucette dans le forum PL/SQL
    Réponses: 40
    Dernier message: 22/05/2012, 14h31
  3. Réponses: 8
    Dernier message: 04/07/2011, 14h16
  4. Lancer des requêtes DB2 par ligne de commande Unix
    Par rstephane dans le forum DB2
    Réponses: 3
    Dernier message: 27/05/2009, 15h36
  5. Calcul ligne par ligne sur le résultat d'une requête
    Par CanardJM dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/04/2008, 13h06

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