Lister les fichiers d'un répertoire... [PHP] - Programmation
Marsh Posté le 03-06-2002 à 16:33:00
http://www.php.net/manual/fr/function.readdir.php
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?
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...
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...
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...
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...
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
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;
}
Marsh Posté le 03-06-2002 à 19:45:07
muhmm il est bon cuila mangez en !!
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; } |
Marsh Posté le 03-06-2002 à 19:50:48
kayasax a écrit a écrit : muhmm il est bon cuila mangez en !! 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 ?? |
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 ...
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
respect !
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
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!
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.
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 |
la ils s'affichent apparement dans un ordre bizarre mais pas aléatoire ...
Marsh Posté le 12-06-2002 à 00:45:54
jultey >
z0rglub a écrit a écrit : http://www.php.net/manual/fr/function.readdir.php |
cherche sort() dans la page.
Marsh Posté le 12-06-2002 à 01:05:29
J'en suis la :
|
ca fait toujours la liste mais pas encore trié par ordre alfabét.
Je continue a chercher dans la page...
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.
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
|
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++;
}
Marsh Posté le 12-06-2002 à 01:36:28
//lecture de tous les fichiers gif du repertoire |
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 ! )
Marsh Posté le 12-06-2002 à 01:44:05
c mon préféré celui la... mais rien avoir avec toi !!
Bon, allez, au dodo !
A+
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