TourDeJeu, le portail des jeux en ligne alternatifs, les articles 
TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +
En ligne : 518 jeux, 7177 news, 26754 commentaires
 

Recherche de jeu par critères - Un jeu au hasard !

Les Focus

Tech. : Le programmeur écologique
Tech. : automatisation et mails
Salon MondeDuJeu 2002
Revue de presse des JpC
Humour : 1001 raisons pour jouer
Ludique : le joueur parfait
Ludique : découverte du JpC
PHP : accès base de données
PHP : structure du site
Ludique : JpC et Temps réel
Jeux de rôles sans règles
Humour : astrologie du JpC
Tech. : Bases de données
MJ : les joueurs multiples
PHP : utilité pour un JpC
PHP : c'est quoi ?
Tech. : l'analyse des ordres
Ludique : débutants et vétérans
Tech. : archi Ultraball 2100
Ludique : les jeux de pronos
Tech. : le site Web d'un JpC
Humour : football et wargame
Présentation de TourDeJeu

Créer une base de données pour son jeu

Le langage SQL

Je ne vais pas détailler la syntaxe des ordres SQL, et plutôt vous renvoyer vers une doc complète MySQL à ce sujet, mais je vais vous expliquer en gros le fonctionnement. SQL n'est pas un langage, mais une série d'ordres, ou requêtes. On envoie un ordre à la fois, et on récupère en retour un résultat sous forme de tableau (qui peut ne contenir qu'une seule valeur).

Pour créer les tables, au départ, on utilise des ordres CREATE TABLE en indiquant le nom de la table, ceux des colonnes ainsi que leur type. On crée aussi les index. En général, on ne passe pas ces ordres à la main, mais on utilise un logiciel d'interface, dont le plus courant est phpMyAdmin qui est par exemple fourni par Free, et que vous pourrez aussi installer chez vous pour vos tests (contenu dans le pack EasyPHP).

Pour gérer le contenu d'une table, càd les données des lignes, 3 ordres permettent la mise à jour :

  • INSERT pour créer une ligne dans une table. La valeur donnée pour la clé primaire ne doit pas déjà exister dans la table. Si vous avez une clé en mode auto_increment, c'est MySQL qui créera la valeur de l'ID.
  • UPDATE pour modifier les valeurs d'une ligne existante. On précisera la clé primaire de la ligne, ou bien une condition de mise à jour (par exemple, on peut dire de passer tous les ordres du tour 3 en mode "terminé" en un seul ordre UPDATE qui mettra des dizaines de lignes à jour en même temps), ainsi que les valeurs à modifier.
  • DELETE pour supprimer une ligne d'une table. Comme pour l'update, on peut préciser la clé ou bien tout autre condition et supprimer ainsi plusieurs lignes d'un coup. Un "DELETE FROM nomtable" sans préciser de condition videra d'ailleurs la table "nomtable" de tout son contenu !

Pour récupérer des valeurs d'une ou plusieurs tables : c'est l'ordre SELECT. C'est l'ordre SQL le plus utilisé, celui qui a le plus d'options possibles, le plus puissant. Voici quelques exemples progressivement plus compliqués d'ordres SELECT :

  • SELECT nom FROM joueur
    -> vous allez récupérer la liste des noms de tous les joueurs stockés dans la table
  • SELECT nom, email FROM joueur WHERE id = 1
    -> vous allez récupérer le nom et l'email du joueur n°1
  • SELECT nom, vitesse FROM poisson WHERE idequipe=46 ORDER BY vitesse DESC
    -> liste des poissons de l'équipe 46, triés du plus rapide au plus lent
  • SELECT equipe.nom, poisson.nom, vitesse FROM equipe, poisson WHERE equipe.ID=poisson.idequipe ORDER BY vitesse DESC
    -> même chose toutes équipes confondues, en indiquant le nom de l'équipe pour chaque poisson.
    On a fait ici un SELECT multi-tables, en faisant une jointure entre les deux tables : la condition de jointure est equipe.id=poisson.idequipe. C'est le genre de jointure que l'on fait le plus couramment, en utilisant comme condition les clés étrangères.
  • SELECT equipe.nom, joueur.email, poisson.nom, vitesse FROM equipe, poisson, joueur WHERE equipe.ID=poisson.idequipe AND equipe.idjoueur=joueur.id ORDER BY vitesse DESC
    -> même chose en faisant aussi une jointure entre l'équipe et le joueur pour récupérer l'email. On a donc des données de 3 tables au moyen de 2 jointures.
  • SELECT equipe.nom, count(poisson.id) from equipe, poisson where poisson.idequipe = equipe.id GROUP BY equipe.id
    -> Liste des équipes avec le nombre de poissons par équipe
    Ici, on a récupéré une donnée groupée (COUNT) en face d'une donnée simple, et on a donc dû ajouter un groupement de ligne.

Vous pouvez voir sur ces quelques exemples simples qu'il ne faut pas voir SQL comme un moyen de stockage et de récupération bête et simple de données comme on pourrait le faire avec un système de fichiers : des traitements sont possibles qui économiseront beaucoup votre code PHP.

Retour au sommaire de l'article 

(c) TourDeJeu 2000-2024