|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() |
Bonjour à tous,
Je me sens vraiment très bête sur ce coup là. En fait, je souhaiterai un coup de main afin d'optimiser le code dont voici un extrait : Code PHP :
Je vous prie d'avance d'excuser ce code pas optimiser pour un bit. Mais malheureusement, mon cours d'algo remonte à il y a tellement longtemps, que je ne sais plus comment résoudre ce problème. Une solution serait par exemple de concaténer les différentes variables $carnaval, $apapier, $fpapier et $tresor en une chaine de caractère, et passer par un switch case, qui me ferais 15 case (le cas ou tout est null est signe d'erreur et renvoie une exception). En vous remerciant pour toutes aide que vous pourrez m'apporter pour me mettre sur la voie. Si par contre je trouve une solution afin de réduire le nombre d'itération de if, je placerai le code sans hésiter.
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
||
|
|
00
|
|
|
#2 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Pour optimiser ton code, surtout d'un point de vue esthétique, fais un switch déjà. Je te rappelle que tu peux - utiliser des expressions dans les case - utiliser des chaines dans les case (contrairement à C) - grouper les case Exemple: Code :
Ensuite, je crois comprendre que tu utilise des masques binaires, si c'est bien le cas, tu peux te servir des opérandes binaires en PHP pour factoriser un max. Potasse un peu tout ça et reviens nous voir
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() |
Merci beaucoup pour ces quelques informations, j'ai donc encore un peu de lecture pour cette de journée.
J'ai une autre version pas très optimisée, mais demandant moins de comparaison au niveau des ifs. Voici ce que cela donne :Code PHP :
Bon, j'ai commencé à la rendre avant de voir le message, donc, je vous prie d'être indulgent. [EDIT]Pour info, le lien vers 11heaven est malheureusement kapout. La page n'existe plus sur le site en fait
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
||
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() |
Bonsoir,
C'est mieux mais ça fait encore un peu chargé, il faut une tu utilises case comme te l'a expliqué Benjamin. A bientôt, Alexis
__________________
J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar) Je vous emmène en voyage sur la Route 66 ou sur mon mon site pro (qui est en pleine restructuration car il est toupouri) |
|
00
|
|
|
#5 |
|
Membre habitué
![]() |
Bonjour à tous,
Alors me revoilà, j'ai bien compris que le fait de passer par un switch / case pouvait être beaucoup plus lisible au niveau du code. J'ai lu, il y a quelques jours sur un forum, que dans certains cas l'utilisation de if était plus rapide. Autre chose, Benjamin a parlé d'opérandes binaires pour le php pour factoriser un max. En fait, lorsque j'ai noté dans le code /*1010*/, je parle de 4 variables distinctes, mais n'ayant chacune que deux valeurs possible (0 ou 1). Ce matin, j'essaie donc de combiner ces variables dans l'ordre qui m'intéresse afin de pouvoir obtenir un semblant de quartet binaire. Au niveau de l'imbrication et de la combinaison des switch, je ne sais pas encore vraiment comment faire. Va falloir que je retourne en mode école, et que je sorte la feuille papier. AAAHHH, le papier, j'avais presque oublier que ça pouvait être pratique...
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Heu... en relisant attentivement ton code, on peut en effet gravement l'optimiser.
Je résume : * Tu as 4 variables en entrée : - Carnaval (C) - APapier (AP) - FPapier (FP) - Tresor (T) * Tu as 8 variables en sorties : - utXfin - utXdebut avec X valant C, AP, FP ou T Chaque fois qu'une variable C, AP, FP, T est renseignée, tu souhaites stocker $utdebut dans la variable utXdebut correspondante, et $utdebut+3600 dans la variable utXfin correspondante. donc : Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#7 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Voici comment je procéderai si j'étais toi: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
10
|
|
|
#8 |
|
Membre habitué
![]() |
Hihi, oui, ce n'est pas aussi facile que cela en fait Fladnag.
La chose ce conçoit différement. En fait, le début est tout à fait correcte, mais au niveau de l'assignation des heures de début et de fin de visite, cela s'avère un peu plus complexe. Si le flag carnaval est placé, la visite commencera automatiquement par là. Si le flag aPapier est placé, la visite si poursuit par là. Si le flag fPapier est placé, ... Si le flag Tresor est placé, on termine par là. Donc si carnaval n'est pas setté, mais que aPapier l'est, on commence par aPapier. Si ni carnaval ni aPapier sont settés, on commence par fPapier. Si ni carnaval, ni aPapier, ni fPapier sont settés, on commence par Trésor.
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
|
|
00
|
|
|
#9 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Aw, c'est pas simple de suivre ta logique, tu peux pas nous dessiner un AEF ? (automate à état fini).
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
Bon, on à du mal à comprendre. Même si pour toi ça parrait clair.
Ne serait-ce pas plus simple que tu expliques ce que tu veux faire? Ce que ton "appli" doit faire? Avec comme dit b.d un AEF?
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
|
00
|
|
|
#11 | ||||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Ok, donc le plus lisible c'est de passer par des tableaux ;o)
Code :
Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||||
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() |
Me revoici,
Alors en fait, il s'agit de réaliser une réservation de salles et d'ateliers pour des visites guidées. Le musée en question propose 4 salles et ateliers différents, qui peuvent être combiné dans la visite. Les salles et atelier qu'il est possible de visiter sont :
Un visiteur peut choisir le réaliser une visite de n'importe laquelle de ces ressources. Afin de noter si une visite est demandée ou non, les valeurs 1 ou 0 sont respectivement renseignées. Chaque visite dure 1heure (soit 3600 secondes). donc si le visiteur choisit de visiter "l'Atelier du Carnaval" et "La Fabrication du Papier", il aura demandé 2 visites de 1 heure, soit 2 heures de visite. Maintenant, voilà le hic. Lorsqu'une personne demande la visite de plusieurs ressources, la visite doit se dérouler dans l'ordre de la liste renseignée plus haut, à savoir, si elle demande de visiter "l'Atelier du Carnaval" et "La Fabrication du Papier" à partir de 13h, elle commencera sa visite à 13h avec l'Atelier du Carnaval, et poursuivra par la Fabrication du Papier une heure plus tard à savoir à 14h. Voilà, je pense que l'explication fournies permet de beaucoup mieux comprendre ce que je cherche à faire. Je viens également de regarder d'un peu plus près le code de Fladnag, et il semble que cela pourrait marcher. Je vais plonger encore un peu plus dedans, en essayer de ne pas me noyer, et je vous retiens au courant. Merci en tout cas pour les infos utiles et pratique que vous m'avez fournies, et passer tous une bonne journée.
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
|
|
00
|
|
|
#13 | ||||
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
Bah...
tu fais des checkbox, tu affectes une valeur numérique à tes checkbox: Code html :
Et tu récupères ces valeurs qui sont dans un tableau. Tu tries en ordre croissant pour savoir d’où ça commence et pour savoir combien de temps ça dure tu fais un count($_POST['visite']) qui t'indiquera le nombre de visite coché. Donc exemple 3 * 3600... Tu t’embêtes trop je pense. ___ Code :
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
||||
|
00
|
|
|
#14 | ||
|
Membre habitué
![]() |
Merci pour cette proposition RadicalDreamer, mais je n'arrive pas à trouver de solution pour gérer mes heures dans la version proposée.
Mais je me suis encore un peu creusé la tête, et je pense avoir une bonne piste, sans trop me prendre la tête. Je souhaite passer par une variable "facteur". Je m'explique, cette variable me permettra de comptabiliser le nombre de visite et de calculer les heures de début et de fin pour chaque visite. J'ai pas encore tout fini au niveau du code, mais ça donnerai quelque chose dans le style Code PHP :
Maintenant, si je réussi à placer l'ensemble intelligemment dans une boucle, je pense obtenir le meilleur résultat. Et wahou, je me rends compte qu'on est bien loin de la première version de l'ensemble de if imbriqué, ou encore de la série switch / case. Bon, je m'y atèle. Encore merci pour toutes les idées proposées, et bonne après midi à tout le monde.
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
||
|
|
00
|
|
|
#15 | ||
|
Membre habitué
![]() |
Bonjour à tous,
Ce matin je suis super motivé, et pourtant je n'ai pas de temps... Voici donc le code que je viens de mettre en place pour mes besoins, et je suis certain que je peux encore faire mieux, avec votre aide bien sûr : Code PHP :
__________________
First step: F.A.Q. Second step: Forum -> Recherche Thrid step: Forum -> Poser une question Fourth step: Forum -> Attendre une réponse Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu Simple non ? l'utilisation de developpez.com
|
||
|
|
00
|
|
|
#16 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Je passais par là et je te propose une autre soluce. En espérant avoir bien compris ta problématique. Code :
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com