par
tgx » 16 sept. 2010, 17:11
Bonjour tout le monde,
Disposant de plusieurs pages en PHP, je cherchais à ajouter pour l'une d'entre elles un bout de page récupérant une partie des données d'un RSS. C'est sur du réseau interne.
Petit détail du principe :
- une dizaines de machines sur le réseau en sont à mettre en ligne leurs petits RSS ; de ce côté je ne peux rien modifier, ce sont juste ces informations qui servent de source, pour être rattrapées par le PHP
- chacun des RSS est un XML avec peu de balises, ressemblant à ça :
Code : Tout sélectionner
<poste>
<etat>Ok</etat>
<stock>8</stock>
<libre>12</libre>
<option>AVEC</option>
</poste>
- les données à récupérer sont les chaînes de caractères de chaque ligne (état, stock, libre, option)
Le PHP actuel (très artisanal) est de ce style :
Code : Tout sélectionner
<?php
$nom[1]="Nom0";
$nom[2]="Nom1";
...
$nom[10]="Nom9";
function ouvre () {echo "<tr align=\"center\">";}
$num=1;
while($num<=10)
{
ouvre();
echo "<td>".$nom[$num]."</td>";
$parseurXML = xml_parser_create(); xml_set_character_data_handler($parseurXML, "fonctionTexte");
$fp=fopen("https://adresse.page.flux/getStatus?id=".$num,"r"); if(!$fp) die("<br /><br />Erreur : Fichier XML introuvable.");
// while($ligneXML=fgets($fp, 1024)) {
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); echo "<i>".xml_parse($parseurXML,$ligneXML,feof($fp))."</i>" /*or die("Erreur XML")*/;
// }
xml_parser_free($parseurXML); fclose($fp);
$num++; /* echo "<\\tr>"; */
}
?>
NB : la fonction
ouvre() est pour gérer l'ajout des résultats dans un code HTML de tableau
Le problème est que que je tombe systématiquement sur ce résultat :
Code : Tout sélectionner
Warning: fopen(https://adresse.page.flux/getStatus?id=1) [function.fopen]: failed to open stream: No such file or directory in test-flux.php on line 84
Pour info :
Z'avez une titte idée du hic ?
Ou peut-être qu'il vaut mieux complètement revoir tout ça ?
Bonjour tout le monde,
Disposant de plusieurs pages en PHP, je cherchais à ajouter pour l'une d'entre elles un bout de page récupérant une partie des données d'un RSS. C'est sur du réseau interne.
Petit détail du principe :
[list][*] une dizaines de machines sur le réseau en sont à mettre en ligne leurs petits RSS ; de ce côté je ne peux rien modifier, ce sont juste ces informations qui servent de source, pour être rattrapées par le PHP
[*] chacun des RSS est un XML avec peu de balises, ressemblant à ça :
[code]<poste>
<etat>Ok</etat>
<stock>8</stock>
<libre>12</libre>
<option>AVEC</option>
</poste>[/code]
[*] les données à récupérer sont les chaînes de caractères de chaque ligne (état, stock, libre, option)[/list]
Le PHP actuel (très artisanal) est de ce style :
[code]<?php
$nom[1]="Nom0";
$nom[2]="Nom1";
...
$nom[10]="Nom9";
function ouvre () {echo "<tr align=\"center\">";}
$num=1;
while($num<=10)
{
ouvre();
echo "<td>".$nom[$num]."</td>";
$parseurXML = xml_parser_create(); xml_set_character_data_handler($parseurXML, "fonctionTexte");
$fp=fopen("https://adresse.page.flux/getStatus?id=".$num,"r"); if(!$fp) die("<br /><br />Erreur : Fichier XML introuvable.");
// while($ligneXML=fgets($fp, 1024)) {
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); xml_parse($parseurXML,$ligneXML,feof($fp)) /*or die("Erreur XML")*/;
$ligneXML=fgets($fp, 1024); echo "<i>".xml_parse($parseurXML,$ligneXML,feof($fp))."</i>" /*or die("Erreur XML")*/;
// }
xml_parser_free($parseurXML); fclose($fp);
$num++; /* echo "<\\tr>"; */
}
?>[/code]
NB : la fonction [i]ouvre()[/i] est pour gérer l'ajout des résultats dans un code HTML de tableau
Le problème est que que je tombe systématiquement sur ce résultat :
[code]Warning: fopen(https://adresse.page.flux/getStatus?id=1) [function.fopen]: failed to open stream: No such file or directory in test-flux.php on line 84[/code]
Pour info :
[list][*] l'adresse https://adresse.page.flux/getStatus?id=1 affiche bien la page RSS / XML
[*] la ligne 84 est celle concernant le fopen() qui lit le RSS[/list]
Z'avez une titte idée du hic ?
Ou peut-être qu'il vaut mieux complètement revoir tout ça ?