begin process at 2012 05 30 17:19:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

Autre

 > 

Parser un xml sur plusieurs pages ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Parser un xml sur plusieurs pages ?

mercredi 7 juin 2006 à 16:42:51 | Parser un xml sur plusieurs pages ?

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;
?>

[/code]

Je ne vois pas trop comment modifier ce code ?

Merci

mercredi 7 juin 2006 à 17:34:26 | Re : Parser un xml sur plusieurs pages ?

xactise

Membre Club
désolé pour ce post inutile et pour t'avoir (peut-etre) fait esperant en recevant un mail de la part de code-sources
mais je tenais juste a dire bonjours a malalam qui je suis sur va te faire un plaisir de te répondre ;)


L0rD...
mercredi 7 juin 2006 à 18:15:58 | Re : Parser un xml sur plusieurs pages ?

malalam

Administrateur CodeS-SourceS

Hello,

ouais...ben demain, lol, là je me rentre :-)
Et puis moi, je ne parse pas XML de cette manière...mais avec DOM ou simpleXML, et du SXLT pour la mise en forme.
ceci dit, en attendant demain : c'est quoi le problème ? C'est trop long à l'affichage (une trop grande page), ou trop lent ?

 

mercredi 7 juin 2006 à 18:47:24 | Re : Parser un xml sur plusieurs pages ?

seabird

Non ce n'est pas lent c'est juste que la page commence a etre trop grande, je voudrais faire ca en plusieurs pages. Pas plus de 20 résultats/page par exemple.

jeudi 15 juin 2006 à 00:12:16 | Re : Parser un xml sur plusieurs pages ?

seabird

C'est bon j'ai réussi à intégrer un système de pagination sur le parser Xml. J'ai fait plusieurs tests, tout fonctionne correctement.
Cependant j'ai un autre soucis, je viens d'essayer de parser un gros fichier xml ( 10Mo ) et forcément j'ai eu '500 Internal Server Error' , vu qu'avant d'afficher les résultats , je mets toutes les données dans un tableau qui forcément est immense.
A votre avis comment est-ce que je pourrais faire pour ne lire qu'une partie du fichier xml puis afficher , puis lire la suite , puis afficher etc... Je pense que c'est le seul moyen de m'en sortir non ?

Merci

jeudi 15 juin 2006 à 06:53:52 | Re : Parser un xml sur plusieurs pages ?

malalam

Administrateur CodeS-SourceS
Hello,

10Mo ? Tu t'en sortiras jamais avec ton parser. Au risque de me répêter : les outils fournis par php, développés par les créateurs de php sont optimisés...plutôt que de réinventer la roue, on gagne souvent à utiliser les fonctionnalités existantes de php.
Mais bref... un langage comme PHP n'est pas fait pour se grailler des fichiers de 10 Mo. Ne lire qu'une partie du XML implique déjà de savoir OU.  Bref oui, tu peux, mais à mon avis, ça ne résoudra pas ton problème : ça prendra toujours autant de temps et de ressources.
jeudi 15 juin 2006 à 08:48:34 | Re : Parser un xml sur plusieurs pages ?

seabird

Tres bien , je suis donc ouvert à tout suggestion. Quelqu'un a-t-il déjà lut un xml volumineux ? Comment il s'en est sorti ?
jeudi 15 juin 2006 à 09:03:29 | Re : Parser un xml sur plusieurs pages ?

nightlord666

Membre Club
Pour ce que tu fait, pourquoi tu n'utilise pas tout simplement XSLT pour transformer ton document XML ?
jeudi 15 juin 2006 à 09:16:07 | Re : Parser un xml sur plusieurs pages ?

malalam

Administrateur CodeS-SourceS

Ben par exemple ouais...mais ce sera de ttes façons long, un fichier de 10Mo à télécharger sur le navigateur, puis à interpréter par le navigateur...



Cette discussion est classée dans : fichier, file, cache, data1, cache1


Répondre à ce message

Sujets en rapport avec ce message

créé 1 zip avec un file [ par Stephane ] salubeh voila je voudrai savoir si c possible et si oui comment, créé un zip avec 1 fichier dedan (je n'ai besoin que d'y mettre 1 fichier)merci bcp ! balise, cache :( [ par elanspeech ] Bonjour,J'utilise la balise suivante :fichier.wav est mis a jour au cours du surf, cependant, lors que l'utilisateur veut ec Enregistrer un textarea dans un fichier !! [ par Cr0w ] Bonjour, j'ai un textarea à enregistrer dans un fichier...Malheureusement je ne vois po comment faire ...J'ai essayé la méthode suivante : function Re fonction : execution de fichier sql [ par flagada42 ] function execute_fichier_sql($chemin) { // Ouverture du fichier contenant les requètes SQL $file = fopen($chemin, "r"); //Tant que l'on est pa Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Problème d'upload de fichier [ par phenixoiseau ] phénixOiseauBonjour,Voilà j'ai écrit un script pour charger un fichier vers un serveur. Lorsque j'execute le script depuis ma machine le chargement du Probleme d'upload [ par morgandetoi06 ] bonjour,voila sur mon site j ai fait une page où les visiteurs peuvent uploader une photo perso, et elle sera affichée sur cette meme page.le principe à l'aide svp probleme d'upload [ par morgandetoi06 ] svp aidez moi j ai deja posté ce message sur le forum mais n ayant pas eu de reponse je le repostebonjour,voila sur mon site j ai fait une page où les formulaire + champ de type "File" [ par ironnyc ] Salut a tous!!j ai un petit prob avec mon formulaire pour faire un upload.Dans mon ficher "Formulaire.htm"j utilise un champ de type "File" (avec encr


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,095 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales