multiples pages XML et filtres

Eléphanteau du PHP | 14 Messages

09 oct. 2010, 17:16

Bonjour à toutes et à tous
Je poste ici mon premier sujet car j'ai besoin d'aide!!!
je dois traiter des données xml en php, et j'avoue que je ne maitrise pas tout a fait le sujet, voire même pas du tout!!!!!!

mon souci: un fichier xml découpé en plusieurs pages du type:

Code : Tout sélectionner

http://minfichierdécoupé.xml?page=1 http://minfichierdécoupé.xml?page=2 http://minfichierdécoupé.xml?page=3
Chaque fichier contient 50 membres

Code : Tout sélectionner

<membres> −<membre> <classement>1</classement> <first_name>julien</first_name> <last_name>durand</last_name> <ville>PARIS</ville> </membre> −<membre> <classement>2</classement> <first_name>david</first_name> <last_name>bidule</last_name> <ville>LYON</ville> </membre> . . . . −<membre> <classement>50</classement> <first_name>gerard</first_name> <last_name>truc</last_name> <ville>MARSEILLE</ville> </membre> </membres>
je dispose d'environ 100 pages xml externes dont je ne peux pas modifier la structure.

Je sais parser page par page pour afficher une page de résultats sous forme d'un tableau.
<?php

// URL du Flux XML :
$fichier_xml = 'http://minfichierdécoupé.xml'; 


// Ouverture, lecture puis fermeture du Flux XML : 
$file = fopen($fichier_xml,"rb"); 
if ($file){ 
	$raw = '';
	while (!feof($file)) {
	  $raw .= fread($file, 8192);
	}
	fclose($file); 
	
	// D?but du code qui r?cup?re les infos xml : 
	if(eregi("<membres>(.*)</membres>",$raw,$rawbalise)){ 
		$balise = explode("<membre>", $rawbalise[0]); 
		$maximum = count($balise); ; 
		
		for ($i=1;$i<$maximum;$i++) { 
		
		//echo $balise[$i]."<hr>";
			eregi("<classement>(.*)</classement>",$balise[$i],$classement);
			eregi("<first_name>(.*)</first_name>",$balise[$i],$first_name);
			eregi("<last_name>(.*)</last_name>",$balise[$i],$last_name);
			eregi("<ville>(.*)</ville>",$balise[$i],$ville);
			
	

    if ($i % 2 == 0)
    {
     echo '<tr class="">';
    }
    else
    {
      echo '<tr class="odd">';
    }

	 echo 	'<td width="2%">'.$classement[1]."</td>\n";
	 echo 	'<td>'.$first_name[1]."&nbsp;".$last_name[1]."</td>\n";
	 
	 
	 echo 	'<td width="24%">'.$ville[1]."</td>\n";
	
	}
	}
	}

						
		
 
?>   
Mon problème est que sur plus de 5000 membres(100 pages xml de 50 membres) je veux filtrer sur le noeud »ville » et ainsi afficher le classement par ville.

Et la oups! Je sais pas comment aborder le sujet.

Je dispose d'une table MySql et je me suis dit que de tout importer à l'intérieur d'une table « membres » et ensuite afficher cette table via php pourrait être une solution, mais pareil, importer des tables xml dans mysql est obscure pour moi

Si quelqu'un sait comment faire,ou peut m'orienter vers une méthode, un livre, un tuto.............Je lui en serais tres reconnaissant!
Merci pour votre aide
David

ViPHP
ViPHP | 5462 Messages

09 oct. 2010, 18:12

pour lire du XMl c'est avec SimpleXML :wink:

Eléphanteau du PHP | 14 Messages

09 oct. 2010, 20:13

Merci mais le probleme n'est pas de lire le flux! c'est le manipuler!
Merci quand mm mais avec simpleXml, mon flux ne passe pas

ViPHP
ViPHP | 5462 Messages

09 oct. 2010, 20:20

Merci mais le probleme n'est pas de lire le flux! c'est le manipuler!
Merci quand mm mais avec simpleXml, mon flux ne passe pas
ah ? t'as quoi comme erreur ?

Eléphanteau du PHP | 14 Messages

11 oct. 2010, 12:45

page blanche!
Mais je vais voir avec la doc pour creuser

ViPHP
ViPHP | 5462 Messages

11 oct. 2010, 13:22

page blanche!
Mais je vais voir avec la doc pour creuser
il faut activer les erreurs pour PHP sinon tu vas pas t'en sortir...