Manière d'alléger son code - 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 : Manière d'alléger son code (/showthread.php?tid=2055) |
RE: Manière d'alléger son code - MyHeadXplod - 25-11-2007 Citation :*sens comme des sarcasmes* Non mais vérité ou opinion peu importe, le tout c'est d'expliquer pourquoi tu dis ça Citation :Pour comprendre le pourquoi du comment il faut ausculter le moteur PHP, et pour ça il faut avoir un bagage que personne n'a ici. Ok ok, ça c'est clair thx à vous deux RE: Manière d'alléger son code - Joojo - 25-11-2007 En regardant mon script messagerie.php j'ai remarqué que vous envoyé un message à tous mes membres j'ai mit une requête dans un while qui s'exécutera pour chaque membres. Alors si j'ai 100 membres elle s'executera 100 fois. Hu Hu je suis un dingue. Faut que j'aille modifier ça. RE: Manière d'alléger son code - naholyr - 25-11-2007 Si si, les INSERT multiples ça marche très bien : Code : INSERT INTO table (champ1, champ2) VALUES (val11, val21); Code : INSERT INTO table (champ1, champ2) VALUES (val11, val21), (val12, val22), (val13, val23); RE: Manière d'alléger son code - Sephi-Chan - 25-11-2007 oxman a écrit :Je préfère faire une boucle sur ma requête, je trouve ça plus propre :o)Plus lourd aussi. Tu irais plus vite en construisant la chaîne de la requête dans un premier temps et en t'en resservant dans l'INSERT. Sephi-Chan RE: Manière d'alléger son code - Kassak - 25-11-2007 Tient je pense que je vais faire comme cela maintenant, car plein de fois j'ai du mettre une requête dans une boucle, je savais que c'était pas top moumoute, mais je ne voyais pas trop comment faire autrement. RE: Manière d'alléger son code - Zamentur - 26-11-2007 MyHeadXplod a écrit :Dans le cadre de vos jeux vous bosser sur des trucs énormes à ce point là? oOOui, l'exemple type c'est la creation d'un gps global pour les jeux qui se deroule sur une carte... Au depart sur Ragol, on avais d'ailleurs un gps qui creer 30 minute à se charger, aujourd'hui c'est 4 secondes (ce qui est lmargement plus abordable) Et il ya eu plusieurs fois ce sujet dans le forum d'aide à la programmation! Donc les requetes à l'interieur des boucles faut faire très attention... Il y a un trucs qui n'a pas était cité: la creation de clef dans chaque tables de la bdd! C'est à mon sens incontournable, le jour ou j'ai compris que j'avais oublié de mettre 3 clef sur la table map j'ai accéléré le jeu d'1/4 de temps de génération (en 3 clics!) RE: Manière d'alléger son code - naholyr - 26-11-2007 Et puis un projet de jeu peut être plus ou moins gros, mais effectivement ça peut aller jusqu'à l'énorme. Et surtout c'est du code qui sera maintenu pendant des années : faire l'impasse sur la lisibilité c'est prendre un très gros risque. C'est pour ça que perso, je ne ferais pas ce sacrifice. RE: Manière d'alléger son code - X-ZoD - 27-11-2007 je suis daccord avec tous les dire de naholyr il faut aussi prendre en compte le fait que ton code peut être repris par quelqu'un ... même par toi des années plus tard les boucles avec des requetes ? --> oh my god un while plutot qu'un foreach ? --> pourquoi? le foreach est plus facile a comprendre et ne serait ce que pour la fainéantise il est plus facile a taper mdr pour ma part .... le principe de base d'un code php est le suivant Citation :- ouverture sql d'autres choses Citation :-> éviter le plus possible les if car ca ralenti le traitement de votre code ... préférer les tableaux indexés sinon des infos pratiques qui peuvent aider Citation :pour ceux qui ne savent pas on peut introduire un select dans un insert ... c'est à dire eviter ca: et ne pas oublier ... parfois on fait des trucs alors que des fonctions deja toute faites existent, n'ayez pas la fainéantise de jeter un oeil sur google pour savoir si ce que vous aller faire n'existe pas deja sous la forme d'une fonction... ca ne vous coute rien et vous vous coucherez moins con je fait allusion a des fonctions sql du genr NOW() ou GET_LAST_ID() par exemple ou d'autres en php ... mais je vais vous faire une liste non plus RE: Manière d'alléger son code - MyHeadXplod - 27-11-2007 Je suis d'accord pour les requêtes dans les boucles et pour les clés à chaque table. Je n'ai jamais fais ce genre de connerie. En fait j'ai toujours peur de faire un truc qui rame, donc j'ai toujours tendance à vouloir optimiser dans ce sens là quit à perdre en lisibilité... Cependant vu que je suis en train de remettre tout le code de mon jeu en forme je vais suivre vos conseils et essayé d'améliorer la lisibilité. En ce qui concerne le foreach() j'ai toujours parcouru mon tableau de résultats de cette façon : while($ligne = mysql_fetch_array($resultat)) Du coup quand je vois ce bout de code je sais que je parcourt un tableau de résultat. Niveau lisibilité ça me convient donc... Mais bon c'est possible que ce soit moins lisible pour quelqu'un qui ne connait pas mon code. RE: Manière d'alléger son code - naholyr - 27-11-2007 Mais... est-ce que vous savez seulement ce que vous faites quand vous tapez "while ($ligne = mysql_fetch_array($resultat))" ? J'ai vraiment peur que non, car déjà jean-baptiste confond, mais là ça a l'air d'être à nouveau confus pour quelqu'un d'autre... Voici les informations que vous DEVEZ savoir pour comprendre la signification du bout de code que vous utilisez tous les jours :
Donc quand on exécute Code : while ($ligne = mysql_fetch_assoc($res)) { Code : $ligne = mysql_fetch_assoc($res); Vous comprenez bien qu'un foreach n'a RIEN à faire là dedans, on ne parcourt pas un tableau mais les lignes d'un résultat de requêtes, qui ne sont accessibles que l'une après l'autre via les fonction mysql_fetch_*(). C'est absolument le même fonctionnement que quand on parcourt avec fgets() les lignes d'un fichier. J'espère avoir un peu éclairci les choses :/ |