Page 1 sur 1

Faire une pause pendant un while

Posté : 17 oct. 2006, 17:03
par Petithomme
Bonjour a tous !

voila je suis a mes 1ere heures de php mais avec mes quelques connaissances en C je m'en sors pour mon ptit script que voici :
<?

$i = 1;
$nb=1;

while ($i<=10) {

echo "<a href=img/photo$i.jpg target=_blank><img src=img/photo$i.jpg width=120 height=100></a>";
$i++;
$nb++;
If ($nb>=6) {
echo "<br><br>";
$nb=1;
}
}
?>
en fait il parcours le repertoire img et affiche toute les images .jpg en 120*100 avec leur lien.

Ce script va bien pour 10-50 photos mais pour plus c'est la galère !

Je voudrais (sans passer par SQL) qu'au bout de 20 images affichées, il stoppe et me mette en bas de page : PAGE SUIVANTE pour afficher les 20 suivantes.
Cela peut paraitre facil et des script sont peu être trouvables sur le web mais je souhaite apprendre en m'expliquant.

Merci à tous ^^ :wink:

Posté : 17 oct. 2006, 17:15
par goeb
salut,
tu pourrais scinder ton programme en 2 parties :
- d'abord tu lis tous les fichiers dans un tableau, que tu tries (le tri permet d'avoir le même ordre d'une page à la suivante)
- ensuite tu affiches les éléments du tableau des indices $n à $m
- et pour le calcul de $n et $m tu peux dire :
$n = $_GET['position'];
$m = $n+20;

for ($i = $n; $i<$m; $i++) {
  // affichage image[$i]
}

echo '<a href="page.php?position='.$m.'">page suivante</a>';

(j'ai pas mal simplifié, il faut que tu recolles les morceaux qui manquent...)

Posté : 17 oct. 2006, 17:15
par Ryle
Hello :)

Il y a plusieurs façon de faire... tu peux par exemple, au lieu de commencer à "$i=0" et de boucler tant que "$i<10", utiliser une variable $page que tu passerais dans tes liens suivant/précédent :

Sur la page 0, tu aurais : $i = 0 et $i < 20
Sur la page 1, tu aurais : $i = 20 et $i < 40
Sur la page 2, tu aurais : $i = 40 et $i < 60
...

Tu peux donc envisager en déduire une règle : "$i = $page * 20"
et construire ta boucle allant jusqu'à "$i < ($page+1) * 20"


Cela reste a améliorer, en effet si tu as un trou dans ta série de fichier, l'affichage de la page sera décallé. Il vaudrait donc mieux utiliser la fonction readdir() pour récupérer la liste des fichiers du dossier :)

Posté : 17 oct. 2006, 17:27
par Invité
heu oui mais j'ai un souci avec la variable $page . . . comment l'inclure a mes liens ? Faut il la déclarer avant ? :oops:

Posté : 18 oct. 2006, 10:53
par goeb
pour la variable $page, Ryle l'explique :
utiliser une variable $page que tu passerais dans tes liens suivant/précédent
en pratique ça donnerait ça :
cette valeur doit être passée dans l'URL :

Code : Tout sélectionner

<a href="ta_liste.php?page=1">page 1</a> <a href="ta_liste.php?page=2">suivant</a> ...
et tu la récupères en début du script ta_liste.php :
$page=$_GET['page'];

Posté : 19 oct. 2006, 09:44
par Invité
Merciiiiiiiiiii ! :D