Page 1 sur 2

Tutoriel : comment faire une galerie en php ?

MessagePosté: 09 Aoû 2005 15:52
de Vally8
Bien, ryoko m'a demandé comment on faisait une galerie.... autant que tout le monde en profite, alors voici un petit script qui va vous faciliter la vie....

Je vous explique :

* il faut que vous activiez la librairie graphique gd : pour les utilisateurs de free, c'est deja activé. Pour les autres, ceux qui utlisent easyphp : cliquez sur l'icone d'easyphp dans la barre des taches, cherchez extensions : dans la liste cherchez gd2 : cochez la case, appliquez, fermez, et relancez easyphp : c'est bon....

* pour que le script fonctionne, copiez tout le script dans un fichier php.... ensuite regardez dans les premieres lignes : il y a des choses à parametrer : 4 pour etre exactes : le repertoire ou se trouvent vos images, le nom de la galerie, le nom qui va s'afficher dans votre navigateur, et le nombre d'images que vous voudrez par ligne...

* uploadez ce fichier et créez un repertoire dans lequel vous mettrez toutes vos photos (et mettez le nom du répertoire dans le fichier php sans le "/" final )

* demandez l'affichage de la page php : il va créer les imagettes (maximum de 200 pixel en hauteur ou 200 pixel en largeur)

* ce script gere les fichiers images de type : jpg, jpeg, gif et png...
toutefois, un fichier gif étant le plus souvent animé, je ne vous conseille pas d'utiliser ce script pour des gifs animés.

* le code html est W3C :)

* l'affichage se fait dans un tableau : mais l'affichage n'est pas le plus difficile à changer si vous n'aimez pas cette solution ;)

* le code est commenté, mais si vous avez la moindre question ou le moindre commentaire, n'hesitez pas

Code: Tout sélectionner
<?
/*
   galerie.php par Vally8 (vally8@free.fr) - Aout 2005

   Un fichier php qui permet d'afficher des images sous forme de tableaux
   Vous pouvez changer le nom du repertoire ou se trouvent les images et le nombre d'images qui s'afficheront par ligne
   Vous pourrez aussi changer le titre de la galerie et le nom qui va apparaitre dans la barre de navigation.

*/


// le repertoire où se trouvent les images
$rep = "images";
// le nom qui va apparaitre en tant que titre
$titre_page = "Ma galerie";
// le nom qui apparait dans la barre du navigateur
$titre_navigateur = "Un exemple de galerie";
// le nombre d'images par lignes
$nb = 3;

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR"   "http://www.w3.org/TR/html4/loose.dtd">

<html>                       
<head>

<title><? echo $titre_navigateur; ?></title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?

echo "<h1 align=\"center\">$titre_page</h1>\n";
// les images seront representées en tableaux avec $nb images par ligne : on commence le tableau
echo "<table width=\"100%\">
       <tr>
         <td>&nbsp;</td>\n";

// on ouvre le repertoire
$d = dir("./$rep");
   
// si le repertoire ne contient pas de dossier "miniatures", on le cree   
if  ( ! (is_dir("./$rep/miniatures")))
   {
      mkdir("./$rep/miniatures");
   }
$i = 0;
   
   
// on boucle sur les entrées du fichiers
while($fichier = $d->read())
{
   // pour récuperer le nom du fichier et son extension
   $noms=explode('.',$fichier,2);
      
   $name=$noms[0];
   $ext=$noms[1];

   // pas de traitement sur le dossier courant ni sur son pere ni sur les eventuels fichiers php
   if ($fichier != "." && $fichier != ".."  && $ext != "php")
   {
      // on verifie qu'on a bien affaire à un dossier
      if (is_file("./$rep/$fichier"))
         {
            // si on veut commencer une nouvelle ligne : on ferme la ligne, on met un peu d'espace et on en commence une nouvelle
            if (($i%$nb) == 0)
               {
                  echo "
                       </tr>
                       <tr>
                                <td>&nbsp;</td>
                       </tr>
                       <tr>\n";
               }
            
            // comment s'appellerait la miniature ?
            $min = $rep."/miniatures/".$name."_m.".$ext;
            
            // si elle n'existe pas, il faut la créer
            if (! (file_exists($min)))
               {           
               ImageRedim ($rep, $fichier);
               }

                     echo "<td align=center><a href =\"$rep/$fichier\" target=\"_blank\"> <img src=\"$min\" alt=\"$fichier\"></a></td>\n";
                     $i++;
                 }
       }
}
   
// fermeture du tableau puis du dossier
echo"</tr>
</table>\n";
$d->close();
?>

<p align="center">
<a href="http://validator.w3.org/check?uri=referer" target="_blank"><img border="0" src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"></a>
</p>

</body>
</html>


<?
function ImageRedim ($rep, $fichier)
{

$filename = "./$rep/$fichier";

// Définition de la largeur et de la hauteur maximale
$width = 200;
$height = 200;

// Cacul des nouvelles dimensions
list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig < $height_orig))
{
    $width = ($height / $height_orig) * $width_orig;
}
else
{
    $height = ($width / $width_orig) * $height_orig;
}
   // on recupere le nom et l'extension du fichier
   $noms=explode('.',$fichier,2);
   
   $name=$noms[0];
   $ext=$noms[1];   
   
   // Redimensionnement
   $image_p = imagecreatetruecolor($width, $height);
      
   if ($ext == "jpg" || $ext == "jpeg")
      $image = imagecreatefromjpeg($filename);
   if ($ext == "png")
      $image = imagecreatefrompng($filename);
   if ($ext == "gif")
      $image = imagecreatefromgif($filename);
   
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

   // comment va s'appeler la miniature et dans quel dossier sera t'elle ?
   $min = "./".$rep."/miniatures/".$name."_m.".$ext;
       
   // il ne reste plus qu'a enregistrer la miniature en fonction de l'extension
   if ($ext == "jpg" || $ext == "jpeg")
      imagejpeg($image_p,$min);
   if ($ext == "png")
      imagepng($image_p,$min);
   if ($ext == "gif")
      imagegif($image_p,$min);


?>

MessagePosté: 09 Aoû 2005 16:44
de ryoko.lila
bon j'ai esseyé (merci :heart:)
Mais avant de mettre le dessin ca me met cat
Code: Tout sélectionner
 
Notice: Undefined variable: ext in c:\program files\easyphp1-8\www\site\galerie.php on line 100

Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie.php on line 188

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie.php on line 188
   
   
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie.php on line 188

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie.php on line 188
   
     
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie.php on line 188

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie.php on line 188
   
   
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie.php on line 188

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie.php on line 188
   
  Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp1-8\www\site\galerie.php on line 191

MessagePosté: 09 Aoû 2005 16:47
de Vally8
humm... moi ligne 100 j'ai rien

et le script s'arrete ligne 162.... je t'ai envoyé le fichier par mail : essayes avec celui la :ok:

MessagePosté: 09 Aoû 2005 16:57
de ryoko.lila
Code: Tout sélectionner
Notice: Undefined variable: ext in c:\program files\easyphp1-8\www\site\galerie2.php on line 58

  Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
   
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
   
   
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
   
   
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
   Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
 
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
 
   
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
 
 

Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
   
 
 
Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
 
   
Warning: Division by zero in c:\program files\easyphp1-8\www\site\galerie2.php on line 128

Warning: imagecreatetruecolor(): Invalid image dimensions in c:\program files\easyphp1-8\www\site\galerie2.php on line 137

Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
   
 

Warning: Division by zero in c:\program files\easyphp1-8\www\site\galerie2.php on line 128

Warning: imagecreatetruecolor(): Invalid image dimensions in c:\program files\easyphp1-8\www\site\galerie2.php on line 137

Notice: Undefined variable: image in c:\program files\easyphp1-8\www\site\galerie2.php on line 146

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in c:\program files\easyphp1-8\www\site\galerie2.php on line 146
 
Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp1-8\www\site\galerie2.php on line 120

Merci -_-"

MessagePosté: 09 Aoû 2005 17:07
de Vally8
premiere erreur trouvée :)
4 lignes à remonter (corrigé dans le code)

en revanche, apres, je ne vois pas .... ligne 146 : tes fichiers sont des gif ????

MessagePosté: 09 Aoû 2005 17:25
de ryoko.lila
jpeg! mais je vais faire le menage :D

MessagePosté: 15 Aoû 2005 16:05
de Zeus
Excellent ce tutorial !
Si j'ai besoin de faire une galerie un jour, je viendrai jeter un coup d'oeil c'est sur !

MessagePosté: 15 Aoû 2005 18:13
de Vally8
merci :ok:
visiblement, ca fait des warning (juste sous windows), mais chez free, ca s'exécute sans soucis :ok:

MessagePosté: 15 Aoû 2005 21:40
de ryoko.lila
Pareil pour Lycos, ca marche bien :oui:
Merci, val :pouce:

MessagePosté: 24 Aoû 2005 12:25
de ryoko.lila
Je fait ma galerie et tout s'affiche bien (sur le web local ;) )
Mais y'a un étrange "Thumbs.db" qui s'affiche au milieu des images! c'est normal?

MessagePosté: 24 Aoû 2005 12:33
de FF pro
c'est normal que je comprenne rien ???

MessagePosté: 24 Aoû 2005 12:34
de Aéris
Kikoo Vally

Merci ca va servir à un copain depuis le temps que je l'embête pour qu'il fasse sa galerie.

Là y va plus pouvoir dire : je sais pas.

coooooooooollll !!! piégé le tit gars maintenant je vais le mettre au boulot. lol

MessagePosté: 24 Aoû 2005 12:39
de Vally8
ryoko.lila a écrit:Je fait ma galerie et tout s'affiche bien (sur le web local ;) )
Mais y'a un étrange "Thumbs.db" qui s'affiche au milieu des images! c'est normal?


il faut que tu le supprime sur ton ftp ce fichier....
c'est un fichier généré par windows quand tu demande un affichage en miniature de tes dossiers : il ne sert qu'à windows ce fichier :ok:

MessagePosté: 24 Aoû 2005 13:09
de ryoko.lila
Dac merci :pouce:

MessagePosté: 30 Oct 2005 22:21
de ryoko.lila
J'ai un petit probléme avec une de mes galerie! En effet, les nouveaux dessins se mettent a la fin (meme en mettant bien le nom!)
Est-ce que le nombre est limité? ou est ce que j'ai fait une connerie ?
http://ryoko.lila.free.fr/site/nb.php
merci

MessagePosté: 30 Oct 2005 22:26
de Vally8
non, en fait, les dessins sont d'abord triés par date d'upload puis par nom de fichier : cela fait que tes nouveaux dessins apparaissent en dernier...
si tu veux que ca se mette en 1er, il faut reuploder toutes tes images... (chez free, ca change souvent de type de tri, je ne sais pas pourquoi :non:)

MessagePosté: 30 Oct 2005 22:31
de ryoko.lila
dacord merci :bisou:
c'est bizare, ca me fait que pour celle la o0"

MessagePosté: 30 Oct 2005 22:36
de Vally8
je te dis, si ca se trouve, c'est free qui a fait une mise à jour de quelque chose qui modifie le listage du répertoire :oui:

MessagePosté: 11 Juin 2006 16:29
de ryoko.lila
Ce topic n'est pas dans la bonne partie *siflote*

Mais j'ai surtout une question (qui revient au probléme ci dessus)
En effet, au bout d'un certain nombre d'image, les dessins se mettent a la fin (au lieu du début :grrr: ) c'est possible de faire en sorte que le programme crée une nouvelle page? :question:

MessagePosté: 11 Juin 2006 20:39
de Vally8
oui c'est possible, mais il faut que je modifie le script :)
tu me laisse combien de temps pour le faire ????