Discussion:
Se placer dans un fichier xml ?
(trop ancien pour répondre)
paul
2007-01-05 13:15:13 UTC
Permalink
Bonjour,

j'ai mis en ligne un code pour indiquer la météo d'une ville. Il est
tiré d'ici :
<http://www.asp-php.net/ressources/bouts_de_code.php?codid=340>

Ce code va prendre comme base du jour la valeur d=0 du xml dans ces
noeuds :

<day d="0" t="Wednesday" dt="Dec 13">
(...)
<day d="1" t="Thursday" dt="Dec 14">

puis il extrait les données :
$xml = $this->litXML($chaine,false,"day d=.*",array("hi","low","part
p=\"d\"","part p=\"n\"","wind"));


Oui mais il fait ça qu'on soit avant ou après minuit et jusqu'à la mise
à jour du fichier par les américains dans la matinée..
C'est à dire que les données sont fausses 1/4 du temps parce que "d" a
varié depuis minuit !!!


Il vaudrait donc mieux se baser sur day dt
<day d="0" t="Wednesday" dt="Dec 13">

Oui mais comment faire pour se placer là ?

J'ai essayé :
$xml = $this->litXML($chaine,false,"day dt= ...
mais ça ne fonctionne pas.
:-(

Si vous pouviez me mettre sur la piste : Merci !

Pour le reste, je pense trouver la valeur du jour dans le format de
dt="Dec 13", et le faire évoluer en me basant sur :
date("M j", strtotime("+$i day"))

Paul
Francois Girault
2007-01-09 21:39:05 UTC
Permalink
Post by paul
Bonjour,
Bonsoir,
Post by paul
j'ai mis en ligne un code pour indiquer la météo d'une ville. Il est
<http://www.asp-php.net/ressources/bouts_de_code.php?codid=340>
Si j'en crois le lien cité, la fonction lit_xml parse le xml à coup
d'expressions régulières. Ah quoi ça sert que le monsieur Zend il se
décarcasse à faire des api SimpleXML hein !

http://fr2.php.net/simplexml
Post by paul
[snip]
Oui mais il fait ça qu'on soit avant ou après minuit et jusqu'à la mise
à jour du fichier par les américains dans la matinée..
C'est à dire que les données sont fausses 1/4 du temps parce que "d" a
varié depuis minuit !!!
hum, là j'ai un peu de mal à comprendre si la lecture du fichier xml
n'est pas en cache qqpart. 'fin bon, c'est pas le problème.
Post by paul
Il vaudrait donc mieux se baser sur day dt
<day d="0" t="Wednesday" dt="Dec 13">
Oui mais comment faire pour se placer là ?
Faire une requête XPath adéquate :

http://fr2.php.net/manual/fr/function.simplexml-element-xpath.php

et pourquoi pas, tant qu'on y est, un cache auto-destructible (basé sur
la date de modification d'un fichier) à minuit pour économiser la bp
d'en face.
Post by paul
Si vous pouviez me mettre sur la piste : Merci !
Mes 2 centimes ...
--
FG
paul
2007-01-09 22:43:32 UTC
Permalink
Post by Francois Girault
Post by paul
Bonjour,
Bonsoir,
Post by paul
j'ai mis en ligne un code pour indiquer la météo d'une ville. Il est
<http://www.asp-php.net/ressources/bouts_de_code.php?codid=340>
Si j'en crois le lien cité, la fonction lit_xml parse le xml à coup
d'expressions régulières. Ah quoi ça sert que le monsieur Zend il se
décarcasse à faire des api SimpleXML hein !
http://fr2.php.net/simplexml
Oui je sais. Tu as raison.

Mais avant d'apprendre simplexml et de tout réécrire le code, j'aurais
voulu essayer de bricoler rapidement (???...) le code existant.
;-)
Post by Francois Girault
Post by paul
[snip]
Oui mais il fait ça qu'on soit avant ou après minuit et jusqu'à la mise
à jour du fichier par les américains dans la matinée..
C'est à dire que les données sont fausses 1/4 du temps parce que "d" a
varié depuis minuit !!!
hum, là j'ai un peu de mal à comprendre si la lecture du fichier xml
n'est pas en cache qqpart. 'fin bon, c'est pas le problème.
Ben non elle n'est pas en cache quelque part

Là je suis un peu confus de ne pas l'avoir fait encore.
:-(
Post by Francois Girault
Post by paul
Il vaudrait donc mieux se baser sur day dt
<day d="0" t="Wednesday" dt="Dec 13">
Oui mais comment faire pour se placer là ?
http://fr2.php.net/manual/fr/function.simplexml-element-xpath.php
Argh...
Je sens qu'il va falloir m'y coller
Post by Francois Girault
et pourquoi pas, tant qu'on y est, un cache auto-destructible (basé sur
la date de modification d'un fichier) à minuit pour économiser la bp
d'en face.
Oui c'est une bonne idée.
Euh... tu peux me dire comment on fait ?

Merci
Paul
Francois Girault
2007-01-20 13:41:40 UTC
Permalink
Post by paul
Oui c'est une bonne idée.
Euh... tu peux me dire comment on fait ?
Comme ça ? :

http://cjoint.com/?buj4Qx0LOx

Attention à rendre le répertoire 'cache' accessible en écriture au
propriétaire du processus php, ou affecter la variable
Weather::.$cache_dir à un chemin valide.

Et aussi, ne pas passer le code ville dans l'url, je crois qu'il y a une
faille potientelle car je m'en sers dans le nom du fichier cache; je
voulais faire mumuse avec simplexml donc 15 euros et un mars ne sont pas
fournis (il doit manquer des tests pour des cas en erreur).

Je voulais voir aussi si on pouvait faire un peu plus propre que le
script précédent tant en php qu'en html. Cependant je garantie pas
complètement le résultat, mais j'ai trouvé l'exercice intéressant :)
--
FG
paul
2007-01-23 23:22:50 UTC
Permalink
Post by Francois Girault
Post by paul
Oui c'est une bonne idée.
Euh... tu peux me dire comment on fait ?
http://cjoint.com/?buj4Qx0LOx
Attention à rendre le répertoire 'cache' accessible en écriture au
propriétaire du processus php, ou affecter la variable
Weather::.$cache_dir à un chemin valide.
Et aussi, ne pas passer le code ville dans l'url, je crois qu'il y a une
faille potientelle car je m'en sers dans le nom du fichier cache; je
voulais faire mumuse avec simplexml donc 15 euros et un mars ne sont pas
fournis (il doit manquer des tests pour des cas en erreur).
Je voulais voir aussi si on pouvait faire un peu plus propre que le
script précédent tant en php qu'en html. Cependant je garantie pas
complètement le résultat, mais j'ai trouvé l'exercice intéressant :)
Waouh...
C'est super clean !

Je viens de le tester et on passe bien au jour suivant à 00:00
;-)

Je vais décortiquer tout ça pour apprendre simplexml, la mise en cache,
etc...

Grand Merci !
Super...

Paul

Continuer la lecture sur narkive:
Loading...