Bonjours à tous.
Je vais aller tout de suite dans le vif du sujet. J'ai cherché partout un script pour une galerie d'image, mais aucunes ne me convenait à 100%
J'avais lus des 100taines de coms tout script et site confondu. Pleins de gens ce plaignent. Et les réponses sont toujours les mêmes. Si t'es pas content, fais ton propre script au lieu de critiqué. Bon c'est ce que je fais...
Mon niveau est... presque 0...
disons 1.5... aller...
Bon, voila ce que je voulais:Dans une page manga.php, s'affiche un tableau avec dans une cellule un include.
Dans cet include, afficher une liste qui va lire automatiquement dans un répertoire image tout les sous répertoires.
Si on part du principe que je fasse un répertoire manga, les sous répertoires seraient du genre: naruto/ ; dragonBallZ/; Evangelion/, Priest/; Bleach, enfin, vous avez compris l'idée. Le but est simple, quand j'ai un nouveau manga, je rajoute simplement le dossier avec les images dans le répertoire manga, et ma liste s'actualise toute seule.
La liste doit biensur générer les liens hypertext vers les sous répertoires.
Quand on clic sur un lien on charge alors les images toujours dans le meme include. Les images seraient sous forme de miniature.
on afficherait également la taille de l'image, sa résolution et pourquoi pas le nombre de hits de l'image.
Biensur, si le dossier comporte plus de 300 images, ce qui est le cas de certains dossiers, il faudrait afficher un nombre max d'images dans l'include en générant alors des pages pour afficher les images suivantes...
Voila mon projet.
Quand on est nul en php et qu'on veut faire ça... on a pas trop le choix...
Faut se lancer...
Mais pour ça faut qu'on nous mette sur le droit chemin... sinon on fonce dans le ravin...
Ce que j'ai fais aujourd'hui:Mon projet était impossible pour moi. Mais une personne ma aidée, qui vient parfois ici.
Et voila ce que j'ai:
mon script génére la liste des sous répertoires dans mon répertoire manga. La liste est sous forme de lien.
Quand le clic sur un lien, il m'ouvre une page index se trouvant dans le répertoire choisi.
La page index quand à elle s'occupe de parcourir le dossier en sélectionnant uniquement les images.
Quand il tombe sur une image (jpg, gif ou png) il vérifie si le dossier tb existe. S'il n'existe pas, il le creer, ensuite, il verifie s'il existe deja une miniature dans le répertoire tb de l'image en question, si elle n'existe pas, il la creer, ensuite, il affiche la miniature avec un lien vers l'image reelle en target blank.
J'ai limité les images à raison de 5 images par lignes et 4 colonnes, ce qui fait un total de 20 images. Si le dossier en comporte plus, il ne les affiches pas. Il affiche le nombre d'image affiché, et le nombre d'image réel que contient le dossier (mais ca c'est pour mes phases de test).
Donc ce qui me manque aujourd'hui:générer un tableau avec mes images à l'interieur afin de facilité la mise en page (actuellement mes images sont collées les unes aux autres)
puis, générer des pages si le dossier comporte plus de 20 images.
Les plus:
Quand j'aurais fini tout ça, je pourrais ensuite améliorer le script avec:
- Optimiser mon script car il est tres maladroitement ecrit.
- dans la liste comportant tout les dossiers images, afficher pour chaque dossier le nombre d'image qu'il contient.
- afficher le nombre de hits par images.
- permettre aux visiteurs de parametrer l'affichage des images (nombre par lignes et le nombre de colonnes par page).
Mes codes (vraiment pas optimisés, car je suis un 0 .. euh.. 1.5 en php)
Une page bidon pour afficher l'include dans le tableau. (a noter qu'il faut l'appeler avec ?page=...php) on va appeler cette page: bidon.php et on l'ouvrira ainsi: bidon.php?page=explorerbeta4.php
<table width="100%" align="center">
<tr>
<td height="50" align="center">Ici vous pouvez lancer tout les scripts présents dans le site:</td>
<tr>
<td height="50" align="center">
<?php
$page = $_GET['page'];
include("$page.php");
?>
</td>
</tr></table>
La page explorerbeta4.php
<?php
function filelist ($startdir="./", $searchSubdirs=1, $directoriesonly=0, $maxlevel="all", $level=1) {
$ignoredDirectory[] = ".";
$ignoredDirectory[] = "..";
$ignoredDirectory[] = "_vti_pvt";
$ignoredDirectory[] = "_vti_cnf";
$ignoredDirectory[] = "_private";
global $directorylist;
if (is_dir($startdir)) {
if ($dh = opendir($startdir)) {
while (($file = readdir($dh)) !== false) {
if (!(array_search($file,$ignoredDirectory) > -1)) {
if (filetype($startdir . $file) == "dir") {
$directorylist[$startdir . $file]['dir'] = 1;
$directorylist[$startdir . $file]['name'] = $file;
}}}
closedir($dh);
}}
return($directorylist);
}
$files = filelist("images/",1,1);
foreach ($files as $list) {
echo "<a href=index01.php?page=images/" . $list['name'] . "/index>" . $list['name'] ."</a><br>";
}?>
Cette page génère la liste des sous dossiers dans un dossier choisi, ici, le dossier image, mais ca pourrait etre manga/ ou encore films/ etcetc
On fait attention de ne pas afficher les dossiers barbares qu'on peu avoir si on utilise frontpage. La liste qu'on affiche sera sous la forme de liens hypertexte vers une page index dans le dossier sélectionné
Ensuite la page index dans le répertoire d'image choisi:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>images</title>
</head>
<body>
<?php
$lmax = 5;
$hmax = 4;
function miniature($picture,$rep,$fext)
{
if (file_exists($rep . "tb/mini_" . $picture) == false) {
if ($fext == "jpg") { $source = imagecreatefromjpeg($rep . $picture);}
elseif ($fext == "gif") { $source = imagecreatefromgif($rep . $picture);}
else { $source = imagecreatefrompng($rep . $picture);}
$destination = imagecreatetruecolor(200, 150); // On crée la miniature vide
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
imagejpeg($destination, $rep . 'tb/mini_' . $picture);
}
}
$page = str_replace('index', '', $_GET['page']);
$dir = $page;
if (file_exists($dir . "tb/") == false) {
mkdir ($dir . "tb/", 0777);
}
$nombreimage = 0;
$intervalle = 0;
$nbligne = 0;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$ext= explode('.',$file);
$ext=array_pop($ext);
if ($ext == "jpg" OR $ext == "gif" OR $ext == "png"){
miniature($file, $dir, $ext);
if ($nbligne !== $hmax) {
echo "<a href=" . $dir . $file . " target=_blank><img src=" . $dir . "tb/mini_" . $file . " width=150 height=100 border=0></a>";
$nombreimage ++;
$intervalle ++;
if ($intervalle == $lmax) {
$nbligne ++;
echo "<br>";
$intervalle = 0;
}}}}
closedir($dh);
}}
echo "<br>Nombre d'images affichées : " . $nombreimage;
echo "<br> nombre d'images total : " . count(glob($dir . 'tb/*'))
?>
</body>
</html>
Voila, cette page génére le répertoire TB pour les miniatures, ainsi que les miniatures si elles n'existent pas. Ensuite elle les affiches.
J'ai limité cette affichage à raison de 5 images par lignes et pour un total de 4 colonnes.
BIen sur, il serait plus propre de faire des boucles whiles pour mes renvois de ligne. mais le plus important c'est que pour le moment tout fonctionne correctement.
Maintenant vous voyez ce qui me reste à faire. J'ai besoin d'aide now...
Désolé pour le post mega long...