foreach

very
Invité n'ayant pas de compte PHPfrance

23 août 2007, 13:17

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 13:36

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...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

23 août 2007, 13:40

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...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 13:46

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 ...
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...