Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2011, 00h24   #1
Invité régulier
 
Inscription : mai 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 16
Points : 5
Points : 5
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
jessy2020 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 09h24   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h23   #3
Invité régulier
 
Inscription : mai 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 16
Points : 5
Points : 5
Il s'agit d'une table carte composée de 4 champs: id (auto-increment et clé primaire), titre, contenu, image.
jessy2020 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h25   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h46   #5
Invité régulier
 
Inscription : mai 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 16
Points : 5
Points : 5
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:
Citation:
"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
jessy2020 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 11h54   #6
Invité régulier
 
Inscription : mai 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 16
Points : 5
Points : 5
Dernière précision ma base de données est enregistrée dans mysql
jessy2020 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 12h01   #7
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/09/2011, 12h01   #8
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
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.
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/09/2011, 12h13   #9
Invité régulier
 
Inscription : mai 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 16
Points : 5
Points : 5
Mercii beaucoup beaucoup pour vos réponses je vais voir ça

Bonne journée à vous
jessy2020 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h47.


 
 
 
 
Partenaires

Hébergement Web