Aller au contenu

test de limite de nombre


Luckyluk

Sujets conseillés

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

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

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 pages

while ( $pages > $p_page){ // on fait la boucle tant qu'on ne dépasse pas le nombre de pages
if ($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{// sinon
echo "<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

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' :D

Pour le reste, t'oublies pas : un lien par page vers mon site :lol:

$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

Pour le reste, t'oublies pas : un lien par page vers mon site :lol:

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...