[RESOLU] afficher contenu d'un dossier sur x pages

Eléphant du PHP | 133 Messages

24 sept. 2014, 23:54

bonjour à tous ,

voila j'utilise ce code pour lister le contenu d'un dossier
<?php
$dir_nom = 'img'; 
$dir = opendir($dir_nom) or die(); 
$fichier= array(); 
$dossier= array();

while($element = readdir($dir)) {
	if($element != '.' && $element != '..' && $element != '.htaccess') {
		if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $element;}
		else {$dossier[] = $element;}
	}
}

closedir($dir);

if(!empty($dossier)) {
       sort($dossier); 
	       foreach($dossier as $lien){
			?>   <img src="<?php 	echo $dir_nom."/".$lien  ;	 ?>" width="50" height="50" border="0"/><br /><?php
			
		}
}

if(!empty($fichier)){
	sort($fichier); 
		foreach($fichier as $lien) {
			?>   <img src="<?php 	echo $dir_nom."/".$lien  ;	?>" width="50" height="50" border="0"/><br /><?php
		}
 }

?>
ça m'affiche les images les une en dessous des autres
cette partie fonctionne sans soucis , mais sur un dossier avec 50 fichiers par ex
la mon dossier contient plus de 2000 images et forcement ca bloque meme avec du debit le navigateur sature

comment faire pour afficher par 50 images par page
et avoir en dessous un bouton "retour" & "suivant" pour passer aux 50 suivant etc................ ou un systeme "page 1 2 3 4 5 6 .................."

#-o #-o #-o #-o

cdt Pascal

tesmet
Invité n'ayant pas de compte PHPfrance

25 sept. 2014, 04:14

$items = 50; // nombre d'items maximum par page
$dir_nom = 'img'; // répertoire de départ

$page = isset($_GET['page']) ? $_GET['page'] : 1; // la page demandée
$dir_nom = isset($_GET['dir_nom']) ? $_GET['dir_nom'] : $dir_nom; // le rép.

$dir = opendir($dir_nom) or die();
$fichier= array();
$dossier= array();
while($element = readdir($dir)) {
  if($element != '.' && $element != '..' && $element != '.htaccess') {
    if (!is_dir($dir_nom.'/'.$element)) {$fichier[] = $dir_nom.'/'.$element;}
    else {$dossier[] = $dir_nom.'/'.$element;}
  }
}
closedir($dir);

echo '<menu>Répertoires actuels';
$root = '';
foreach(explode('/', $dir_nom) as $lien) {
  $root .= $lien;
  echo '<li><a href="?page=1&dir_nom=', $root, '">', $root, '</a> ', PHP_EOL;
  $root .='/';
}
echo '</menu>';

if(count($dossier)) {
  echo '<menu>sous Répertoires';
  foreach($dossier as $lien) {
    echo '<li><a href="?page=1&dir_nom=', $lien, '">', $lien, '</a>', PHP_EOL;
  }
  echo '</menu>';
}

$pages = ceil(count($fichier) / $items); // calculer le nombre de pages nécessaires
if($pages) {
  foreach(range(1, $pages) as $lien) {
    echo ' <a href="?page=', $lien, '&dir_nom=', $dir_nom, '">', $lien, '</a> ', PHP_EOL;
  }
  echo '<br /><br />';
}

$fichier = array_slice($fichier, ($page-1) * $items, $items);
foreach($fichier as $lien) {
  echo '<img src="', $lien, '" width="50" height="50" border="0"/>', PHP_EOL;
}

Eléphant du PHP | 133 Messages

25 sept. 2014, 10:19

Cool ca marche , merci ......................
possible de les afficher les une en dessous des autres et non coté a cote ?

Eléphant du PHP | 151 Messages

25 sept. 2014, 10:35

Cool ca marche , merci ......................
possible de les afficher les une en dessous des autres et non coté a cote ?
Ajoute un br à la fin de la ligne d'affichage de l'image :

Code : Tout sélectionner

echo '<img src="', $lien, '" width="50" height="50" border="0"/><br>', PHP_EOL;
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphant du PHP | 133 Messages

25 sept. 2014, 10:38

Oui je viens de le voir ...............
je sort du lit pas bien reveillé :)

Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

Eléphant du PHP | 151 Messages

25 sept. 2014, 10:53

Oui je viens de le voir ...............
je sort du lit pas bien reveillé :)

Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ça ou la picole, pas terrible avec le code !! :lol: :lol:
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphant du PHP | 133 Messages

25 sept. 2014, 22:29

Oui je viens de le voir ...............
je sort du lit pas bien reveillé :)

Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ça ou la picole, pas terrible avec le code !! :lol: :lol:

rooooooooooooooooooooooooooooo

nan meme pas :) je sortais du lit pas les yeux en face des trous :)

Eléphant du PHP | 133 Messages

25 sept. 2014, 23:05

derniere question :D

j'utilise un bouton <form> pour modifier des fichiers
ca me permet de déplacer les images d'un dossier a un autre juste en cliquant sur un bouton

sur la première page ça marche :) puisque le bouton a le nom de page

Code : Tout sélectionner

<form method="POST" action="afficheee">
sur la page 1 ca marche car je suis bien sur la page afficheee.php
mais des que je change de page .................. je me retrouve avec ce lien dans ma barre /afficheee?page=2&dir_nom=pochettes pour la page 2 /afficheee?page=3&dir_nom=pochettes pour la 3 etc.............
mais quand je clique sur mon bouton il se passe rien car il recharge la page 1 donc afficheee.php

comment faire pour que le ACTION de mon bouton suive le deplacement dans les pages
si je suis sur la page /afficheee?page=2&dir_nom=pochettes et que je clique sur mon bouton je voudrais afficher toujours la page /afficheee?page=2&dir_nom=pochettes

#-o #-o #-o #-o #-o

Eléphant du PHP | 63 Messages

26 sept. 2014, 01:57

renseigner $page et $dir_nom dans l'action devrait suffire
echo '<form method="POST" action="?page=',$page ,'&dir_nom=',$dir_nom ,'">', PHP_EOL;

Eléphant du PHP | 133 Messages

26 sept. 2014, 14:16

merciiiiiiiiiiiiiiiiii
ca marche au top :)

super merci pour l'aide :)