Parser un xml sur plusieurs pages ?

Parser un xml sur plusieurs pages ? - PHP - Programmation

Marsh Posté le 07-06-2006 à 16:47:08    

bonjour,
 
Actuellement je parse un fichier xml en php, en faisant une mise en cache du code généré. Cependant maintenant le fichier xml devient un peu long. Je voudrais donc le parser sur plusieurs pages? Afficher par exemple 20 résultats par page.
Voila le code que j'utilise:
 

Code :
  1. <?php
  2. // le répertoire "cache"  
  3. $dir_cache = 'cache/';
  4. // nom du fichier mis en cache
  5. $file_cache1 = 'flux1.html';
  6. if (!is_dir($dir_cache)) {
  7. exit ('Répertoire cache "'.$dir_cache.'" inexistant !');
  8. }
  9. // on impose la mise à jour avec une certaine periodicité
  10. $date_modif1 = time();
  11. // le delai entre deux rafraichissements en secondes  
  12. $delai1 = 43200;
  13. // le fichier est-il en cache et suffisamment jeune
  14. $file_cache1 = $dir_cache.$file_cache1;
  15. $en_cache1 = file_exists($file_cache1);
  16. if ($en_cache1) {
  17. $en_cache1 = ($date_modif1 < filemtime($file_cache1) + $delai1);
  18. }
  19. if (!$en_cache1) {
  20. // Lecture d'un fichier XML
  21. function lit_xml1($fichier,$item,$champs) {
  22.    // on lit le fichier
  23.    if($chaine = @implode("",@file($fichier))) {
  24.       // on explode sur <item>
  25.       $tmp = preg_split("/<\/?".$item.">/",$chaine);
  26.  
  27.    $nombre = sizeof($tmp);
  28.       // pour chaque <item>
  29.       for($i=1;$i<$nombre -1;$i+=2)
  30.          // on lit les champs demandés <champ>
  31.          foreach($champs as $champ) {
  32.             $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
  33.             // on ajoute au tableau
  34.             $tmp3[$i-1][] = @$tmp2[1];
  35.          }
  36.       // et on retourne le tableau
  37.       return $tmp3;
  38.    }
  39. }
  40. // Exemple :
  41. $xml1 = lit_xml1("http://monsite.com/xml.php","item",array("title","description","link","category","url" ));
  42.   foreach($xml1 as $row1) {
  43.  
  44.  
  45.   $data1 .= '<br><table width=400 height=190 align=center cellpadding=0 cellspacing=0 bgcolor="#F8D630"  border=2>';
  46.   $data1 .= '<tr>';
  47.   $data1 .= '<td colspan=2 height=25 align=center bordercolor=#FFFFCC><a href='.$row1[2].'><font color="#000000">'.$row1[0].'</font> </a></td>';
  48.   $data1 .= '</tr>';
  49.   $data1 .= '<tr>';
  50.   $data1 .= '<td bordercolor=#FFFFCC height="136" width="133" valign="middle" align="center"><a href='.$row1[2].'><img src='.$row1[4].' border=0></a></td>';
  51.   $data1 .= '<td  bordercolor=#FFFFCC ><span class="tailledescrip" ><div style="margin-left:10px;">'.$row1[1].'</div></span></td>';
  52.   $data1 .= '</tr>';
  53.   $data1 .= '<tr>';
  54.   $data1 .= '<td colspan=2 height=25 bordercolor=#FFFFCC><p><em>catégorie :</em> '.$row1[3].' <em> </td>';
  55.   $data1 .= '</tr>';
  56.   $data1 .= '</table><br>';
  57.  
  58.  
  59. }
  60. $fd1 = fopen($file_cache1, "w" );
  61. fputs($fd1, $data1);
  62. fclose($fd1);
  63. } // fin if !$en_cache1
  64. include $file_cache1;
  65. ?>


 
Je ne vois pas trop comment modifier ce code ?
 
Merci

Reply

Marsh Posté le 07-06-2006 à 16:47:08   

Reply

Marsh Posté le 07-06-2006 à 22:53:22    

Essaye de modifier plutôt:
http://monsite.com/xml.php
en xml.php?page=1

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed