[PHP] Lister les fichiers d'un répertoire...

Lister les fichiers d'un répertoire... [PHP] - Programmation

Marsh Posté le 03-06-2002 à 16:26:25    

Salut à tous!
Je voudrais lister l'ensemble des fichiers d'un répertoire (qui ne contient que des images) et ensuite les mettres dans un menu déroulant permettant de la sélectionner...
Comment on fait?
Accessoirement, est-ce qu'il est possible d'afficher l'images lorsque on clique sur son nom dans le menu déroulant? Comment?
Merci à tous
@+ ;-)
Toto21

Reply

Marsh Posté le 03-06-2002 à 16:26:25   

Reply

Marsh Posté le 03-06-2002 à 16:33:00    

Reply

Marsh Posté le 03-06-2002 à 16:47:47    

Ooooooooooki merci!!!
Mais sinon, pour afficher l'image quand on clique sur le nom dans la liste déroulante, comment je pourrais faire?

Reply

Marsh Posté le 03-06-2002 à 16:54:21    

tu récupère le contenu de la selection et tu fais un img src=\"ton_rep/$selection".".jpg\">
enfin un truc du genre...


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
Reply

Marsh Posté le 03-06-2002 à 16:58:02    

Oui mais pour ça, il faut actualiser la page... moi je voudrais qu'il y ais une partie de ma page qui soit reservée à l'affichage de cette image, que QUAND on clique sur le nom, elle s'affiche...

Reply

Marsh Posté le 03-06-2002 à 16:58:40    

Mais je pense pas que je doive utiliser PHP pour ça... (PHP, c'est côté serveur...) Alors comment...

Reply

Marsh Posté le 03-06-2002 à 17:11:13    

si tu vais qur ca soit en temps réel ta seule solution c'est le javascript...


---------------
boulet officiel:goueg
Reply

Marsh Posté le 03-06-2002 à 17:22:25    

Ouais ok... mais vous auriez pas un tit exemple!  :wahoo:

Reply

Marsh Posté le 03-06-2002 à 18:02:31    

:wahoo:

Reply

Marsh Posté le 03-06-2002 à 19:06:52    

:pt1cable:

Reply

Marsh Posté le 03-06-2002 à 19:06:52   

Reply

Marsh Posté le 03-06-2002 à 19:29:08    

bon 1 tit exemple "en live" :)  
 
tu as ton image qqpart
<img name="img1" src="...">
 
ton menu
<form name="form1">
<select name="choix" onchange="window.document.img1.src='documen
t.form1.choix.options[selectedIndex].value';
">
 
A tester et verifier les syntaxes


---------------
All we need is a soul revolution
Reply

Marsh Posté le 03-06-2002 à 19:34:37    

(un ptit exemple plus didactique ;) )
 
si tu as une nouvelle question, renomme le titre de ton topic ou crées-en un nouveau.
 
pour charger une image, c'est effectivement + simple par javascript.
 
bon alors ...
 
tu définis une image 'vide' dans ton code en lui donnant un id qui va servir à l'identifier :
 
<img id='viewer'>
 
tu définis ton select et tes images. select réagit à l'événement onchange qui indique qu'on vient de changer la sélection. on va appeler notre méthode qui va updater l'image (méthode qu'on va définir après).
 
<select onchange="updateImage()">
 <option>image1.jpg</option>
 <option>image2.jpg</option>
 <option>image3.jpg</option>
</select>
 
maintenant, la méthode javascript :
 
<script>
  function updateImage()  
  {
    alert('modifié !';);
  }
</script>
 
si tu mets ça dans ton html, tu vas voir que la méthode est appelée à chaque fois que tu cliques sur une nouvelle image. maintenant, on va écrire le code qui va updater l'image. pour ça, il faut :
 
1) récupérer le nom de l'image sélectionnée
2) assigner ce dernier à l'image
 
dans updateImage(), tu a accès à event qui te donne des infos sur l'événement courant, ici onchange. event.srcElement donne l'objet qui a lancé l'événement, ici le menu déroulant. le menu déroulant a deux paramètres intéressants : selectedIndex, qui donne le numéro de la sélection, et options, un tableau qui donne toutes les options du menu. chaque option contient une variable text qui donne son contenu (ici 'image1.jpg' par exemple).
 
// on récupère le menu
var n = event.srcElement;
// on récupère l'index de l'option sélectionné
var index = n.selectedIndex;
// on récupère l'option
var option = n.options[index];
 
// affiche le nom de l'image sélectionée
alert(option.text);
 
on a maintenant le nom de l'image, il suffit de l'assigner à notre image 'viewer'. document.getElementById(idDeLaBalise) permet de récupérer une balise. donc document.getElementById('viewer';) récupère notre image, qui a une propriété src, le nom de l'image qu'elle affiche. il suffit de mettre le nom qu'on a récupéré plus haut dans cette variable, et hop !
 
document.getElementById('viewer';).src = option.text
 
donc au final :
 
function updateImage()
{
  // on récupère le menu
  var n = event.srcElement;
  // on récupère l'index de l'option sélectionné
  var index = n.selectedIndex;
  // on récupère l'option
  var option = n.options[index];
  // on update l'image
  document.getElementById('viewer';).src = option.text;
}

Reply

Marsh Posté le 03-06-2002 à 19:45:07    

muhmm il est bon cuila  :wahoo: mangez en !! :lol:  
1 truc que je pige pas ds ta derniere ligne :
document.getElementById('viewer';).src = option.text;
il sort d'ou le .text ?
ce serait pas .value plutot ??
 

youdontcare a écrit a écrit :

(un ptit exemple plus didactique ;) )
 
si tu as une nouvelle question, renomme le titre de ton topic ou crées-en un nouveau.
 
pour charger une image, c'est effectivement + simple par javascript.
 
bon alors ...
 
tu définis une image 'vide' dans ton code en lui donnant un id qui va servir à l'identifier :
 
<img id='viewer'>
 
tu définis ton select et tes images. select réagit à l'événement onchange qui indique qu'on vient de changer la sélection. on va appeler notre méthode qui va updater l'image (méthode qu'on va définir après).
 
<select onchange="updateImage()">
 <option>image1.jpg</option>
 <option>image2.jpg</option>
 <option>image3.jpg</option>
</select>
 
maintenant, la méthode javascript :
 
<script>
  function updateImage()  
  {
    alert('modifié !';);
  }
</script>
 
si tu mets ça dans ton html, tu vas voir que la méthode est appelée à chaque fois que tu cliques sur une nouvelle image. maintenant, on va écrire le code qui va updater l'image. pour ça, il faut :
 
1) récupérer le nom de l'image sélectionnée
2) assigner ce dernier à l'image
 
dans updateImage(), tu a accès à event qui te donne des infos sur l'événement courant, ici onchange. event.srcElement donne l'objet qui a lancé l'événement, ici le menu déroulant. le menu déroulant a deux paramètres intéressants : selectedIndex, qui donne le numéro de la sélection, et options, un tableau qui donne toutes les options du menu. chaque option contient une variable text qui donne son contenu (ici 'image1.jpg' par exemple).
 
// on récupère le menu
var n = event.srcElement;
// on récupère l'index de l'option sélectionné
var index = n.selectedIndex;
// on récupère l'option
var option = n.options[index];
 
// affiche le nom de l'image sélectionée
alert(option.text);
 
on a maintenant le nom de l'image, il suffit de l'assigner à notre image 'viewer'. document.getElementById(idDeLaBalise) permet de récupérer une balise. donc document.getElementById('viewer';) récupère notre image, qui a une propriété src, le nom de l'image qu'elle affiche. il suffit de mettre le nom qu'on a récupéré plus haut dans cette variable, et hop !
 
document.getElementById('viewer';).src = option.text
 
donc au final :
 
function updateImage()
{
  // on récupère le menu
  var n = event.srcElement;
  // on récupère l'index de l'option sélectionné
  var index = n.selectedIndex;
  // on récupère l'option
  var option = n.options[index];
  // on update l'image
  document.getElementById('viewer';).src = option.text;
}  




Message édité par kayasax le 06-03-2002 à 19:46:41

---------------
All we need is a soul revolution
Reply

Marsh Posté le 03-06-2002 à 19:50:48    

kayasax a écrit a écrit :

muhmm il est bon cuila  :wahoo: mangez en !! :lol:  
1 truc que je pige pas ds ta derniere ligne :
document.getElementById('viewer';).src = option.text;
il sort d'ou le .text ?
ce serait pas .value plutot ??


:D
 
quand tu as une option d'un select :
 
<option value="valeur">textedeloption</option>
 
option.value renvoie "valeur"
option.text renvoie "textedeloption"
 
donc l'utilisation dépend de comment il utilise son menu. a priori ce sont des noms de fichiers accessibles par option.text ...

Reply

Marsh Posté le 03-06-2002 à 20:41:15    

ah ben ca alors j'en ai appris des trucs en js sur 1 seul topic  ;)  
 :jap: respect !


---------------
All we need is a soul revolution
Reply

Marsh Posté le 03-06-2002 à 21:23:15    

une version plus courte inspirée par celle de kayasax :
 
<select onchange="document.getElementById('img1';).src = this.options[this.selectedIndex].text;">  
 
et hop :)

Reply

Marsh Posté le 04-06-2002 à 18:50:33    

Ouaou!!!
Ca c'est du script bien expliqué!!
Encore une chose, mes images ne sont pas ds le même répertoire que le fichier html...
Comment je fais pour remonter et indiquer le chemin? Ou est ce que je dois le rajouter?
Encore merci!
 :hello:

Reply

Marsh Posté le 04-06-2002 à 18:54:02    

this.options[this.selectedIndex].text te donne le nom de l'image. si tes images sont dans un sous-répertoire images, le chemin est  
 
'images/' + this.options[this.selectedIndex].text
 
si tes images sont dans un répertoire images parent à celui de l'html, le chemin est
 
'../images/' + this.options[this.selectedIndex].text
 
etc.

Reply

Marsh Posté le 12-06-2002 à 00:37:41    

J'ai un repertoire de gif que je liste pour les faire apparaitre, mais j'aimerais les afficher par order alphabétique, c possible ?
 
 

//lecture de tous les fichiers gif du repertoire
//::::::::::::::::::::::::::::::::::::::::::::::
        $handle=opendir('.');
 while($file = readdir($handle))
        {
        // une ligne de chaque couleur
   if($coul_ligne == $coul_ligne1)
                        $coul_ligne = $coul_ligne2 ;
                 else
                        $coul_ligne = $coul_ligne1 ;
 
        //tant qu'on a des gif
         if ($file != "." && $file != ".." && ereg(".gif",$file))
                {
          // On écrit le lien du smiley
                        echo " <tr bgcolor=\"".$coul_ligne."\"> " ;
                  echo " <td align=\"center\">" ;
                        echo " <img src=\"".$file."\" " ;
                  echo " alt=\"".$file."\" " ;
                  echo " name=\"".$file."\" >" ;
                  echo "</td><td> ".$file."</td></tr>" ;
                 }
 }
   closedir($handle);
//::::::::::::::::::::::::::::::::::::::::::::::


 
la ils s'affichent apparement dans un ordre bizarre mais pas aléatoire ...


Message édité par jultey le 06-12-2002 à 00:38:37
Reply

Marsh Posté le 12-06-2002 à 00:45:54    

jultey >
 

cherche sort() dans la page.


Message édité par youdontcare le 06-12-2002 à 00:46:18
Reply

Marsh Posté le 12-06-2002 à 01:05:29    

J'en suis la :
 


//lecture de tous les fichiers gif du repertoire
//::::::::::::::::::::::::::::::::::::::::::::::
        $handle=opendir('.');
 while($file = readdir($handle))
        {
        // une ligne de chaque couleur
   if($coul_ligne == $coul_ligne1)
                        $coul_ligne = $coul_ligne2 ;
                 else
                        $coul_ligne = $coul_ligne1 ;
 
                 $f=array();
                 $nf=0;
 
        //tant qu'on a des gif
         if ($file != "." && $file != ".." && ereg(".gif",$file))
                {
                //stockage dans un tableau
                 $f[$nf++]=$file;
                }
 
        //on trie le tableau
                sort($f);
 
                 for ($i=0;$i<count($f);$i++)
                 {
                  // On écrit le lien du smiley
                        echo " <tr bgcolor=\"".$coul_ligne."\"> " ;
                  echo " <td align=\"center\">" ;
                        echo " <img src=\"".$f[$i]."\" " ;
                  echo " alt=\"".$f[$i]."\" " ;
                  echo " name=\"".$f[$i]."\" >" ;
                  echo "</td><td> ".$f[$i]."</td></tr>" ;
                 }
 }
   closedir($handle);


 
ca fait toujours la liste mais pas encore trié par ordre alfabét.
Je continue a chercher dans la page...

Reply

Marsh Posté le 12-06-2002 à 01:13:31    

non. tu boucles avec readdir() pour ranger tes fichiers dans un tableau, tu tries le tableau, puis tu boucles sur le tableau pour l'afficher.

Reply

Marsh Posté le 12-06-2002 à 01:23:24    

youdontcare a écrit a écrit :

non. tu boucles avec readdir() pour ranger tes fichiers dans un tableau, tu tries le tableau, puis tu boucles sur le tableau pour l'afficher.  




 
 
Il me semble que c'est ce que je fais...
Je viens de changer une accolade et maintenant ca marche plus du tout...
 
J'essaie de mettre de la couleur, je sais pas ce que ca va donner :D  
 
 


//lecture de tous les fichiers gif du repertoire
//::::::::::::::::::::::::::::::::::::::::::::::
        $handle=opendir('.');
[#0ef000]//boucle avec readdir
 while($file = readdir($handle))
        {
        // une ligne de chaque couleur
   if($coul_ligne == $coul_ligne1)
                        $coul_ligne = $coul_ligne2 ;
                 else
                        $coul_ligne = $coul_ligne1 ;
 
                 $f=array();
                 $nf=0;
 
        //tant qu'on a des gif
         if ($file != "." && $file != ".." && ereg(".gif",$file))
                {
                //stockage dans un tableau
                 $f[$nf++]=$file;
                }
        [/#0ef000][#e21c00]}[/#e21c00]
 
        [#0046b8]//on trie le tableau
                sort($f);[/#0046b8]
 
[#00009b]//boucle sur le tableau
                 for ($i=0;$i<count($f);$i++)
                 {
                  // On écrit le lien du smiley
                        echo " <tr bgcolor=\"".$coul_ligne."\"> " ;
                  echo " <td align=\"center\">" ;
                        echo " <img src=\"".$f[$i]."\" " ;
                  echo " alt=\"".$f[$i]."\" " ;
                  echo " name=\"".$f[$i]."\" >" ;
                  echo "</td><td> ".$f[$i]."</td></tr>" ;
                 }[/#00009b]
   closedir($handle);

Reply

Marsh Posté le 12-06-2002 à 01:27:00    

ton accolade est bonne, ton indentation est étrange. et tu créés le tableau à chaque passage dans la boucle ... !
 
ça doit ressembler à :
 
$f = array();
while ($file = readdir())
{
 $f[] = $file;
}
sort($f);
$i=0;
while ($i < sizeof($f))
{
  echo $f[$i];
  $i++;
}

Reply

Marsh Posté le 12-06-2002 à 01:36:28    

//lecture de tous les fichiers gif du repertoire
//::::::::::::::::::::::::::::::::::::::::::::::
  $handle=opendir('.');
 
[#f00e00]//creation du tableau
   $f=array();
   $nf=0;[/#f00e00]
 
   [#718d00]while($file = readdir($handle))
   {
   //tant qu'on a des gif
      if ($file != "." && $file != ".." && ereg(".gif",$file))
      {
      //stockage dans un tableau
              $f[$nf++]=$file;
       }
    }[/#718d00]
 
    [#00aa55]//on trie le tableau
       sort($f);[/#00aa55]
[#000063]
     for ($i=0;$i<count($f);$i++)
     {
        // une ligne de chaque couleur
     if($coul_ligne == $coul_ligne1)
                   $coul_ligne = $coul_ligne2 ;
             else
                   $coul_ligne = $coul_ligne1 ;
 
       // On écrit le lien du smiley
           echo " <tr bgcolor=\"".$coul_ligne."\"> " ;
           echo " <td align=\"center\">" ;
           echo " <img src=\"".$f[$i]."\" " ;
           echo " alt=\"".$f[$i]."\" " ;
           echo " name=\"".$f[$i]."\" >" ;
          echo "</td><td> ".$f[$i]."</td></tr>" ;
     }
  [/#000063] closedir($handle);
//::::::::::::::::::::::::::::::::::::::::::::::


 
 
Voila, maintenant ca marche, merci encore... Je te dédie le 3 eme de cette page http://www.jultey.firstream.net/jultey/smiley/
(trié par ordre alphabétique bien sur ! ) :jap:


Message édité par jultey le 06-12-2002 à 01:37:32
Reply

Marsh Posté le 12-06-2002 à 01:41:30    

http://www.jultey.firstream.net/jultey/smiley/bien_vu.gif :D

Reply

Marsh Posté le 12-06-2002 à 01:44:05    

http://www.jultey.firstream.net/jultey/smiley/vomi.gif
 
c mon préféré celui la... mais rien avoir avec toi !!
 
Bon, allez, au dodo !
A+


Message édité par jultey le 06-12-2002 à 01:44:54
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed