seabird | 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 :
- <?php
- // le répertoire "cache"
- $dir_cache = 'cache/';
- // nom du fichier mis en cache
- $file_cache1 = 'flux1.html';
- if (!is_dir($dir_cache)) {
- exit ('Répertoire cache "'.$dir_cache.'" inexistant !');
- }
- // on impose la mise à jour avec une certaine periodicité
- $date_modif1 = time();
- // le delai entre deux rafraichissements en secondes
- $delai1 = 43200;
- // le fichier est-il en cache et suffisamment jeune
- $file_cache1 = $dir_cache.$file_cache1;
- $en_cache1 = file_exists($file_cache1);
- if ($en_cache1) {
- $en_cache1 = ($date_modif1 < filemtime($file_cache1) + $delai1);
- }
- if (!$en_cache1) {
- // Lecture d'un fichier XML
- function lit_xml1($fichier,$item,$champs) {
- // on lit le fichier
- if($chaine = @implode("",@file($fichier))) {
- // on explode sur <item>
- $tmp = preg_split("/<\/?".$item.">/",$chaine);
-
- $nombre = sizeof($tmp);
- // pour chaque <item>
- for($i=1;$i<$nombre -1;$i+=2)
- // on lit les champs demandés <champ>
- foreach($champs as $champ) {
- $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
- // on ajoute au tableau
- $tmp3[$i-1][] = @$tmp2[1];
- }
- // et on retourne le tableau
- return $tmp3;
- }
- }
- // Exemple :
- $xml1 = lit_xml1("http://monsite.com/xml.php","item",array("title","description","link","category","url" ));
- foreach($xml1 as $row1) {
-
-
- $data1 .= '<br><table width=400 height=190 align=center cellpadding=0 cellspacing=0 bgcolor="#F8D630" border=2>';
- $data1 .= '<tr>';
- $data1 .= '<td colspan=2 height=25 align=center bordercolor=#FFFFCC><a href='.$row1[2].'><font color="#000000">'.$row1[0].'</font> </a></td>';
- $data1 .= '</tr>';
- $data1 .= '<tr>';
- $data1 .= '<td bordercolor=#FFFFCC height="136" width="133" valign="middle" align="center"><a href='.$row1[2].'><img src='.$row1[4].' border=0></a></td>';
- $data1 .= '<td bordercolor=#FFFFCC ><span class="tailledescrip" ><div style="margin-left:10px;">'.$row1[1].'</div></span></td>';
- $data1 .= '</tr>';
- $data1 .= '<tr>';
- $data1 .= '<td colspan=2 height=25 bordercolor=#FFFFCC><p><em>catégorie :</em> '.$row1[3].' <em> </td>';
- $data1 .= '</tr>';
- $data1 .= '</table><br>';
-
-
- }
- $fd1 = fopen($file_cache1, "w" );
- fputs($fd1, $data1);
- fclose($fd1);
- } // fin if !$en_cache1
- include $file_cache1;
- ?>
|
Je ne vois pas trop comment modifier ce code ?
Merci
|