begin process at 2012 05 27 19:07:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > LISTING DE RÉPERTOIRE AVEC AFFICHAGE PAGE PAR PAGE

LISTING DE RÉPERTOIRE AVEC AFFICHAGE PAGE PAR PAGE


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :listing, répertoire, affichage, page Niveau :Débutant Date de création :10/07/2007 Date de mise à jour :10/07/2007 18:38:30 Vu :8 660

Auteur : sparko_dutos

Ecrire un message privé
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce code permet de lister le répertoire courant en n'affichant pas TOUS les fichiers mais seulement 10 par page
Suite à une question posée sur le forum, j'ai décidé de faire un exemple.
Il est perfectible, mais c'est une bonne base :)

Source

  • <?php
  • $path = '.';
  • $current = $_SERVER['PHP_SELF'];
  • if(is_numeric($_GET['page'])){
  • $num_page = $_GET['page'];
  • } else {
  • $num_page = 1;
  • }
  • $dh = opendir($path);
  • $i = 0;$compteur = 0;
  • $debut = ($num_page - 1) * 10;
  • $fin = $debut + 9;
  • while (($file = readdir($dh)) !== false) {
  • if($file != '.' && $file != '..' && $file != $current) {
  • if ($i >= $debut && $i <= $fin) {
  • printf('%s. <a href="%s/%s">%s</a><br />', $i+1, $path, $file, $file);
  • }
  • $i++;$compteur++;
  • }
  • }
  • closedir($dh);
  • echo '<p />';
  • if($num_page > 1) {
  • echo '<a href="'.$current.'?page='.($num_page - 1).'">Page précédente</a> - ';
  • } else {
  • echo 'Page précédente - ';
  • }
  • $div = floor($compteur / 10);
  • if($div == $compteur / 10){
  • $total_page = $div;
  • } else {
  • $total_page = $div + 1;
  • }
  • for($b = 1;$b <= $total_page;$b++){
  • if($b == $num_page){
  • echo $b.' ';
  • } else {
  • echo '<a href="'.$current.'?page='.$b.'">'.$b.'</a> ';
  • }
  • }
  • if(10 * $num_page < $compteur){
  • echo ' - <a href="'.$current.'?page='.($num_page+1).'">Page suivante</a>';
  • } else {
  • echo ' - Page suivante';
  • }
  • ?>
<?php
$path = '.';
$current = $_SERVER['PHP_SELF'];
if(is_numeric($_GET['page'])){
	$num_page = $_GET['page'];
} else {
	$num_page = 1;
}
$dh = opendir($path);
$i = 0;$compteur = 0;
$debut = ($num_page - 1) * 10;
$fin = $debut + 9;
while (($file = readdir($dh)) !== false) {
	if($file != '.' && $file != '..' && $file != $current) {
		if ($i >= $debut && $i <= $fin) {
			printf('%s. <a href="%s/%s">%s</a><br />', $i+1, $path, $file, $file);
		}
		$i++;$compteur++;
	}
}
closedir($dh);
echo '<p />';
if($num_page > 1) {
	echo '<a href="'.$current.'?page='.($num_page - 1).'">Page précédente</a> - ';
} else {
	echo 'Page précédente - ';
}
$div = floor($compteur / 10);
if($div == $compteur / 10){
	$total_page = $div;
} else {
	$total_page = $div + 1;
}

for($b = 1;$b <= $total_page;$b++){
	if($b == $num_page){
		echo $b.' ';
	} else {
		echo '<a href="'.$current.'?page='.$b.'">'.$b.'</a> ';
	}
}
if(10 * $num_page < $compteur){
	echo ' - <a href="'.$current.'?page='.($num_page+1).'">Page suivante</a>';
} else {
	echo ' - Page suivante';
}
?>

 Conclusion

Merci @ Jimrand/Elyas pour avoir soulevé le problème :)


 Historique

10 juillet 2007 18:36:03 :
Ajout d'un screenshot
10 juillet 2007 18:38:30 :
Petite modif

 Sources du même auteur

SCAN DE FTP EN RÉSEAU LOCAL

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
FONCTION _SCANDIR UTF8 par LDDL
Source avec Zip Source avec une capture MODIFICATEUR DE DONNEES DANS UNE BASE SQL AVEC LISTING DES T... par cram121
MENU PHP QUI CHARGE UNE CLASSE LORS DE LA SELECTION par cosmoswarezone1
PAGINATION TRÈS SIMPLE SANS TABLEAU par rakizm

Commentaires et avis

Commentaire de Eliays le 10/07/2007 18:34:40

Hehe super code ;)

Commentaire de kiki2sirom le 12/07/2007 12:01:52

je pense qu'ici un peu d'opérateur ternaire ne ferait pas de mal
mais ce n'est que mon avis personnel.
vu que tu as beaucoup de if, else, du style :

if($num_page > 1) {
echo '<a href="'.$current.'?page='.($num_page - 1).'">Page précédente</a> - ';
} else {
echo 'Page précédente - ';
}

pourrait devenir simplement :
echo ($num_page > 1?'<a href="'.$current.'?page='.($num_page - 1).'">Page précédente</a> - ':'Page précédente - ');

tout comme :
if(10 * $num_page < $compteur){
echo ' - <a href="'.$current.'?page='.($num_page+1).'">Page suivante</a>';
} else {
echo ' - Page suivante';
}

pourrait devenir :
echo (10 * $num_page < $compteur?' - <a href="'.$current.'?page='.($num_page+1).'">Page suivante</a>':' - Page suivante');

* de plus:
if($div == $compteur / 10){
$total_page = $div;
} else {
$total_page = $div + 1;
}
for($b = 1;$b <= $total_page;$b++){
pourrait aisément devenir :
if ($div != $compteur / 10)
$div++;
for($b = 1;$b <= $div;$b++){

ton $total_page n'est pas très utile ici !

* de plus:

if(is_numeric($_GET['page'])){
$num_page = $_GET['page'];
} else {
$num_page = 1;
}

deviendrait :
$num_page=(is_numeric($_GET['page'])?$_GET['page']:1);

* tout comme :
for($b = 1;$b <= $div;$b++){
if($b == $num_page){
echo $b.' ';
} else {
echo '<a href="'.$current.'?page='.$b.'">'.$b.'</a> ';
}
}

deviendrait :
for($b = 1;$b <= $div;$b++){
        echo ($b == $num_page?$b.' ':'<a href="'.$current.'?page='.$b.'">'.$b.'</a> ');
}


j'aime beaucoup l'opérateur ternaire, quand ça reste dans le domaine du lisible, soit if / else ou if / elseif / else

47 lignes au final devient 27 lignes :

<?php
$path = '.';
$current = $_SERVER['PHP_SELF'];
$num_page=(is_numeric($_GET['page'])?$_GET['page']:1);
$dh = opendir($path);
$i = 0;$compteur = 0;
$debut = ($num_page - 1) * 10;
$fin = $debut + 9;
while (($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..' && $file != $current) {
if ($i >= $debut && $i <= $fin) {
printf('%s. <a href="%s/%s">%s</a><br />', $i+1, $path, $file, $file);
}
$i++;$compteur++;
}
}
closedir($dh);
echo '<p />';
echo ($num_page > 1?'<a href="'.$current.'?page='.($num_page - 1).'">Page précédente</a> - ':'Page précédente - ');
$div = floor($compteur / 10);
if ($div != $compteur / 10)
$div++;
for($b = 1;$b <= $div;$b++)
echo ($b == $num_page?$b.' ':'<a href="'.$current.'?page='.$b.'">'.$b.'</a> ');

echo (10 * $num_page < $compteur?' - <a href="'.$current.'?page='.($num_page+1).'">Page suivante</a>':' - Page suivante');
?>

c'est quand même intéressant, non ?

allez
kiki

Commentaire de kiki2sirom le 12/07/2007 12:04:09

damn !!!
pas conservé mon indentation...
chaipa comment qu'on fait ici
;-)
kiki

Commentaire de masterhill le 12/07/2007 13:37:33

Salut !
Bon code, j'me suis juste permis de rajouter un pti '@' à la ligne 4 parce qu'au lancement de page sans le $_get['page'], on a le droit à un pti avertissement.
Mais sinon tout est impec 9.5/10  ;-)

Commentaire de sparko_dutos le 13/07/2007 12:04:08

Salut @ tous

kiki2sirom : je connais les operateurs ternaires, mais pour plus de lisibilité (tout le monde ne les connait pas) j'ai préféré passer par les if else...

Ensuite il est vrai que certaines lignes auraient pu être mieux codées... j'avais pas fait gaffe :p

Vais modifier cela :)

Commentaire de tozman2 le 16/07/2007 11:36:31

Les if...else sont plus rapide à executer par PHP... donc l'interêt de les changer reste limité. d'autant que pour modification du code un bloc if...else est bien plus explicite, surtout pour les débutants.

Commentaire de trabi11fr le 16/07/2007 11:59:33

Bonjour,
Question à Masterhill: je ne vois pas le '@' dont tu parles. Où le places-tu exactement? Ma queqtion peut paraitre stupide à certains, mais je suis totalement débutant en PHP (je faisais de l'ASP que je préfére nettement au niveau de la gestion des bases de données que j'ai beaucoup de mal à assimiler en PHP, mais le coût de l'hebergement....)

Commentaire de simonviei le 16/07/2007 12:50:55

une fonction tres interressrante pour lister un dossier : glob()

Commentaire de sparko_dutos le 17/07/2007 08:57:08

@ simonviei > je connnaissais également déjà glob...mais cette fonction est désactivée chez certains hébergeurs (free notamment) car elle ne tient pas compte des droits utilisateurs et permettait de naviguer dans tous les répertoires d'un site même les répertoires parents où l'utilisateur n'était pas cené aller ...

@ tozman > bien d'accord avec toi : if et else est bien plus lisible :)

En ce qui concerne le @ devant le $_GET['page'] je n'en vois pas l'utilité ^^

Commentaire de Eliays le 20/07/2007 15:21:09

coucou, c'est possible  de modifier ce code pour qu'il parcour aussi les dossier/sous dossier/ ect? ;)

Commentaire de kiki2sirom le 24/07/2007 10:59:59

'lut
j'y reviens
je préfère ma méthode POUR CE TYPE DE PROGRAMME s'entend !
ici ce ne sont que des if / else, plus clair, non ?
@TOZMAN2 :
lister un répertoire, je ne suis pas sûr que le temps mis à l'exécution par PHP soit plus lent avec la méthode ternaire, qu'avec le classique if / else

cf cette "source" http://www.phpcs.com/codes/IF-ELSEIF-ELSE-AVEC-OPERATEUR-TERNAIRE_34335.aspx
intéressant de voir les différents avis, surtout de personnes confirmées de ce site.

je persiste : ici l'utilisation de l'opérateur ternaire est plus clair.

surtout qu'une fois qu'on a compris que c'est :
$var = ( condition ) ? condition-vrai : condition-fausse;

non ?

je lance le débat interminable du "moi, je préfère ça" - "pas moi, je préfère ça" - "ça, c'est plus rapide..." etc.......

kiki

Commentaire de jlmcreation le 24/11/2007 17:07:04

BONJOUR
BIEN COOL CE SCRIPT , mais est ce possible de lire que les fichiers .html ou .htm ,ne pas voir les photo gif,jpeg et autres

merci

Commentaire de sparko_dutos le 24/11/2007 21:35:37

oui tout à fait :)

après $file != $current il suffirait de rajouter
&& in_array(array('.htm','.html'),strrchr($file,'.'))

ca devrait fonctionner ...
ca verifie que l'extension du fichier lu appartient à une liste prédéfinie (array('.htm','.html')...)
En esperant que ca t'aide :)

Commentaire de jlmcreation le 25/11/2007 12:00:58

voila ce que ca affiche quand j'ouvre la page

Parse error: syntax error, unexpected T_BOOLEAN_AND in liste.php on line 14

Commentaire de jlmcreation le 25/11/2007 12:02:34

voila le script :

<?php
$path = '.';
$current = $_SERVER['PHP_SELF'];
if(is_numeric($_GET['page'])){
$num_page = $_GET['page'];
} else {
$num_page = 1;
}
$dh = opendir($path);
$i = 0;$compteur = 0;
$debut = ($num_page - 1) * 10;
$fin = $debut + 9;
while (($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..' && $file != $current) && in_array(array('.htm','.html'),strrchr($file,'.'))
{
if ($i >= $debut && $i <= $fin) {
printf('%s. <a href="%s/%s">%s</a><br />', $i+1, $path, $file, $file);
}
$i++;$compteur++;
}
}
closedir($dh);
echo '<p />';
if($num_page > 1) {
echo '<a href="'.$current.'?page='.($num_page - 1).'">Page précédente</a> - ';
} else {
echo 'Page précédente - ';
}
$div = floor($compteur / 10);
if($div == $compteur / 10){
$total_page = $div;
} else {
$total_page = $div + 1;
}
for($b = 1;$b <= $total_page;$b++){
if($b == $num_page){
echo $b.' ';
} else {
echo '<a href="'.$current.'?page='.$b.'">'.$b.'</a> ';
}
}
if(10 * $num_page < $compteur){
echo ' - <a href="'.$current.'?page='.($num_page+1).'">Page suivante</a>';
} else {
echo ' - Page suivante';
}
?>

merci pour tes reponces

Commentaire de sparko_dutos le 25/11/2007 12:30:11

Il suffit de de ne pas fermer la parenthse du if avant le && mais après cet élément !!

if($file != '.' && $file != '..' && $file != $current && in_array(array('.htm','.html'),strrchr($file,'.')))

ca devrait mieux marcher !!

Commentaire de jlmcreation le 25/11/2007 13:41:11

et non voila le message des l'ouverture de la page

Warning: in_array() [function.in-array]: Wrong datatype for second argument in liste.php on line 14

Warning: in_array() [function.in-array]: Wrong datatype for second argument in liste.php on line 14

Page précédente - - Page suivante

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Temps d'affichage d'une page [ par Indy ] Bon bon, après deux jours passés à comprendre le fonctionnement de php3 et de mysql (site chez Free.fr), toutes les infos voulues sont enfin bien envo pb affichage page par page et Register global [ par choubix ] bonjour,je souhaite afficher des données page par page et le probleme vient surmeent de php qui avec les register globals à off me joue des tours...vo affichage page php [ par lolo1202 ] Bonjour à tous,Quelqu'un sait il comment faire un lien parmis des résultats dune base de données ? (je travaille en php)Je m'explique. J'affiche les r Pobleme d'affichage page par page [ par bricethenetman ] J'essaye de faire un affichage page par page sur mon site afin d'organisé les reponses de ma base de données. Cependant le code ne fonctionne pas donc affichage d'une image en fonction du nom de la page [ par fstyle ] Bonjour/soir !J'ai un petit soucis ... j'ai dû modifié un site en php ... et j'ai créer des modèles avec dreamweaver le soucis c'est que quand on est comment optimiser une page web selon la resolution d'affichage du client? [ par lookme ] bonjour ,voila j'ai pu voir sur different site internet que la page d'accueil et meme les suivante pouvais s'adapter dans la fenetre explorer et rempl submit.. [ par haka ] Bonjour, Pas très rôdé en php, je rencontre le pb suivant que je n'arrive pas à résoudre :-une page contenant un formulaire pour une inscription News Affichage html & cadre [ par lastwhirlwind ] (&#168;:._LastWhirlwind_.:&#168;) Salut a tous voila G une page possedant plusieur ta erreur GET/POST [ par lolo49 ] lolo49bonjour,j'ai un souci avec PHP4je résume : j'ai une base de donnée MySql avec des clientsje peux soit - afficher la liste complète so affichage iframe [ par agora_13 ] Boujour,Voila je crée une application et j'utilise des iframe. Lorsque j'affiche la premère frame ca marche elle est correstement positionnée, mais lo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales