Le guide des jeux en ligne alternatifs
Comment créer son jeu et le gérer ?
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
Accès la base de données MySQL pour son jeu PHP
Formulaire simple et création de données
Le principe est encore plus simple lorsque l'on veut faire une mise à jour de la base de données : on envoie une requête, et on vérifie seulement si elle s'est bien passée ou non. La mise à jour peut être une création de ligne (INSERT), une modification de ligne (UPDATE) ou une suppression (DELETE).
Par contre, il faut généralement utiliser des paramètres indiqués via une page web. Connaître l'identifiant de la ligne à supprimer, ou bien connaître les valeurs des colonnes à créer ou modifier. On est donc généralement passé par un formulaire web.
Pour commencer, dans Fish Race, on va créer des rivières (c'est indispensable pour créer des parties). En bas de la liste des rivières existantes, on va ajouter un formulaire de saisie d'une rivière. On crée donc en HTML un formulaire avec un seul champs de saisie de texte, le nom de la rivière, et un bouton pour créer la rivière.
<form method="POST" action="listeriviere.php" name="saisie" onSubmit="return CheckForm()">
<p>Nom <font size="4" color="#FF0000"><b>*</b></font> <input type="text" name="i_nom" size="30" maxlength="30">
<input type="submit" value="Créer" name="go"></p>
</form>
On ajoute un script (javascript) de vérification de la saisie (ici il s'agit seulement que le nom ne soit pas vide).
<SCRIPT> function CheckForm() { ok = 1; if (document.saisie.i_nom.value == "") { msg = "Vous devez saisir un nom"; ok = 0; } if (ok==0) { alert(msg + " Les champs obligatoires sont signalés par une étoile rouge."); return false; } return true; } </SCRIPT>
Le résultat du formulaire doit être envoyé vers une page de traitement, précisée par le champs "action" du tag de form. Chaque champs sera alors envoyé automatiquement en paramètre à cette page, et récupéré par celle-ci sous forme de variable portant le nom du champs. Ici, le champs du nom s'appelle i_non, et la page d'action aura donc sa valeur dans la variable $i_nom.
Au lieu d'envoyer vers une autre page séparée de création, on peut renvoyer vers la même page qui est donc rechargée. Dans ce cas, on ajoute un test en début de page de la variable $i_nom. Si elle est renseignée, c'est que l'on veut créer cette rivière avant d'afficher le reste de la page. Cette nouvelle rivière apparaitra donc aussitôt dans la liste, et l'on pourra voir son identifiant créé par MySQL (car on a indiqué l'option autoincrement sur la colonne ID de fish_riviere).
if (! empty($i_nom)) { // ---- dans ce cas, on crée une rivière portant ce nom ------------------ $sql = "INSERT INTO fish_riviere (nom) VALUES ('$i_nom')"; if ($res = mysql_query($sql)) { echo"<p>La rivière ".$i_nom." a été créée."; } else { echo "<p>Problème lors de l'exécution de l'ordre ".$sql; } }
Voila, la page de liste et création de rivière est terminée pour le moment. La page de gestion des espèces de poisson est créée sur le même modèle, dans admin/listeespece.php. Il y a 3 champs supplémentaires à valeur numérique de 1 à 5 (gloutonnerie, camouflage et epine), sachant que la somme des 3 chiffres doit être inférieure ou égal à 8. On aura donc 3 champs supplémentaires dans le formulaire. Au lieu de mettre un champs de texte libre et de vérifier qu'on saisit un chiffre entre 1 et 5, on peut utiliser une liste déroulante. Voici le code d'un de ces 3 champs :
<p>Gloutonnerie : <select size="1" name="i_glouton"> <option value="1"> 1</option> <option value="2"> 2</option> <option value="3"> 3</option> <option value="4"> 4</option> <option value="5"> 5</option> </select>
Le script (Javascript) de validation doit vérifier que la somme des 3 valeurs n'excède pas 8.
if ((parseInt(document.saisie.i_glouton.value) + parseInt(document.saisie.i_camoufle.value) + parseInt(document.saisie.i_epine.value)) > 8) { msg = "La somme des 3 chiffres ne doit pas excèder 8"; ok = 0; }
Le code de création ne change que par son ordre INSERT qui précise 4 valeurs au lieu d'une :
$sql = "INSERT INTO fish_espece (nom, glouton, camoufle, epine) VALUES ('$i_nom', '$i_glouton','$i_camoufle','$i_epine')";