Page 1 sur 1

Continuité d'avancement avec changement de paramètres

Posté : 07 janv. 2007, 19:59
par Ultim4T0m
Bonjour à tous,

Désolé pour le titre, je n'ai pas vraiment trouvé de titre concis pour le problème auquel je suis confronté.

Alors voilà... Par où commencer.

En fait, l'utilisateur initialise un évènement, qui doit incrémenter un champ dans une table de ma bdd. Ce moment d'initialisation est `datedebut` dans ma table ( timestamp : date("U") )

La durée devant s'écouler entre `datedebut`et le moment où la requête doit s'exécuter est calculé avec plusieurs données, dont une pouvant changer entre temps, modifiant ainsi la durée restante.

J'affiche la durée sous forme de pourcentage d'avancement, mais dans mes calculs, tout se fait avec `datedebut` par rapport à date("U") et la durée de développement.

Si le paramètre n'est pas modifié pendant l'avancement, celui ci se déroule très bien.

Mon problème vient du fait que si, par exemple, l'avancement en est à 60%... J'aimerais que malgré la modification du paramètre, cela reprenne à partir de 60% et non que cela recalcule toute la durée en fonction du nouveau paramètre, pouvant ainsi rammener l'avancement à 20% si le nouveau paramètre est inférieur à l'ancien, soit l'augmenter pour atteindre 100%....



Je ne sais pas si du code éclairerait mes propos.

J'espère que c'est suffisamment clair :oops:

Merci d'avance

Re: Continuité d'avancement avec changement de paramètres

Posté : 07 janv. 2007, 20:23
par Cyrano
J'espère que c'est suffisamment clair
Pas vraiment, voici sommairement ce que j'ai compris :
Dans le déroulement de ton programme, tu pars d'un point A et dois arriver à un point B en exécutant un certain nombre d'actions : Tu souhaites garder un genre de point de repère t'indiquant quelle action a déjà été exécutée, point de repère évoluant au fur et à mesure de l'avancement.

Mais dans ce cas, sur un plan global bien sur parce que je saisis assez mal les détails, il te faudrait enregistrer une valeur booléenne à chaque action terminée : tu pourrais avoir ça dans un tableau indexé, tableau que tu initialises d'une manière ou d'une autre et en cas de modification du paramètre, tu récupères ces valeurs et reprends à partir du point où ton booléen vaut "false" (sous-entendu : "à exécuter" // true = "déjà exécuté")

:-k

Posté : 07 janv. 2007, 20:34
par Ultim4T0m
Hum, oui, c'est à la fin d'un temps définit que s'exécute le programme en gros.


J'ai pensé faire un système calculant la différence existante entre la durée1 et la durée2 (avant et après modification du paramètre litigieux).

Il me faudrait en fait calculer la différence de ces deux durées, la comparer au temps déjà écoulé depuis le départ, et modifier `datedebut`en conséquence, ce que j'ai tenté vainement de faire.

Auriez vous un conseil à me donner pour avancer, car là j'avoue que je bloque un peu..

Serait-ce plus judicieux de tout calculer avec des pourcentage et conserver une trace de ce qui est déjà effectué (chose qui ne me semble que peu envisageable) ou bien trouver un moyen de modifier `datedebut`, ce qui reviendrait en fait à baser le calcul sur de nouvelles bases, avec le nouveau paramètre modifié.


Si besoin de code il y a, je peux bien sûr le fournir, mais il n'est sans doute pas très clair... Bien qu'avec des mots, ce soit compliqué d'expliquer clairement un point précis ^^'

Posté : 07 janv. 2007, 21:27
par Cyrano
Je crains que du code n'éclairera pas grand chose. Il faut bien comprendre le but poursuivi et pour savoir comment coder ça, la meilleure méthode que je vois consiste à commencer avec papier et crayon et à faire des croquis. En clair, il faut que tu écrives le déroulement en pseudo-langage, donc quelque chose proche du français : on appelle ça créer un algorithme. Ça peut ressembler à ceci :

Code : Tout sélectionner

>Début variable nom1 = valeur1 variable nom2 = valeur2 Si condition x Alors Tant que condition z action z Fin Tant que Sinon action y Fin si etc... Fin
Bien sur il faut détailler tout ça,là où j'ai marqué "valeur1" ou "action x" par exemple, tu écris l'action. Tu peux te retrouver avec plusieurs croquis parallèles et dans ce cas tu auras dans certains des inclusions à indiquer au même titre que tu définis les paramètres de départ.

En faisant ça, tu visualiseras d'abord beaucoup mieux le déroulement et ensuite, quand tu auras tout défini, tu réaliseras que tu auras ... écrit ton programme qu'il restera juste à traduire en PHP.

Posté : 07 janv. 2007, 21:31
par Ultim4T0m
Je vais tenter de voir ça comme ça alors... J'ai du mal à concevoir le système donc ça m'aidera sans doute.

J'y étais presque cette nuit pourtant ^^'

Bref, merci de tes réponses, je vais le mettre en Délestage, quitte à revenir poster ici plus tard si le besoin se fait sentir.