Création automatique nouvelles pages

Eléphant du PHP | 184 Messages

18 janv. 2011, 16:56

Bonjour à vous,

J'ai une petite question, j'ai une galerie dynamique que je remplie avec un upload en php.

Ma question est simple, au bout d'un certain nombre d'images, ces dernières sont nombreuses et il faut scroller pas mal pour arriver au bout.

Comment puis je faire pour que par exemple, toutes les 20 images, il y est création d'une deuxième page et ainsi de suite ( avec possibilité de revenir aux autres bien sur )

Merci à vous

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

18 janv. 2011, 17:23

salut,


un exemple pour faire un affichage page par page


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 184 Messages

18 janv. 2011, 17:52

Je n'ai pas utilisé SQL pour ma galerie, je peux quand même de servir de l'exemple ?

ViPHP
xTG
ViPHP | 7331 Messages

18 janv. 2011, 18:19

Cela reste sur le même principe, c'est juste que tu n'as pas une requête qui te forme un tableau mais des fonctions pour récupérer les images qui te forme ton tableau source.

Eléphant du PHP | 184 Messages

18 janv. 2011, 18:46

Je comprend bien mais là je ne sais pas du tout comment m'y prendre.

Je débute vraiment dans le langage.

Eléphant du PHP | 184 Messages

18 janv. 2011, 18:48

Voici ce dont je me sers pour afficher mes images uplodés.

Code : Tout sélectionner

<?php $dos = "web/images/mini"; $dir = opendir($dos); while($file = readdir($dir)){ $allow_ext = array("jpg",'png','gif'); $ext = strtolower(substr($file,-3)); if (in_array($ext,$allow_ext)){ ?> <div id="divIGM"> <table id="tblThumbsLayout" cellpadding="10" cellspacing="5" align="center";> <tr> <td id='topCell' colspan='4'> </td> </tr> <tr> <td class='tdImg'> <a href= "web/images/<?php echo $file; ?>" rel='lightbox[id0]'> <img class='eImage' style="border:none" src="web/images/mini/<?php echo $file; ?>"></a> <p align=center><font class='tdTitle'><?php echo $file; ?></font></p> </td> </tr> </table> </div> <?php } } ?> </div>

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

18 janv. 2011, 20:20

ok,

alors il va falloir ruser un peut :
- il faut d'abord tout stocker dans un tableaux (php) afin de pouvoir le trier correctement et ensuite pourvoir appliquer la pagination.

avec ton code
<?php
$dos = 'web/images/mini/';
$dir = opendir($dos);
$fichiers = array();
while($file = readdir($dir)){
	$allow_ext = array("jpg",'png','gif');
	$ext = strtolower(substr($file,-3));
	if (in_array($ext,$allow_ext)){
		$fichiers[] = $file;
	}
}
sort($file,SORT_STRING);
?>
à partir de la tu peut afficher le nombre voulu d'image comme indiquer avec le tuto plus huat. La différence est que tu parcours ton tableau avec une boucle for et que tu initialise le début et la fin de la boucle en fonction de la page
par exemple
<?php
$nbimgparpage = 5;
if (isset($_GET['page'])) {
$debut = $nbimgparpage * $_GET['page'] -1; // parce que l'on commence à 0
if ($debut <= $nbimgparpage) $debut = 0;
}
else {
$debut = 0;
}
// fin de la boucle
$fin = $debut + nbimgparpage;

// affichage
for ($debut ; $debut < $fin ; $debut++) {
// affichage de l'image
}
?>
voila pour le principe

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 184 Messages

26 janv. 2011, 16:35

J'ai un peu fouillé, mais je n'y arrive toujours pas.

Je dois certainement avoir oublié quelque chose...

Le décompte se fait bien, tout les dix images il y a création d'une nouvelle page, mais toutes les images restent quand même sur la même page.

Vous pouvez m'aider, je craque lol

Code : Tout sélectionner

<div id="galerie"> <?php $dos = "web/images/mini"; $dir = opendir($dos); while($file = readdir($dir)){ $allow_ext = array("jpg",'png','gif'); $ext = strtolower(substr($file,-3)); if (in_array($ext,$allow_ext)){ ?> <div id="divIGM"> <table id="tblThumbsLayout" cellpadding="10" cellspacing="5" align="center";> <tr> <td id='topCell' colspan='4'> </td> </tr> <tr> <td class='tdImg'> <a href= "web/images/<?php echo $file; ?>" rel='lightbox[id0]'> <img class='eImage' style="border:none" src="web/images/mini/<?php echo $file; ?>"></a> <p align=center><font class='tdTitle'><?php echo $file; ?></font></p> </td> </tr> </table> </div> <?php } } ?> <?php $NombreImagesParPages = 10; // Nombre d'images par page // On compte le nombre d'images $files = glob("web/images/mini/*.*"); $TotalDesImages = count($files); // On calcule le nombre de pages à créer $NombreDePages = ceil($TotalDesImages / $NombreImagesParPages); // Puis on fait une boucle pour écrire les liens vers chacune des pages echo 'Page : '; for ($i = 1 ; $i <= $NombreDePages ; $i++) { echo '<a href="realisations.php?page=' . $i . '">' . $i . '</a> '; } ?>

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

26 janv. 2011, 23:14

heu t'a essayé mon code ?

a tu compris la différence entre ce que j'ai mis et le tiens ?

une boucle for ce n'est pas figé a un départ à 0 ;) faut adapter comme je l'ai fait !

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 184 Messages

26 janv. 2011, 23:26

C'est mon gros soucis justement. Je débute à peine et je suis parti dans tous les sens.
J'ai vraiment beaucoup de mal.

Ce serait aimable de me montrer où et comment placer les bouts de code qu'il me manque. :)