Votre question

Galerie d'images simple [php] [résolu]

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
30 Décembre 2005 02:55:38

Bonjour à tous !

Je fais en ce moment un site sur Fable : The Lost Chapters. Comme le but de mon site est avant tout de montrer la qualité graphique du jeu, il faudrait que je trouve un bon script qui s'adapterait parfaitement à mon site. J'en ai trouvé un pas mal, mais pas tout à fait ce dont j'ai besoin et qui possède beaucoup d'erreurs.

Il me faudrait un script vraiment très simple où il y a juste à envoyer les photos par ftp dans les dossiers.

Il faut que le tableau ne soit pas plus large que 300 pixel. Les images seraient de 275 de largeur normalement. Pour la hauteur, il faudrait que ça s'adapte en proportion. Mais normalement ceux sont des images 16:9. Il faut ensuite que lorsque qu'on clic sur l'image, elle s'ouvre dans une nouvelle fenêtre à la taille original.
Au niveau de l'arborescence, je veux qu'il y ai des liens portant les noms des dossiers où je place mes images. Par exemple : mon dossier d'images de creatures s'appellerait "creatures" - pas d'accent, pas de maj, pas de caractères spéciaux - donc le lien marquerait "creatures" ; puis lorsqu'on clic dessus, les images s'affichent en taille 275px de largeur ; et lorsqu'on clic encore sur l'image, elle s'affiche dans une nouvelle fenêtre.

Il faut, pour terminer, une arborscence sous forme linéaire en haut et en bas de la page.
Par exemple : "Galeries > creatures > balverine"

Voilà... simple, nan ?

Je pourrait le faire en html, mais le truc c'est que ça me ferait modifier pleins de pages pour ajouter une image à chaque fois... Puis si je fais une erreur, c'est toutes les images qui payent. Alors qu'avec un script, les erreurs ne seraient pas et le temps serait gagné.

Je précise aussi que le script serait directement inséré dans le site sous forme d'include. Donc si vous pouviez éviter de donner le nom d'index à la galerie. Je préfèrerais que les pages (s'il doit y en avoir plusieur) porte un nom débutant par "gal_".

Je crois avoir fini. Si vous avez pas tout compris (parce que j'ai tendance à bien voir les choses, mais mal les expliquer, ce qui revient au même :-? ), vous pouvez me contacter par msn. Merci d'avance.

Autres pages sur : galerie images simple php resolu

30 Décembre 2005 09:31:19

Regarde ce script, il devrait t'interesser :
il fonctionne sur le principe du scan de dossier et fichier. Tu as 2 frames : une pour la navigation et présentation des minitures et l'autre pour l'affichage de la photo en grand. Libre à toi de le modifier selon tes besoins :

  1. <?
  2. // HAUT DE PAGE COMMUN
  3. ?><HTML><HEAD>
  4. <TITLE>Catalogue de photos</TITLE>
  5. </HEAD><?
  6.  
  7. // GÉNÉRATION DU FRAMESET
  8. if(!@$_GET["frame"]) { ?>
  9.  
  10. <FRAMESET COLS="150,*" frameborder=0>
  11. <FRAME SRC="<? echo $_SERVER["SCRIPT_NAME"]?>?frame=menu" NAME="menu">
  12. <FRAME SRC="<? echo $_SERVER["SCRIPT_NAME"]?>?frame=image" NAME="image">
  13. </FRAMESET>
  14.  
  15. <? }
  16. // FRAME MENU
  17. elseif($_GET["frame"]=="menu") { ?>
  18.  
  19. <BODY bgcolor=white><center>
  20.  
  21. <? // Dossier en cours
  22. $curdir = @$_GET["dir"];
  23. if(!$curdir) $curdir = ".";
  24.  
  25. echo "<b>Dossier ".$curdir."</b><br><br>\n";
  26.  
  27. // LISTE DES DOSSIERS COURANTS
  28. $dir = opendir($curdir);
  29. // on scanne le répertoire
  30. while($p=readdir($dir)) {
  31. // si c'est un dossier sauf . (current directory)
  32. if(is_dir($curdir."/".$p)&&($p!=".")) {
  33. // si c'est le dossier .. (parent directory)
  34. if($p=="..") {
  35. // si ce n'est pas dans le dossier racine
  36. if($curdir!=".") {
  37. // lien vers le dossier parent
  38. $tmp = strrpos($curdir,"/");
  39. echo "<A href='?frame=menu&dir=".substr($curdir,0,$tmp)."'
  40. target=menu>Parent Directory</A><br>\n";
  41. }
  42. // sinon, lien vers le dossier
  43. } else {
  44. echo "<A href='?frame=menu&dir=".$curdir."/".$p."' target=menu>".$p."</A><br>\n";
  45. }
  46. }
  47. }
  48. closedir($dir);
  49.  
  50. // LISTE DES IMAGES DU DOSSIER COURANT
  51. $dir = opendir($curdir);
  52. // on scanne le répertoire
  53. while($p=readdir($dir)) {
  54. // si c'est un fichier
  55. if(is_file($curdir."/".$p)) {
  56. // si c'est une extension d'image
  57. $ext = strtolower(substr($p, strrpos($p, '.') + 1));
  58. if( ($ext=="jpg") || ($ext=="jpeg")
  59. || ($ext=="gif")
  60. || ($ext=="bmp")
  61. || ($ext=="png")) {
  62. // lien vers l'image
  63. echo "<br><A href='?frame=image&dir=".$curdir."&image=".$p."' target=image>
  64. <img src='".$curdir."/".$p."' width=100></A><br>\n";
  65. }
  66. }
  67. }
  68. closedir($dir);
  69.  
  70. // MISE A JOUR DE LA FRAME IMAGE
  71. ?><script>
  72. top.image.location="?frame=image&dir=<?echo $curdir?>"
  73. </script>
  74.  
  75. </center></BODY>
  76.  
  77. <? }
  78. // FRAME IMAGE
  79. elseif($_GET["frame"]=="image") { ?>
  80.  
  81. <BODY bgcolor=black>
  82. <table width=100% height=100%><tr>
  83. <td align=center>
  84.  
  85. <? // AFFICHAGE DE L'IMAGE
  86. if(@$_GET["image"]) { ?>
  87.  
  88. <img src="<? echo @$_GET["dir"]."/".$_GET["image"]?>">
  89.  
  90. <? }
  91. // OU AFFICHAGE DU TITRE (nom du dossier)
  92. else { ?>
  93.  
  94. <font size=6 color=white>Dossier <?echo @$_GET["dir"]?></font>
  95.  
  96. <? } ?>
  97.  
  98. </td>
  99. </table>
  100. </BODY>
  101.  
  102. <? }
  103. // BAS DE PAGE COMMUN
  104. ?></HTML>


(PS : tu ne pourras pas mettre d'accent dans les noms de tes dossiers. Tu peu essayer de mettre un nom pour les photo en se servant du nom du fichier puis en enlevant l'extension [une petite recherche de fonction sera necesssaire])
30 Décembre 2005 12:37:29

A chaque fois que tu recherches un script ou logiciel interressant, je te suggère de te rendre sur Framasoft.net.

Par exemple pour les galeries il y'a plusieurs scripts différents tous disponibles ici : http://framasoft.net/rubrique387.html

Je suis également à la recherche d'une galerie très simple et mon choix se porte pour le moment sur ZenPhoto ( http://framasoft.net/article3732.html - http://www.zenphoto.org/ ), un script simple utilisant PHP et MySQL et acceptant les commentaires.

Le script qui te conviendrait le mieux serait probablement SPGM ( http://framasoft.net/article4207.html - http://spgm.sourceforge.net/?lg=fr ). Extremement simple et adaptable simplement dans un site, il ne nécessite aucune base de donnée ce qui peut par compte bouffer pas mal de ressources serveur avec PHP et Apache.
Contenus similaires
30 Décembre 2005 14:07:07

Merci beaucoup ! je ne pensais pas que ça serait si rapide ! Je vais le tester de suite. Par contre, il y a des chances à ce que j'ai un problème (je fais beaucoup d'erreurs lol). Donc je reviendrais certainement sur ce forum. Mais encore merci. :-D
30 Décembre 2005 14:29:06

Et bien voilà... Comme je l'avais prédit. Lol. Mon problème est que (sur le script qui m'a directemet été donné), lorsque je l'insère dans le squelette de ma page (qui contient la ban, le menu de gauche, et le footer), et bien rien ne s'affiche, même pas un petit code d'erreur. Alors là, vraiment je comprend pas. Par contre, je précise que j'ai été obligé d'enlever les balise <html> et <head>.

Pour les liens qu'on m'a donné, j'en ai déjà testé un, et il ne me convient pas. Parce qu'en fait, mon cadre central ne peut prendre que 420 de largeur maximum. Donc il faut que les miniatures s'affichent dans ce cadre, et que lorsqu'on clic l'image s'ouvre à taille réelle dans une nouvelle fenêtre (que l'on ferme en cliquant sur l'image). Voilà. C'est vraiment tout simple ce qu'il me faut.

En tout cas merci ! je vais aller tester le second lien.
30 Décembre 2005 14:33:41

Ca y est je viens de comprendre ton code Swater44 ! Il fonctionne, mais seulement sur une page vide (c'est à dire qu'il y a que ce code). C'est presque parfait. Le seul truc qui me gêne c'est le frame de droite. Je pense que je vais réussir à passer l'arborescence linéaire de ce frame dans celui de gauche. Et il faudrait aussi que j'arrive à enlever l'arborescence dans celui de gauche. J'espère que je vais y arriver ^^. :-D
30 Décembre 2005 14:45:24

J'ai presque réussi à le faire fonctionner. Maintenant j'ai un problème au niveau de l'affichage des images en grand. J'ai en fait enlevé le second frame et placé directement le code du premier dans ma page. Ce qui me donne les dossiers les uns en dessous des autres comme il me les fallait. Quand on clic sur le lien l'arborescence linéaire fonctionne très bien, mais maintenant, le problème est que quand on clic sur une image, il m'ouvre le dossier dans lequel je suis dans une nouvelle fenêtre. Alors que je veux que ça soit juste l'image qui s'ouvre à taille réelle dans la nouvelle fenêtre. Voici le code que j'ai :
  1. echo "<br><A href='?frame=image&dir=".$curdir."&image=".$p."' target=_blank>


C'est moi qui ai ajouté le _blank pour qu'il aille dans une nouvelle fenêtre. Mais je comprend rien au reste de ce petit code. Merci de me répondre.
30 Décembre 2005 15:49:13

Redonnes l'ensemble du script pour voir
30 Décembre 2005 15:57:03

<? // Dossier en cours
$curdir = @$_GET["dir"];
if(!$curdir) $curdir = ".";

echo "Galeries".$curdir."<br><br>\n";

// LISTE DES DOSSIERS COURANTS
$dir = opendir($curdir);
// on scanne le répertoire
while($p=readdir($dir)) {
// si c'est un dossier sauf . (current directory)
if(is_dir($curdir."/".$p)&&($p!=".")) {
// si c'est le dossier .. (parent directory)
if($p=="..") {
// si ce n'est pas dans le dossier racine
if($curdir!=".") {
// lien vers le dossier parent
$tmp = strrpos($curdir,"/");
echo "<A href='?frame=menu&dir=".substr($curdir,0,$tmp)."'
target=menu>Retour</A><br>\n";
}
// sinon, lien vers le dossier
} else {
echo "<A href='?frame=menu&dir=".$curdir."/".$p."' target=menu>".$p."</A><br>\n";
}
}
}
closedir($dir);

// LISTE DES IMAGES DU DOSSIER COURANT
$dir = opendir($curdir);
// on scanne le répertoire
while($p=readdir($dir)) {
// si c'est un fichier
if(is_file($curdir."/".$p)) {
// si c'est une extension d'image
$ext = strtolower(substr($p, strrpos($p, '.') + 1));
if( ($ext=="jpg") || ($ext=="jpeg")
|| ($ext=="gif")
|| ($ext=="bmp")
|| ($ext=="png")) {
// lien vers l'image
echo "<br><A href='?frame=image&dir=".$curdir."&image=".$p."' target=_blank>
<img src='".$curdir."/".$p."' width=300></A><br>\n";
}
}
}
closedir($dir);

// MISE A JOUR DE LA FRAME IMAGE
?><script>
top.image.location="?frame=image&dir=<?echo $curdir?>"
</script>
30 Décembre 2005 16:17:29

Si j'ai bien compri ton problème [ce don je ne suis pas sur ] il te faudrais just travailler avec les fichiers et non les dossiers: kan tu clik sur le nom du fichier listé ça t'ouvre une nouvelle fenêtre tu met un GET avec le nom du fichier et hop c'est fait
30 Décembre 2005 16:24:24

  1. <? // Dossier en cours
  2. $curdir = @$_GET["dir"];
  3. if(!$curdir) $curdir = ".";
  4.  
  5. echo "<b>Dossier ".$curdir."</b><br><br>\n";
  6. // LISTE DES IMAGES DU DOSSIER COURANT
  7. $dir = opendir($curdir);
  8. // on scanne le répertoire
  9. while($p=readdir($dir)) {
  10. // si c'est un fichier
  11. if(is_file($curdir."/".$p)) {
  12. // si c'est une extension d'image
  13. $ext = strtolower(substr($p, strrpos($p, '.') + 1));
  14. if( ($ext=="jpg") || ($ext=="jpeg")
  15. || ($ext=="gif")
  16. || ($ext=="bmp")
  17. || ($ext=="png")) {
  18. // lien vers l'image
  19. echo '<br><a href="tanouvellefenetre.php?photo='.$p.'">'.$p.'</a>';
  20. }
  21. }
  22. }
  23. closedir($dir);
  24. ?>



30 Décembre 2005 17:37:12

Merci je test ça ti suite et je te dis si ça marche ! :-D
30 Décembre 2005 17:41:38

Et bah y a un gros problème... Parce que là, il y a plus rien qui s'affiche, et je vois pas ce que je dois mettre à la place de tanouvellefenetre.php puisque c'est l'image qui doit s'ouvrir en taille réelle dans une nouvelle fenêtre...

Je comprend vraiment pas ce que t'as voulus faire... :-?
30 Décembre 2005 18:11:11

Je te suggère également d'essayer SPGM comme cité plus haut et comme déjà dit.
Si tu as essayé ZenPhoto, c'est probable qu'il ne t'ai pas convenu à cause de sa largeur, mais l'autre est beaucoup + simple et paramètrable.

Sinon pas testé le script que vous essayez tous, mais il n'est pas compatible XHTML + CSS ce qui est dommage de nos jour. Cependant il doit être aisé de le corriger.
J'ajoute que je n'aime pas du tout les frames et que je ne dois pas être le seul. Pour la navigation c'est vraiment pas le top, ni pour le réferencement, ni pour l'impression des pages.
30 Décembre 2005 18:14:17

En fait voici le problème :

J'ai une page où les dossiers de mes images s'affichent en liens, comme c'est sur le premier script. Ensuite lorsque l'on clic sur un des ces liens, les images contenues dans le dossier s'affichent en miniatures sur toute la page. Enfin, lorsqu'on clic sur une image, celle-ci s'ouvre en taille réelle dans une nouvelle fenetre. Voilà

Là je pense que je peux pas faire plus simple en explication.

Mais je précise quand même que je ne veux pas de frame parce que c'est pas bien (ici il y en a pas besoin de toute façon). :-)

PS : j'ai déjà essayé SPGM. Mais merci kan meme ^^
30 Décembre 2005 18:35:41

Ca y est ! J'ai réussi ! Plus la peine de se casser la tête pour ce problème. Voici le code que j'ai fait pour le lien de l'image :
  1. <a href='".$curdir."/".$p."' target='_blank'>$p<img src='".$curdir."/".$p."' width=300></A>


C'était finalement tout simple. Il fallait juste que je demande l'image du dossier. donc je faisais ".$curdir."/".$p." et c'était bon.

Par contre, maintenant j'ai un problème d'erreur sur la page. Mais je vois pas où elle sont. Surtout que ça fonctionne très bien. Je pense que ça vient des frame.
30 Décembre 2005 18:56:07

C'est bon, j'ai tout corrigé, j'ai tout simplement enlevé le rafraichissement de la seconde frame. Si vous voulez voir ce que ça donne, cliquez sur mon site web et dirigé vous vers la galerie. Encore merci. Pour ceux qui voudrait utiliser un jour cette galerie, je laisse le code à disposition et j'explique rapidement quelques petits trucs dans le prochain topic. :-P ;-) :-D
30 Décembre 2005 19:42:21

  1. <? // Dossier en cours
  2. $curdir = @$_GET["dir"];
  3. if(!$curdir) $curdir = ".";
  4.  
  5. echo "Galerie".$curdir."<br><br>\n";
  6.  
  7. // LISTE DES DOSSIERS COURANTS
  8. $dir = opendir($curdir);
  9. // on scanne le répertoire
  10. while($p=readdir($dir)) {
  11. // si c'est un dossier sauf . (current directory)
  12. if(is_dir($curdir."/".$p)&&($p!=".")) {
  13. // si c'est le dossier .. (parent directory)
  14. if($p=="..") {
  15. // si ce n'est pas dans le dossier racine
  16. if($curdir!=".") {
  17. // lien vers le dossier parent
  18. $tmp = strrpos($curdir,"/");
  19. echo "<A href='?frame=menu&dir=".substr($curdir,0,$tmp)."'
  20. target=menu>Retour</A><br>\n";
  21. }
  22. // sinon, lien vers le dossier
  23. } else {
  24. echo "<A href='?frame=menu&dir=".$curdir."/".$p."' target=menu>".$p."</A><br>\n";
  25. }
  26. }
  27. }
  28. closedir($dir);
  29.  
  30. // LISTE DES IMAGES DU DOSSIER COURANT
  31. $dir = opendir($curdir);
  32. // on scanne le répertoire
  33. while($p=readdir($dir)) {
  34. // si c'est un fichier
  35. if(is_file($curdir."/".$p)) {
  36. // si c'est une extension d'image
  37. $ext = strtolower(substr($p, strrpos($p, '.') + 1));
  38. if( ($ext=="jpg") || ($ext=="jpeg")
  39. || ($ext=="gif")
  40. || ($ext=="bmp")
  41. || ($ext=="png")) {
  42. // lien vers l'image
  43. echo "<br><a href='".$curdir."/".$p."' target='_blank'>$p<br><img src='".$curdir."/".$p."' width=300></A><br>\n";
  44. }
  45. }
  46. }
  47. closedir($dir);
  48. ?>


Explication :

Ce script est vraiment simple (Vous avez un exemple sur mon site) :
- Il n'utilise pas de MySql.
- Scan des dossiers contenus dans le même dossier que ce script.
- Scan des images des dossiers.
- Listing des Dossiers sur la page contenant ce script.
- Listing des images (en miniature : vous pouvez régler la taille) contenues dans les dossiers.
- Et ouverture des images en taille réelle dans une nouvelle fenêtre.

Ce script convient parfaitement à tous les sites et s'intègre très facilement. Pas de couleur spécial, il prendra l'écriture de votre page et la couleur des liens. Pour inclure ce script à vos pages :
  1. <?php include ("galerie.php"); ?>


Tout simplement !

Merci à Swater44 ;-)
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