Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LISTING DES FICHIERS D'UN REPERTOIRE LETTRE PAR LETTRE


Information sur la source

Catégorie :Fichier / Disque Niveau : Débutant Date de création : 19/03/2005 Date de mise à jour : 19/03/2005 17:08:29 Vu : 4 293

Note :
Aucune note

Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
A la base j'ai concu ce script car je cherchai a lister toutes les images d'un repertoire puis a les afficher lettre par lettre grace a un menu.

j'avoue ke l'esthetique a été negligé mais il y a l'essentiel ;)
a vous de lui donner le style que vous desirez .

vous aurrez juste a rajouter un repertoire pour mettre les fichiers a lister
et a modifier la variable $ repertoire en fonction du nom de celui ci

certains diront sans doute que c'est nul mais j'ai cherché un code de ce genre sans rien trouver donc voile je poste le mien .
 

Source

  • <html>
  • <head>
  • <title>listing des fichiers d'un repertoire</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • </head>
  • <body>
  • <div align="center">
  • <?php
  • // ligne a modifier en fonction du repertoire a afficher
  • $repertoire = "jaquettes";
  • //---------------------------------------------
  • $lettre = $_GET['lettre'];
  • $chiffre = $_GET['chiffre'];
  • $r = opendir("$repertoire");
  • $a = "97"; //caractere a en ascii
  • // menu ------------------------------------------------------
  • echo "<a href=\"".$_SERVER['PHP_SELF']."?chiffre=1\">0-9</a> ";
  • while ( $a <= 121 )
  • {
  • echo "<a href=\"".$_SERVER['PHP_SELF']."?lettre=".chr($a)."\">".chr($a-32)."</a> ";
  • $a = $a+1;
  • }
  • echo "<br><br>";
  • //----------------------------------------------------------
  • // listing des fichiers par lettre
  • echo ("liste des fichiers dans ce repertoire :<br>");
  • while ($fichier = readdir($r))
  • {
  • // si c'est un chiffre
  • if ( $chiffre == "1" )
  • {
  • if (is_numeric ( strtolower($fichier{0} ) ))
  • {
  • echo " <a href=\"$repertoire/$fichier\">$fichier</a><br>";
  • }
  • }
  • // si c'est une lettre
  • if ( $lettre != "" )
  • {
  • if (strtolower($fichier{0}) == $lettre)
  • {
  • $name = ucfirst("$fichier");
  • echo " <a href=\"$repertoire/$fichier\">$name</a><br>";
  • }
  • }
  • }
  • //on ferme le repertoire
  • closedir($r);
  • ?>
  • </div>
  • </body>
  • </html>
<html>
<head>
<title>listing des fichiers d'un repertoire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<div align="center">
<?php
// ligne a modifier en fonction du repertoire a afficher
$repertoire = "jaquettes";
//---------------------------------------------
$lettre = $_GET['lettre'];
$chiffre = $_GET['chiffre'];
$r = opendir("$repertoire");
$a = "97"; //caractere a en ascii

// menu ------------------------------------------------------
echo "<a href=\"".$_SERVER['PHP_SELF']."?chiffre=1\">0-9</a> ";
while ( $a <= 121 )
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?lettre=".chr($a)."\">".chr($a-32)."</a> ";
$a = $a+1;
}
echo "<br><br>";
//----------------------------------------------------------

// listing des fichiers par lettre
echo ("liste des fichiers dans ce repertoire :<br>");

while ($fichier = readdir($r))
{
// si c'est un chiffre
if ( $chiffre == "1" )
{
if (is_numeric ( strtolower($fichier{0} ) )) 
{
echo " <a href=\"$repertoire/$fichier\">$fichier</a><br>";
}
}
// si c'est une lettre
if ( $lettre != "" )
{
if (strtolower($fichier{0}) == $lettre)
{
$name = ucfirst("$fichier");
echo " <a href=\"$repertoire/$fichier\">$name</a><br>";
}
}
}
//on ferme le repertoire
closedir($r);
?>
</div>
</body>
</html>

Conclusion

il n'y normalement aucun bug enfin si vous voyez une amélioration faites moi le savoir.

merci
 

Historique

19 mars 2005 17:03:16 :
voila deja j'ai ecouté le menu. mais il reste encore du travail pour rendre ce code plus propre je vais chercher et des que j'ai trouvé je remodifierai
19 mars 2005 17:08:51 :
<? remplacé par <?php

Commentaires et avis

signaler à un administrateur
Commentaire de GRenard le 19/03/2005 04:41:14

... au lieu de faire pleins de echo comme ca, pourquoi pas faire un for qui affiche chacune des lettres... et liens...
remplace <? par <?php

signaler à un administrateur
Commentaire de LuckyLuck le 19/03/2005 10:26:02

et si tu fé des concaténations :
"<a href=\"".$_SERVER['PHP_SELF']."?lettre=c\">C</a> ";

tu peux remplacer tous tes " par des ' ;)

signaler à un administrateur
Commentaire de coucou747 le 19/03/2005 11:26:26

comme grenard le dit si bien, les boucles peuvent êtres très utiles... la ça fait franchement moche, sans parler de :
$r = opendir("$repertoire");
ou
$name = ucfirst("$fichier");

n'oublions pas que tu utilises parfois des simples parfois des doubles, alors que tu ne les palces pas du tout au bons endroits...

signaler à un administrateur
Commentaire de remington le 19/03/2005 15:28:30

pourrais tu me faire une correction pour voir comment le rendre mieu que je voye exactement les erreur que j'ai faits
merci d'avance

signaler à un administrateur
Commentaire de GRenard le 19/03/2005 15:41:10

On te les as dit... essais de le faire toi même...

signaler à un administrateur
Commentaire de remington le 19/03/2005 17:05:07

modif du menu effectué apres changement ca donne ca
c deja un peu mieu hein ? ;)

echo "<a href=\"".$_SERVER['PHP_SELF']."?chiffre=1\">0-9</a> ";

while ( $a <= 121 )
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?lettre=".chr($a)."\">".chr($a-32)."</a> ";
$a = $a+1;
}

signaler à un administrateur
Commentaire de LuckyLuck le 19/03/2005 17:21:44

ca aurait été mieux une boucle for, et ta concaténation n'est toujours pas bonne...

signaler à un administrateur
Commentaire de coucou747 le 19/03/2005 17:44:48

pourquoi tu mets des guillemets simples pour les tablmes de hash et des doubles pour le reste...

signaler à un administrateur
Commentaire de remington le 19/03/2005 18:14:11

pour la boucle for je vois pas trop la difference
pour la concatenation je vois pas ce que c'est (desolé).
pour les guillemets g toujours eu des problemes lol

pour la boucle

for ($a = 97 ; $a <= 121 ; $a++)
{
echo "<a href=\"".$_SERVER['PHP_SELF']."?lettre=".chr($a)."\">".chr($a-32)."</a> ";
}

signaler à un administrateur
Commentaire de GRenard le 19/03/2005 19:03:49

qu'es-ce que c'est que ca...
pourquoi ne pas faire
for($i='a';$i<'z';$i++)
echo $i.strtoupper($i).'<br />';

... 10 fois plus facile...

signaler à un administrateur
Commentaire de coucou747 le 19/03/2005 19:10:16

pour tes problèmes... mais merde, on doit toujours répéter les mêmes choses...

cherches dans les sources de grenard t'as un tuto sur les règles de codages à respecter je crois, et si tu trouves pas, ses sources t'aprendrons bcp de choses... tu peux chercher (pour les mots clés que tu ne connais pas ) sur le site de référence de php

signaler à un administrateur
Commentaire de remington le 19/03/2005 20:55:29

je savai pas qu'on pouvai faire ca

for($i='a';$i<'z';$i++)

merci du tuyau

signaler à un administrateur
Commentaire de GRenard le 19/03/2005 20:57:57

c'est inférieur ou = à z ... c pas ca g mis mais vous avez compris le principe...

Le tutorial est : http://www.phpcs.com/code.aspx?id=24870

signaler à un administrateur
Commentaire de ImmortalPC le 20/03/2005 17:43:55

Salut,
Moi j'aurais écrit ça comme ça:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"><head>
<meta http-equiv="Content-LANGUAGE" content="French" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="Title" content="listing des fichiers d'un repertoire" />
<meta http-equiv="Expires" content="Never" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta name="robots" content="Noindex, Nofollow" />
<meta name="GENERATOR" content="Script Edit, PHP Designer 2005" />
<title>listing des fichiers d'un repertoire</title>
<style type="text/css" media="screen">
body {
    text-align: center;
}
</style>
</head><body>
<?php
// ligne a modifier en fonction du repertoire a afficher
$repertoire = 'Images';
echo '<h1>Listing des fichiers du repertoire ',$repertoire,'</h1>';
//---------------------------------------------
if(IsSet($_GET['lettre'])){$lettre = $_GET['lettre'];}else{$lettre = NULL;}
if(IsSet($_GET['lettre'])){$chiffre = $_GET['chiffre'];}else{$chiffre = NULL;}
$r = opendir($repertoire);
$a = 97; //caractere a en ascii

// menu ------------------------------------------------------
echo '<a href="',$_SERVER['PHP_SELF'],'?chiffre=1">0-9</a>',"\n";
while ( $a <= 121 ){
    echo '<a href="',$_SERVER['PHP_SELF'],'?lettre=',chr($a),'">',chr($a-32),'</a>',"\n";
    $a++;
}
echo '<br /><br />',"\n";
//----------------------------------------------------------

// listing des fichiers par lettre
echo 'liste des fichiers dans ce repertoire :<br />';

while ($fichier = readdir($r)){
    // si c'est un chiffre
    if($chiffre == 1){
        if(is_numeric( strtolower($fichier{0}) )){
            echo '<a href="',$repertoire,'/',$fichier,'">',$fichier,'</a><br />';
        }
    }
    // si c'est une lettre
    if($lettre != ''){
        if(strtolower($fichier{0}) == $lettre){
            $name = ucfirst("$fichier");
            echo '<a href="',$repertoire,'/',$fichier,'">',$name,'</a><br>';
        }
    }
}
//on ferme le repertoire
closedir($r);
?>
</body></html>
@++

signaler à un administrateur
Commentaire de Tukkkko le 20/03/2005 18:23:38

C'est une autre façon de faire...

De toutes façons il y en a encore plein d'autres...

signaler à un administrateur
Commentaire de Ze_doctor le 05/09/2005 13:07:26

ImmortalPC, j ai utilisé ton code, la page s affiche sans problème sauf que ca ne liste rien du tout :/

signaler à un administrateur
Commentaire de vincseize le 07/09/2005 12:04:37

petite correction,  erreur de frappe je pense de la part de
ImortalPC le 20/03/2005 17:43:55:

remplacer: if(IsSet($_GET['lettre'])){$chiffre = $_GET['chiffre'];}else{$chiffre = NULL;}

par: if(IsSet($_GET['chiffre'])){$chiffre = $_GET['chiffre'];}else{$chiffre = NULL;}

za + les brutes

signaler à un administrateur
Commentaire de xmag le 01/08/2006 11:56:21

Petite idée pour perfectionner le code : ne pas afficher les lettres où il n'y a pas de fichier ;-)

signaler à un administrateur
Commentaire de PaTaTe le 02/06/2007 16:26:09

Personnellement avec les 2 méthodes je n'ai pas le Z qui s'affiche dans la liste des lettres. Et puis comme XMAG le spécifie, ça serait bien de pouvoir cliquer que sur les lettres qui ont un contenu (les retirer non je préfèrerais les laisser) ... Si quelqu'un peut m'aider pour tout ça, ça serait sympa ^^

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.