Phnom
Messages postés4Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 février 2008 23 sept. 2004 à 02:36
Merci Kirua pour ces commentaires.
Il est vrai que le fichier est lu x fois, mais ma page n'est elle même solliciter qu'épisodiquement.
Néanmoins, j'avais opté au départ pour une solution relativement proche de celle que tu suggères et cela ne fonctionnait comme je le souhaitais.
Dès que j'ai un moment je regarde de plus près ta solution.
Encore une fois merci
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 21 sept. 2004 à 16:13
tu te rends compte qu'en faisant comme ça tu ouvres ton fichier $nbrjours fois chaque fois que tu affiches la page? c'est bcp trop. voilà comment je te propose de faire:
tu sauves dans ton fichier les dates occupées, une par ligne.
ensuite, dans ton code tu fais ça:
$tableau = file('nom_du_fichier.ext');
voici l'aide au sujet de la fonction file() sur php.net:
(PHP 3, PHP 4 , PHP 5)
file -- Lit le fichier et renvoie le résultat dans un tableau
Description
array file ( string filename [, int use_include_path [, resource context]])
file() est identique à readfile(), hormis le fait que file() retourne le fichier filename dans un tableau. Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots sont placés en fin de ligne.
Note : Chaque élément du tableau résultat contiendra la nouvelle ligne de fin de chaîne. Il faudra donc utiliser rtrim() sur cette valeur pour la supprimer.
bien, on part du principe que les dates ds le fichier ne sont pas classées dans l'ordre, et ça se comprend. pour bien faire, il faudrait écrire un algo un peu plus compliqué, mais comme je pense que tu n'auras jamais 100 dates, c'est pas trop grave de faire ça 'à la naïve'.
tu fais donc ta boucle de 'ajourd'hui' jusqu'à 'ajourd'hui + $nbrjours', et pour chaque passage, donc chaque date, tu parcours le tableau $tableau et tu regardes si rtrim($tableau[$compteur]) == $date_verifiee
bien sûr, si tu ne trouves pas la $date_verifiee dans le $tableau, c'est que tu peux la rajouter au select.
de cette façon, tu n'ouvres qu'une seule fois le fichier, c'est bcp plus léger.
reste que, c'est pas adapté pour des gros traitement, puisque tu dois traverser $nbrjours fois count($tableau) éléments, et chaque fois effectuer un rtrim et une comparaison!! enfin...
ah, pê une amélioration: après la fonction file(...), tu parcours le tableau en faisant: $tableau[$compteur] = rtrim($tableau[$compteur]), comme ça tu devras plus appeler rtrim() par la suite, ça fait déjà une économie substantielle.
23 sept. 2004 à 02:36
Il est vrai que le fichier est lu x fois, mais ma page n'est elle même solliciter qu'épisodiquement.
Néanmoins, j'avais opté au départ pour une solution relativement proche de celle que tu suggères et cela ne fonctionnait comme je le souhaitais.
Dès que j'ai un moment je regarde de plus près ta solution.
Encore une fois merci
21 sept. 2004 à 16:13
tu sauves dans ton fichier les dates occupées, une par ligne.
ensuite, dans ton code tu fais ça:
$tableau = file('nom_du_fichier.ext');
voici l'aide au sujet de la fonction file() sur php.net:
(PHP 3, PHP 4 , PHP 5)
file -- Lit le fichier et renvoie le résultat dans un tableau
Description
array file ( string filename [, int use_include_path [, resource context]])
file() est identique à readfile(), hormis le fait que file() retourne le fichier filename dans un tableau. Chaque élément du tableau correspond à une ligne du fichier, et les retour-chariots sont placés en fin de ligne.
Note : Chaque élément du tableau résultat contiendra la nouvelle ligne de fin de chaîne. Il faudra donc utiliser rtrim() sur cette valeur pour la supprimer.
bien, on part du principe que les dates ds le fichier ne sont pas classées dans l'ordre, et ça se comprend. pour bien faire, il faudrait écrire un algo un peu plus compliqué, mais comme je pense que tu n'auras jamais 100 dates, c'est pas trop grave de faire ça 'à la naïve'.
tu fais donc ta boucle de 'ajourd'hui' jusqu'à 'ajourd'hui + $nbrjours', et pour chaque passage, donc chaque date, tu parcours le tableau $tableau et tu regardes si rtrim($tableau[$compteur]) == $date_verifiee
bien sûr, si tu ne trouves pas la $date_verifiee dans le $tableau, c'est que tu peux la rajouter au select.
de cette façon, tu n'ouvres qu'une seule fois le fichier, c'est bcp plus léger.
reste que, c'est pas adapté pour des gros traitement, puisque tu dois traverser $nbrjours fois count($tableau) éléments, et chaque fois effectuer un rtrim et une comparaison!! enfin...
ah, pê une amélioration: après la fonction file(...), tu parcours le tableau en faisant: $tableau[$compteur] = rtrim($tableau[$compteur]), comme ça tu devras plus appeler rtrim() par la suite, ça fait déjà une économie substantielle.
bonne continuation.