Luckyluk Posté 5 Septembre 2005 Partager Posté 5 Septembre 2005 bonjour, je voudrais afficher des lien dynamiquement toutes mes pages sont numeroter de 1 à 1000 je voudrais que : si je suis sur la page 100 , pouvoir orienter le visiteur vers les 4 pages precedentes - 99 98 97 96 4 pages suivantes - 101 102 103 104 le 4 serait une variable modifiable... le probleme particulier serait de tester si on n'est pas sur la page 999... car la 1003 n'existe pas ainsi que si on est sur la page 2... la -2 n'existe pas non plus... j'ai un peu de mal avec les boucles imbriqués.... ça ressemble à de l'affichage de page de forum... je verrai bien tout une serie de if (num-5>0) and if (num+5<=1000) limitemoins=num-5; limiteplus=num+5; else if...etc...mais ça m'a l'aire d'etre une usine à gaz Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 5 Septembre 2005 Partager Posté 5 Septembre 2005 Sans répondre à ta question et dans le but que tu réflèchisse au problème, voici ce que je te propose. Réflechis aux "cas limites", les cas qui "posent un problème". Chacun de ces cas fera l'office d'une branche dans ta condition "if"... Dans ton problème, les cas limites sont : Pages ayant un numéro plus petit que la limite du nombre de liens "précédents" à afficher. Dans ce cas tu dois décompter jusqu'à la première page (la condition de fin de boucle va varier en fonction de la page en cours). Pages ayant un numéro plus grand que le nombre maximum de pages - la limite de pages "suivantes" à afficher. Dans ton cas c'est 1000 - 4 ... Pages n'entrant pas dans ces deux cas de figure... ce sont les pages qui ONT x pages avant et x pages après (dans ton cas x=4)...cette branche correspont simplement à cas "else". Les boucles ne devraient pas être impbriquées, il y aura deux boucles par cas. Une pour les liens "Précédents" et une pour les liens "Suivants" ... à part dans les cas de la toute première page et de la toute dernière, mais comme tes conditions de sorties de boucles seront calculées en fonction du numéro la page en cours et de ta limite (4), la boucle ne sera pas effectuée (condition de la boucle à false dès le départ)... Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikhawa Posté 5 Septembre 2005 Partager Posté 5 Septembre 2005 j'avais utilisé un principe du genre pour l'affichage d'un archivage: $avant = $i - $msg_archive;// page précèdente$suite = $i + $msg_archive;// page suivante$pages = $nombre / $msg_archive;// calcul du nombre de pageswhile ( $pages > $p_page){ // on fait la boucle tant qu'on ne dépasse pas le nombre de pagesif ($p_page > 1){// si la boucle n'est pas au premier passage$bon = $bon + $msg_archive;// on rajoute la valeur de $msg_archive à $bon qui sera rajouté au lien};if ($bon == $i){// si $bon vaut $i (donc qu'on est sur la page en question)echo "<font color=\"red\">$p_page </font>";// on écrit le numéro de page sans lien en rouge}else{// sinonecho "<a href = \"archivage.php?i=$bon\">$p_page </a>";// on écrit le lien};$p_page++;// on incrémente la valeur de la variable par 1$der_p = $p_page - $pages;// calcul des messages restants if ($der_p > 0 && $der_p <= 1){// si il reste des messages non inclus dans le calcul des pages (entre 0 et 1) $bon = $bon + $msg_archive;// on rajoute la valeur de $msg_archive à $bon qui sera rajouté au lien if ($bon == $i){// si $bon vaut $i (donc qu'on est sur la page en question) echo "<font color=\"red\">$p_page </font>";// on écrit le numéro de page sans lien en rouge }else{// sinon echo "<a href = \"archivage.php?i=$bon\">$p_page </a>";// on écrit le lien de la dernière page }; };}; mais effectivement, y a sûrement plus simple et plus académique pour faire ça, et là j'ai mis le code plic ploc, c'est loin d'être niquel... et ça affichait toute les pages..... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 5 Septembre 2005 Partager Posté 5 Septembre 2005 Dans un premier temps, on définit les variables. Puis, on fait les tests pour vérifier les nombres. On en profite pour 'poser les barrières'. Si le nombre max. est plus grand que la dernière page, alors il est la dernière page Idem pour la première page. Puis, on fait une boucle avant, et une boucle après. On peut faire les boucles avec 'for' ou 'while', ca serait plus logique avec while, mais... je préfère 'for' Pour le reste, t'oublies pas : un lien par page vers mon site $deb= 1; // A priori, la première page ?$fin = 100; // la dernière page?$retour = 3; // combien de précédents ?$aller = 6; // combien de suivants ?//tout le reste n'est que.. littérrature;)if (isset($_GET['nb'])) $nb = $_GET['nb'];else $nb =$deb;if ($nb<$deb||$nb>$fin)$nb=$deb;$begin= $nb-$retour;if ($begin<=$deb)$begin=$deb;for($temp=$begin;$temp<$nb;$temp++) echo " - ".$temp;echo " - <font color=red>". $nb . "</font> - ";$temp = $nb+1;$end = $nb+$aller;if ($end>=$fin)$end=$fin;for($temp=$temp;$temp<=$end;$temp++) echo $temp." - "; Lien vers le commentaire Partager sur d’autres sites More sharing options...
Luckyluk Posté 5 Septembre 2005 Auteur Partager Posté 5 Septembre 2005 Pour le reste, t'oublies pas : un lien par page vers mon site merci l'anonyme! ça marche nickel ! vers quelle site le lien sur toutes mes pages? ps: merci aux autres... j'ai pas essayé mais merci quand meme Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant