Résolu [PHP]Récupérer le nom d'une image

Solutions (63)
Tags :
  • Php
  • Programmation
, Maître Yoda |
Bonjours a tous.

j'ai réaliser un bout de code php qui me permet d'afficher toutes les images de mon dossier images.
A l'appui sur le bouton position, toutes les images s'affiche à l'écrant :

  1. if(isset($_POST['position'])){
  2.  
  3. // url du fichier qui contient les images
  4.  
  5. $urlphoto = "./images/positions";
  6.  
  7. // nom du répertoire qui contient les images
  8. $nomRepertoire = "./images/positions";
  9. if (is_dir($nomRepertoire))
  10. {
  11. $dossier = opendir($nomRepertoire);
  12. while ($Fichier = readdir($dossier))
  13. {
  14. if ($Fichier != "." AND $Fichier != ".." AND (stristr($Fichier,'.gif') OR stristr($Fichier,'.jpg') OR stristr($Fichier,'.png') OR stristr($Fichier,'.bmp')))
  15. {
  16. // Hauteur de toutes les images
  17. $h_vign = "120";
  18. $taille = getimagesize($nomRepertoire."/".$Fichier);
  19. $reduc = floor(($h_vign*100)/($taille[1]));
  20. $l_vign = floor(($taille[0]*$reduc)/60);
  21.  
  22. echo '<a target="_blank" href="', $urlphoto, '/',$Fichier, '">';
  23. echo '<img src="', $urlphoto, '/',$Fichier, '" ';
  24. echo "width='$l_vign' height='$h_vign'>";
  25. echo "</a> ";
  26.  
  27. }
  28. }
  29. closedir($dossier);
  30. }
  31. else{
  32. echo' Le répertoire spécifié n\'existe pas';
  33. }
  34. }


je voudrais maintenant que lorsque le client clique sur une des images, récupérer le nom de l'image sur laquelle il aura cliquer.
Es possible de réaliser cela en php ?
Si oui pourriez vous me guider ?
Je vous remercie par avance pour vos réponse.
Contenus similaires
Meilleure solution
partage
|
Dans l'url il y a quelquechose?
Qu'affiche l'echo $photo?

Essai de mettre un truc du genre :
  1. if(isset($_GET['photo']))
  2. echo "OK";
  3. else
  4. echo "RATE";
  • Commenter cette solution |
Score
0
òh
òi
|
En fait, inHide est une variable que je déclare juste au dessus, qui contient l'objet input de type hidden. Ensuite je peux accéder à ses attributs en mettant inHide.NomAttribut

Le nom de l'image est dans la variable nomImg.

Pou récupérer les noms des images (j'avais oublier de préciser ca dsl xD ) tu récupère dans une variable ceci : $_POST['choix'] qui est une chaine de caractère contenant le nom des images séparé par des ;

Il te suffit de séparer cette chaine et ensuite tu auras tes noms d'images. Pour se faire tu peux utiliser la fonction explode de PHP
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Ouiiiiiiiiii !!! ça fonctionne :bounce: 
Pourrais-tu m'expliquer le fonctionnement de ta ligne :

  1. inHide.value = nomImg;


Car je t'avouerais que je ne l'a comprend pas...
Que signifie inHide ou l'on stoque le nom de l'image ?
Et comment faire pour récupéré se nom d'image ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Oupsss xD j'ai oublier de dire que quand tu mets ton code en fichier externe, il faut rajouter ceci dans le head de ta page :
  1. <script src="choiximage.js" language ="javascript"></script>
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Petit soucie avec cette ligne de code

  1. echo '<img class="imgClick" src="'. $urlphoto .'/'. $Fichier .'" onclick="ajout(\''. $Fichier .'\');" />';


enfaite je ne peut pas cliquer sur les images, j'ai nommé mon fichier choiximage.js
et j'ai pas l'impression que dans nos ligne de code on fait appel a se fichier ?!
Dans le paramètre "onclick", tu pense que la fonction ajout sait qu'il faut l'exécuter a partir du fichier javascript ?
  • Commenter cette réponse |
Score
0
òh
òi
|
:D  lool de rien :) 

Il est assez drôle de voir que tu dit que je suis un ange juste a coté de mon pseudo (pour la partie 666 ^^ )

Au passage, les scripts d'info bulle on peut en trouver partout, notamment sur le site que je t'ai filer. Après ils sont plus ou moins chiant et long à mettre en place :)  a toi de choisir :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
DivX_666 tu es un ange serieux :D 
Je te remercie vraiment pour le mal que tu te donne pour moi.
Je continu a apprendre les bases du Javascript sur les tuto et je testerai ton code plus tard :D 
Je te tiens au courant des que possible.
  • Commenter cette réponse |
Score
0
òh
òi
|
ah je suis tout a fait d'accord avec toi ! :D 
Bon j'ai fait un premier jet, tu pourra améliorer avec des petites fioriture en plus, comme par exemple faire afficher une petite infobulle quand l'image a été choisis etc...

le code pour tes images devra être celui-ci maintenant :
  1. echo '<img class="imgClick" src="'. $urlphoto .'/'. $Fichier .'" onclick="ajout(\''. $Fichier .'\');" />';


Rajouter également un input de type hidden :
  1. echo '<input id="choix" name="choix" type="hidden" value="void" />';


Et enfin rajouter le code javascript (améliorable) dans un fichier externe ou bien dans le head de ta page (le mieux étant le fichier externe, c'est plus propre) :
  1. var nbImg = 0;
  2. function ajout(nomImg)
  3. {
  4. var inHide = document.getElementById('choix'); //l'input de type hidden
  5. if(nbImg <= 4) //pour ne pas sélectionner plus de 4 photos
  6. {
  7. nbImg++; //incrémentation du nombre de photo choisis
  8. if(nbImg == 1) //si c'est la première
  9. {
  10. inHide.value = nomImg;
  11. // ici on peut ajouter un infobull pour avertir l'utilisateur que sa photo a été prise en compte
  12. }else //les suivantes
  13. {
  14. inHide.value = inHide.value+";"+nomImg;
  15. // ici on peut ajouter un infobull pour avertir l'utilisateur que sa photo a été prise en compte
  16. }
  17. }
  18. }


Et pour finir, du CSS pour changer la forme du curseur sur les images pour montrer qu'elles sont cliquables :
  1. .imgClick
  2. {
  3. cursor: pointer;
  4. }


Voila, pour finir (encore :)  ) voila un site que je trouve intéressant pour le nombre de scripts qu'il propose : Editeur Javascript
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Oulaaaaaa !!!
Effectivement ce que le vendredi c'est difficile surtout quand tu sais que tu as un week-end de 3 jours qui t'attends :pt1cable: 
  • Commenter cette réponse |
Score
0
òh
òi
|
Toi, t'es pas réveiller :D 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Mdr ouai je viens de remarquer que ma dernière phrase ne voulais rien dire du tout ^^
Je vais de ce pas comment a regarder le JavaScript.

  • Commenter cette réponse |
Score
0
òh
òi
|
oula tu te répète dans tes phrases lol. Je peux pas le faire tout de suite une base de ce script, mais d'ici 5 - 10 min je devrais pouvoir tirer quelque chose.
Mais ca t’empêche pas de lire des tutos bien sur, je vais peut être pas forcement tout faire non plus lol
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Le soucie c'est que je n'ai jamais fait de jamais script de ma vie :heink: 
Je vais commencer a regarder des tuto pour apprendre alors :D 
Tu pense que en php c'est plus galère a faire que en php ?
  • Commenter cette réponse |
Score
0
òh
òi
|
ça peux paraître brutus, mais j'ai peut être une solution ^^
Sur la page du choix des images, en faisant en javascript on peut ne pas revenir à la page d'avant à chaque choix d'un image. Tu rajoute dans une variable de type string la liste des images choisis en intercalant dedans les "&photoX=" entre, avec X étant un nombre que tu incrémentera en comptant les images sélectionner. Ce qui te permet en même temps de vérifier quand l'utilisateur est arrivé à 4.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Merci beaucoup DivX_666 et crazycat@idn

Je voudrais encore vous posez une ou 2 petites questions.

Edit :
Enfaite l'utilisateur devrais pouvoir choisir jusqu'à 4 photo dans le dossier images, jusqu'a maintenant on a réussi a le faire que pour 1 image.
Je vous explique, quand je lance mon fichier sequence.php et que le client clique sur le bouton image, cela ouvre un fichier choiximage.php, une fois qu'il clique sur l'image choisi, cela exécute un fichier clic.php qui enregistre le nom de l'image dans la base de donnée et qui redirige le client vers la page sequence, et qui affiche sur cette même page l'image choisi.

J'espère avoir été assez claire dans mes explications (n'hésitai pas a poser des questions si vous ne comprenez pas :)  )

Pour le moment si je répète l'opération plusieurs fois, cela écrase les données précédentes...
Pour réaliser ce que je demande dois-je obligatoirement faire un autre fichier clic2.php pour l'autre bouton ? ou n'y a t'il pas un moyen de faire un fichier générique pour tous ?

  • Commenter cette réponse |
Score
0
òh
òi
|
Je viens d'écrire ça :
  1. if(isset($_GET['img']))
  2. echo "YEESSSS". $_GET['img'];
  3.  
  4. echo '<a target="_blank" href=azerazer.php?img=', $urlphoto, '/',$Fichier, '>plop</a>';


et ça fonctionne xD
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Oui effectivement crazycat@idn et vraiment désolé de n'avoir pas regarder avant =s
Le soucie comme tu peux le voir dans ton exemple est que si je tape se code :
  1. echo '<a target="_blank" href=clic.php?img="', $urlphoto, '/',$Fichier, '">';


et que ensuite je fais un :
  1. $image = $_GET['img'];


ça me met une erreur comme quoi img n'est pas défini :??: 
  • Commenter cette réponse |
Score
0
òh
òi
|
Mais tout a fait xD
Cependant pour ma défense, si on regardes correctement la demande de danydan01, elle a changer en cours de route et c'est pour ça que nous sommes repartis sur une autre solution :D  qui se trouves être la tienne de départ mais bon... ca on en parles pas lol
  • Commenter cette réponse |
Score
0
òh
òi
|
Heu, on en revient pas à la solution que j'ai proposé au départ là ?
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
tu veux que je te dise la meilleur ?!
C'est que dans l'URL il m'affiche bien l'image sélectionne "sequence.php?photo=ex03B.png"
Alors la je comprends plus rien....
  • Commenter cette réponse |
Score
0
òh
òi
|
Qu'est-ce que tu entends par juste l'url qui mène à l'image? qu'il y a bien taPage.php?photo=tonImage.jpg ??

C'est pas possible qu'il le trouve pas, il s'est passé un truc entre les deux la xD
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
oui, juste l'url qui mène à l'image sélectionne.
Je n'arrive pas a comprendre comment la variable photo n'est pas défini :pfff: 
  • Commenter cette réponse |
Score
0
òh
òi
|
:o 

wouaou xD, est-ce qu'il y a quelque chose dans ton URL?
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
je met ce bout de code :

  1. echo '<a href="sequence.php?photo='. $Fichier .'" ><img src="', $urlphoto, '/',$Fichier, '" /></a>';
  2. $nomPhoto = $_GET['photo'];


Et l'erreur et bien sur le $_GET['photo'], photo est indiqué comme "Undefined index: photo"
  • Commenter cette réponse |
Score
0
òh
òi
|
Je ne sais plus si la casse a une importance en PHP, mais je mettrai quand GET en majuscule. Peut être que ça vient de ça, parce que j'ai toujours utiliser ça comme ça, et jusqu’à présent ça a marché tout le temps xD

A la rigueur, pour mieux te repérer dans les erreurs, met des noms différent entre le GET['photo'] et la variable qui le récupère. Du genre :
$nomPhoto = $_GET['photo'];

Plus facil pour savoir d'où vient l'erreur ^^
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Juste je voulais te demander, pourquoi quand je fais par exemple
  1. $photo = $_Get['photo'];

j'ai une erreur qui me dit que photo n'est pas défini...

Pourtant dans cette ligne photo est défini non ?

  1. echo '<a href="sequence.php?photo='. $Fichier .'" ><img src="', $urlphoto, '/',$Fichier, '" /></a>';
  • Commenter cette réponse |
Score
0
òh
òi
|
:D  merci, ce fut un plaisir ;) 

Bonne prog :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Merci beaucoup DivX_666
Grâce a toi j'ai réussi a faire ce que je voulais.
J'arrive a récupérer le nom du fichier sélectionne, et à l'ajouter a ma base de donnée :D 
Je t'ai élu meilleur réponse car tu es celui qui le mérite le plus ;) 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Meilleure réponse sélectionnée par danydan01.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Il me manque juste que je n'arrive pas a récupéré le nom de l'image sélectionne pourtant je fais bien un :
  1. $photo = $_GET['photo'];
  2. echo '$photo'; // pour vérification
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Désolé, je teste cela tout de suite et je te dit ça =)
  • Commenter cette réponse |
Score
0
òh
òi
|
Ca donne ce que tu veux?
  • Commenter cette réponse |
Score
0
òh
òi
|
ah ba dans ce cas tu peux virer le <input [...] /> et remplacer la ligne par celle la :
  1. echo '<img onclick="document.location(\'taPage.php?photo='. $Fichier .'\');" src="', $urlphoto, '/',$Fichier, '" />';


Ensuite tu pourras récupérer le nom de ta photo par :
  1. $photo = $_GET['photo'];


EDIT :

en fait même plus besoin de onclick, ca deviendrai :
  1. echo '<a href="taPage.php?photo='. $Fichier .'" ><img src="', $urlphoto, '/',$Fichier, '" /></a>';
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Effectivement cela fonctionne, mais les images étant déjà assez visibles, comment faire pour que lorsque je click sur une images, je sois redirigé vers ma pages précédente, mais que je garde dans une variable le nom de l'images sélectionné ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Voici la ligne corrigée :
  1. echo '<img onclick="document.getElementById(\'inNomFic\').value=\''. $Fichier .'\';window.open(\''. $urlphoto .'/'. $Fichier .'\');" src="', $urlphoto, '/',$Fichier, '" />';


Ça marche chez moi donc là, ya plus moyen lol
  • Commenter cette réponse |
Score
0
òh
òi
|
lol ok. bon je regarde pour une solution pour la première partie de ce qu'il y avait (mettre dans l'input caché la bonne valeur) et je te le donne dès que ca marche.
Ca devrait pas mettre trop de temps :D 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Oui avec le bout de code il y a bien redirection vers l'image cliqué. Cela m'affiche l'image bien l'image choisi.
Et j'utilise le "Renard de Feu" comme Navigateur :sol: 
  • Commenter cette réponse |
Score
0
òh
òi
|
Essai de mettre uniquement ca :
  1. echo '<img onclick="window.open(\''. $urlphoto .'/'. $Fichier .'\');" src="', $urlphoto, '/',$Fichier, '" />';


à la place de cette ligne la :
  1. echo '<img onclick="document.getElementById("inNomFic" ).value='. $Fichier .';window.open(\''. $urlphoto .'/'. $Fichier .'\');" src="', $urlphoto, '/',$Fichier, '" />';


on verra déjà si la redirection se fait.
Quel navigateur tu utilise au fait?
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
NOn cela ne marche guère mieux.
le problème ne viendrais pas du paramètre onclick ?
c'est justement se paramètre qui devrais nous permettre de pouvoir cliquer sur l'une des images ?!
  • Commenter cette réponse |
Score
0
òh
òi
|
Remplace ceci :
  1. .value='. $Fichier .'


par :
  1. .value=\''. $Fichier .'\'


Ca changeras peut être quelque chose. je vais faire des essais chez moi en même temps
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
le code html retourné et le suivant :

  1. <img onclick="document.getElementById("inNomFic" ).value=ex01A.png;window.open('./images/ex01A.png');return false;" src="./images/ex01A.png" width='117' height='120' /> 


j'ai affiché que pour la première image, parsque ca écrie le même code pour toutes les images de mon dossier...

déjà de voir que value prend le nom de l'image c'est déjà pas mal, mais je voudrais faire un truc générique qui récupère que le nom de l'image sur laquel nous avons cliqué =)
  • Commenter cette réponse |
Score
0
òh
òi
|
@danydan01 :
je voulais le code HTML une fois la page chargée.

@crazycat : bien maître je prends note de vos enseignements.... :D  Je reconnais que je ne connaissais pas cette subtilité, et je vais de ce pas tester ce code ^^
EDIT : effectivement c'est... comment dire.... surprenant ^^ pourtant à première vue c'est la même chose :)  je garde ca dans un coin de ma tête :) 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Cela m'ouvre bien le dossier avec toutes mes images mais je ne peut cliquer sur aucune image...
Voila le code :

  1. if (is_dir($nomRepertoire))
  2. {
  3. $dossier = opendir($nomRepertoire);
  4. while ($Fichier = readdir($dossier))
  5. {
  6. if ($Fichier != "." AND $Fichier != ".." AND (stristr($Fichier,'.gif') OR stristr($Fichier,'.jpg') OR stristr($Fichier,'.png') OR stristr($Fichier,'.bmp')))
  7. {
  8. // Hauteur de toutes les images
  9. $h_vign = "120";
  10. $taille = getimagesize($nomRepertoire."/".$Fichier);
  11. $reduc = floor(($h_vign*100)/($taille[1]));
  12. $l_vign = floor(($taille[0]*$reduc)/60);
  13.  
  14.  
  15. //echo '<a target="_blank" href="', $urlphoto, '/',$Fichier, '">';
  16. echo '<img onclick="document.getElementById("inNomFic" ).value='. $Fichier .';window.open(\''. $urlphoto .'/'. $Fichier .'\');" src="', $urlphoto, '/',$Fichier, '" ';
  17. echo "width='$l_vign' height='$h_vign' /> ";
  18. //echo "</a> ";
  19.  
  20. }
  21. }
  22. closedir($dossier);
  23. echo '<input type="hidden" id="inNomFic" value="" />';
  24. }
  25. else{
  26. echo' Le répertoire spécifié n\'existe pas';
  27. }


Et aucun retour d'erreur php met retourné...
  • Commenter cette réponse |
Score
0
òh
òi
|
Je me permets une disgression:
DivX_666 a dit :
EDIT2 : pourquoi tu met des virgules pour faire ta concaténation ???

danydan01 a dit :
Pour l'EDIT2 :
Effectivement pour la concaténation normalement ce sont des . je sais pas pourquoi j'ai mis des , :pt1cable: 
Mais cela a l'air de fonctionner même avec des virgules :lol: 

DivX_666 a dit :
Ola, ta un PHP très tolérant lool


Sachez jeune padawan (aussi connu sous le nom de DivX_666) que echo fonctionne comme une fonction bien que ça n'en soit pas une. On peut lui passer une série d'arguments (séparés par des ,) qui seront donc concaténés automatiquement, ou bien un seul (on fait la concaténation manuellement).
Et malgré l'habitude qu'ont beaucoup de personne de concaténer eux-même la chaine passée à echo, il est plus efficace et juste d'utiliser echo sous forme de fonction, que ce soit pour les performances ou pour le fonctionnement.

Une démonstration:
  1. <?php
  2. echo "test 1 : <pre>".var_dump($_SERVER)."</pre>";
  3. echo "-------------------";
  4. echo "test 2 : <pre>", var_dump($_SERVER), "</pre>";

Testez ce code et observez les différences d'affichage.
  • Commenter cette réponse |
Score
0
òh
òi
|
Oula, j'ai du mal en effet mdr ^^
Si tu ne vois pas l'icone de la souris qui change, c'est normal, clique quand même.
Si ça marche pas même quand tu clique, poste la partie du code qui a été générer pour voir ce que PHP a réellement écrit.

PS : de rien, ce forum est quand même là pour ca ;) 
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Tu me croie si je te dis que cela ne change rien du tout ?! :heink: 
Mais en tout cas je tiens a te remercier pour le mal que tu te donne pour m'aider :bounce: 
  • Commenter cette réponse |
Score
0
òh
òi
|
Alors, remplace :
  1. window.location.replace("'. $urlphoto .'/'. $Fichier .'");

par :
  1. window.open(\''. $urlphoto .'/'. $Fichier .'\');return false;
  • Commenter cette réponse |
Score
0
òh
òi
|
Bon attends ca doit être la redirection qui merde. Je recherche ce que j'avais fait, parceque c'est pas mon code ca
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
j'ai testé le code suivant :
  1. while ($Fichier = readdir($dossier))
  2. {
  3. if ($Fichier != "." AND $Fichier != ".." AND (stristr($Fichier,'.gif') OR stristr($Fichier,'.jpg') OR stristr($Fichier,'.png') OR stristr($Fichier,'.bmp')))
  4. {
  5. // Hauteur de toutes les images
  6. $h_vign = "120";
  7. $taille = getimagesize($nomRepertoire."/".$Fichier);
  8. $reduc = floor(($h_vign*100)/($taille[1]));
  9. $l_vign = floor(($taille[0]*$reduc)/60);
  10.  
  11.  
  12. //echo '<a target="_blank" href="', $urlphoto, '/',$Fichier, '">';
  13. echo '<img onclick="document.getElementById("inNomFic" ).value='. $Fichier .';window.location.replace("'. $urlphoto .'/'. $Fichier .'" );" src="', $urlphoto, '/',$Fichier, '" ';
  14. echo "width='$l_vign' height='$h_vign' /> ";
  15. //echo "</a> ";
  16.  
  17. }
  18. }
  19. closedir($dossier);
  20. echo '<input type="hidden" id="inNomFic" value="" />';


et cela m'affiche toutes les images sans que je puisse cliquer dessus pour en sélectionner une :( 

Moi ce que je demande en gros c'est que, les images apparaisse à l'écran, et puis lorsque j'en sélectionne une, son nom de fichier soit enregistré dans une variable, puis je fais un retour a ma page d'exercice à l'aide d'un header ('location:monfichier.php);
  • Commenter cette réponse |
Afficher plus de solutions

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS