Page 1 sur 1

foreach

Posté : 23 août 2007, 13:17
par very
bonjour
j'ai un fichier XML qui represente le sitemap de mon site ( avec bien sur toutes les pages de mon site)
je veux alors créer une page "plan du site" qui récupere les pages qui sont sur le fichier sitamap.xml,

pour cela j'ai ma page plan.php avec le code suivant :
  <?php   
  $urlset = simplexml_load_file('http://www.site.com/googlemap.xml'); 
    
	
	foreach ($urlset->url as $url) { 
	         
		          
												  
$fp = fopen("$url->loc","r");
$page = '';
while (!feof($fp)) {
$page .= fgets($fp, 4096);
}
preg_match("#<title>(.*)</title>#Ui", $page, $titre);
echo "<a href='$url->loc'>".$titre[1]."</a>"."<br>";

}

?>
Qui me permet d'afficher toutes les pages du site sous format :

Code : Tout sélectionner

<a href"url-page.php">Title-page</a>
Mais le prb c que mon sitemap contient plus de 800 pages, et je veux alors afficher 50 liens par page et creer ainsi 800/50 =16 pages plan du site liées entre elles. et pas avoir les 800 liens sur une seule page.

Sera t-il possible ?

Merci

Posté : 23 août 2007, 13:36
par Ryle
Modération :
very, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ


C'est possible.. sur le même principe qu'une LIMIT avec MySQL suffit passer un numero de page en paramètre et de sauter les pagex50 premiers liens trouvés dans le fichier pour n'afficher que les 50 qui t'interessent...

Posté : 23 août 2007, 13:40
par Invité
merci de votre réponse, et c noté pr les régles

j'ai bien essayé de voir s'il y'a une possibilité d'utiliser limit avec foreach, mais walou c pas possible...

Posté : 23 août 2007, 13:46
par Ryle
J'ai pas dit d'utiliser LIMIT, ca marche qu'avec MySQL de toute façon :) J'ai suggéré de faire la même chose, avec un bête compteur :
$page = $_GET['page']; // numéro de la page à afficher

$cpt = 0; // compte le nombre de liens dans le fichier

forach (...) {
  $cpt++;

  if ($cpt < 50 * $page) // passe les premiers liens (si $page = 3 on saute les 150 premiers)
    continue;
  if ($cpt > 50 * ($page+1) ) // ignore les derniers liens (si $page = 3 on quitte la boucle après 200)
    break;

  echo ...
}