Aide sur des conditions - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Aide sur des conditions (/showthread.php?tid=6391) |
Aide sur des conditions - Lindis - 20-04-2014 Je solicite votre aide pour faire avancer le shmilblick Je ne vois pas trop comment vérifier que le membre posséde bien la variété et le nombre de graines qu'il désire planter.. Je vais vous poster mes tables SQL ainsi que le code qui gére la partie ou le membre est censé planter ses graines. Et peut être quelqun pourra m'aider à y voir plus clair et me faire un exemple de ou poser les conditions car je nage là et cela m'empêche vraiment d'aller plus loin :heu: Car je vais aussi devoir vérifier que le membre a assez de pots ,de terre etc... Pour le moment seules 4 variétés de graines sont présentes dans la table
Et le code permettant de planter n germination (qui doit se faire de 0 à 15 cm)
Voilà, en espérant que quelqun pourra m'aider, je vous remercie et vous souhaite un bon dimanche RE: Aide sur des conditions - Ekilio - 20-04-2014 RE: Aide sur des conditions - Lindis - 20-04-2014 Merci bien Ekilio. En fait la variable $variete je pensais la mettre dans <option value="graines_skunk">skunk</option> Pour que quand le membre remplit le formulaire le script sache quelle variété est visée dans la table de par sa valeur. En vrai je me suis emmêlé les pinceaux et mon script ne ressemble plus à grand choses avec possiblement des portions de code en trop car oui la requête SELECT que tu cites ne sert à rien étant déjà présente au dessus. Je plante au niveau du décompte des graines du membre impossible de me mettre la logique en tête c'est confus. Je ne vois pas trop comment lui décompter le nombre de graines de la variété qu'il va planter et oui il va falloir que je me mette à PDO qui parait moins bordel dans les sources et plus ordonné. Je ne suis pas doué en PHP bien que je persévere à apprendre il me reste pas mal de zones d'ombre. RE: Aide sur des conditions - Ekilio - 20-04-2014 Tu finiras par y arriver en PHP, si tu persévères Ce n'est qu'une question de pratique. Voici un petit exemple de code pour faire le décompte : Code PHP :
RE: Aide sur des conditions - Harparine - 20-04-2014 Salut, Si je peux me permettre une suggestion sur la modélisation de ta base de données, tu devrais fractionner ta table pour avoir un système plus souple au niveau de l'inventaire. Par exemple, avec 3 tables au lieu d'1 : - 1 table personnage ou héros, etc. - 1 table items ou objet avec des champs du type 'id', 'nom', 'description', 'image', 'caractéristique1', 'carac2', etc. - 1 table pour faire le lien avec des champs du type 'id', 'perso_id', 'item_id', 'num'. Ainsi, tu pourrais rajouter de nouveaux items sans toucher à la structure de ta base de données, depuis une interface d'administration. Tu pourrais même envisager de localiser les items selon leur emplacement avec un champ complémentaire dans la table de relation. @+ RE: Aide sur des conditions - Lindis - 21-04-2014 Bonjour Ekilio je te remercie pour ta réponse, c'est réglé et du coup ça avance Harparine merci aussi pour ta suggestion En effet j'aurais du dispatcher ceci en plusieurs parties après réflexion. En sachant que cette table risque encore de grandir ^^ Mais arrivé à ce stade du développement de Green-paradis si je la recoupe en trois parties cela va devenir problématique te tout les côtés du script (pas mal avancé) Toutefois si un jour je suis amené à refaire un autre jeu je ne ferais plus la même erreur. Merci encore à vous deux, et bonne journée. RE: Aide sur des conditions - Xenos - 21-04-2014 Les entrées utilisateurs
A coup de "if" Utilise les cast. Et vérifie la validité des valeurs de façon exhaustive
La POO La POO est souvent plus légère dans ce cas-là, puisqu'elle te permettra d'écrire des trucs du genre:
Et tous les contrôles de valeurs fileront dans les objets: les contrôles pour s'assurer que tel ou tel truc (données $_POST par exemple) sont définies et valides seront masqués.Exceptions
Préfère l'utilisation des Exceptions.
Ou POO (le message de l'exception est caché dans la classe de l'exception):
Injection Coté sécurité, ceci est mal venu:
Si mon login est le suivant: Code : " OR 1=1 ORDER BY `graines_crystal` DESC; -- Alors la query devient:
Et je récupère les graines de celui ou celle qui a le plus de crystal. Evidemment, on aurait pu faire bien pire, en utilisant le login:
Et là, adieu ta BDD... Solution: Soit utiliser des requêtes préparées, soit valider proprement chaque donnée avant de l'insérer dans la requête SQL, via un escape string comme tu l'as fait ailleurs.
A "or die", je préfère l'utilisation d'un "if (mysql_error()) throw new Exception(...)". Le "or die" est assez pesant, et te donne très peu de contrôle sur comment rattraper une erreur.Simplifier ses requêtes Pense à simplifier les requêtes SQL, ou à défaut, à les regrouper.
Regroupé:
Faire N requêtes "INSERT" est assez long: préfère la syntaxe de INSERT permettant d'insérer plusieurs données d'un coup. Encore mieux:
Location: Double toujours tes "location:" par un lien, au cas où le navigateur ne suive pas.
Aussi, attention aux "index.php?nav=..." car ils sont parfois sensibles à l'injection. Ils sont aussi assez moche dans la barre d'URL, mais c'est secondaire.Injection cliente L'injection ne se fait pas que dans la BDD: elle se fait aussi chez le visiteur. Considère que tout ce que ton serveur émet doit être valide. Ici, supposons que j'envoie le lien suivant: Code : index.php?message=<script>alert(document.cookie);</script> Alors ce code:
Va émettre ceci au visiteur:
Si jamais j'envoyais ce lien à une victime, et qu'au lieu d'un "alert()" j'utilisais autre chose pour m'envoyer la valeur de "document.cookie", alors je pourrai connaitre le cookie de ma victime, et accéder à son compte. Mysql_* est déprécié Utilise, à la place, mysqli ou PDO. Note finale: il est tard, je suis creuvé, y'a peut-être une ou deux conneries dans ce post, que les autres corrigent si besoin RE: Aide sur des conditions - Lindis - 23-04-2014 Xenos je viens de prendre connaissance de ta réponse qui est je te remercie on ne peut plus explicite (et immense, pour aider au mieux à comprendre) J'ai lu tout ça, ce qui m'évitera à l'avenir de refaire les mêmes erreurs. ; la source du jeu va être refaite en totalité avec des requêtes en "mysqli" et/ou PDO à voir Pour le moment avec mes deux collègues (équipe récemment montée) nous nous contentons d'écrire un cahier des charges, ce qui n'avait jamais été fait jusque là. Nous allons aussi partager nos nombreuses idées sur des fonctionnalités envisagées et les noter au clair afin de savoir sur quoi partir exactement et ne pas avoir à rattacher à chaque fois des bouts de codes au besoin comme j'ai pu le faire (la cause de mon embrouillage de cerveau) Dés que possible nous vous tiendrons au courant quand la reconstruction aura débutée et un peux avancée. Dans cette attente je te remercie de ton long message à cette heure tardive, et te souhaite une bonne fin de journée. RE: Aide sur des conditions - Xenos - 23-04-2014 Refait pas tout en cours de route pour passer à du PDO Passer à mysqli sera très simple (99% du temps, il suffit d'ajouter un "i" XD), alors que PDO risque d'entrainer pas mal de changements. Et welcome, you are |