Faire un album photo automatique, avec des catégories, sans mysql (+ redimentionnement..)

Contenu du snippet

Nous allons donc créer un album photo automatique, sans l'utilisation de mysql. En plus, il y aura des catégories (mais pas de sous-catégories). Comment ? nous allons en fait faire la liste de tous les dossiers contenu dans un dossier => cela formera les catégories.
Nous ouvrons le dossier (la catégorie) dans le même fichier, sauf que cette fois, une variable dir est définie. Nous ouvrirons donc ce dossier pour faire la liste de toutes les images le contenant... Passons au code [:D]

Source / Exemple :


<?
$dossier = 'images/photos/'; // on défini le dossier contenant les catégories.
$width_ref = '200'; // largeur des images réduites (la hauteur sera calculée automatiquement)

if (isset($_GET['dir'])) // si la variable dir est définie (envoyée par l'url (voir plus bas) et récupérée par get)
{
	echo '<center><u>Catégorie</u> : <i><b>' . stripslashes($_GET['dir']) . '</b></i><br><br>'; // on affiche le nom de la catégorie (c'est à dire le dossier)
	$rep=opendir($dossier . stripslashes($_GET['dir']). '/'); // on ouvre ce dossier
	while ($file = readdir($rep)) // tant qu'il y a des fichiers dans ce dossier...
	{
		if($file != '..' && $file !='.' && $file !='') // si le fichier n'est pas égal à '..' (fichier existant) et à '.' et n'est pas vide (je sais pas pourquoi j'ai mis ça lol...)
		{
			$photo = $dossier . stripslashes($_GET['dir']) . '/' . $file; // photo = 'votre_dossier/categorie/fichier_trouvé.ext
			
			list($width, $height, $type, $attr) = getimagesize($photo); // on récupère des infos de l'image
			
			if (!($type)) // si son type (jpg,bmp..) n'est pas défini, il y a un prob (c'est ptêtre pas une image)..
			{
				echo ''; // alors on affiche rien (un blanc)
			}
			else
			{			
				echo '<a href="' . $photo . '" target="_blanck"><img src="' . $photo . '" width="' . $width_ref . '" height="' . ( $height / ( $width / $width_ref ) ) . '"></a>&nbsp;&nbsp;'; // on affiche la photo redimentionnée, + un lien vers la taille réelle
			}
		}
	}
	closedir($rep); // on ferme le dossier
	clearstatcache(); // euh je sais plus torp à quoi cela sert, mais ca doit servir !
	echo '</center>';
}
else //pour les paumés : c'est le esle du "si on a une catégorie..($_GET['dir]")
{
	echo '<center><u>Les catégories</u> :</center><br><br>'; // on va faire une liste des catégories existantes
	$rep=opendir($dossier);
	while ($file = readdir($rep))
	{
		if($file != '..' && $file !='.' && $file !='')
		{
			if (is_dir($dossier . $file))
			{
				echo '- <a href="index.php?p=photos&dir=' . $file . '">' . $file . '</a><br>'; // on fait un lien vers le même fichier, en mettant dans l'url la fameuse variable dir...
			}
		}
	}
	closedir($rep);
	clearstatcache();
}
?>

////////////////////////////////////////////
CODE SANS LES COMMENTAIRES :
////////////////////////////////////////////

<?
$dossier = 'images/photos/';

if (isset($_GET['dir']))
{
	echo '<center><u>Catégorie</u> : <i><b>' . stripslashes($_GET['dir']) . '</b></i><br><br>';
	$rep=opendir($dossier . stripslashes($_GET['dir']). '/');
	while ($file = readdir($rep))
	{
		if($file != '..' && $file !='.' && $file !='')
		{
			$photo = $dossier . stripslashes($_GET['dir']) . '/' . $file;
			$width_ref = '200';
			
			list($width, $height, $type, $attr) = getimagesize($photo);
			
			if (!($type))
			{
				echo '';
			}
			else
			{			
				echo '<a href="' . $photo . '" target="_blanck"><img src="' . $photo . '" width="' . $width_ref . '" height="' . ( $height / ( $width / $width_ref ) ) . '"></a>&nbsp;&nbsp;';
			}
		}
	}
	closedir($rep);
	clearstatcache();
	echo '</center>';
}
else
{
	echo '<center><u>Les catégories</u> :</center><br><br>';
	$rep=opendir($dossier);
	while ($file = readdir($rep))
	{
		if($file != '..' && $file !='.' && $file !='')
		{
			if (is_dir($dossier . $file))
			{
				echo '- <a href="index.php?p=photos&dir=' . $file . '"><font color="purple">' . $file . '</font></a><br>';
			}
		}
	}
	closedir($rep);
	clearstatcache();
}
?>

Conclusion :


Voilà :) Fini !
Normallement, les dossiers sont cencés contenir que des images (et celui contenant les catégories, que des dossiers...) car je vous voit venir avec votre fichier html dans une des catégories... (je n'ai jamais testé si ca marchait ou pas).

Pour ceux qui n'ont pas tout compris (c'est normal..) :
-Pour ajouter une catégorie : créez un dossier dans le dossier racine (celui que vous définissez au début => $dossier = '....';)
-Pour supprimer une catégorie existante, eh bien je vous laisse deviner [:D]
-Pour ajouter une photo, copiez la dans une des catégories que vous avez créées.
-Pour supprimer une photo, là aussi je vous laisse deviner..

Vous pouvez mettre n'importe quelle image (quelle que soit sa taille, son poids..) tant que c'en est une.. elle sera redimensionnée dans l'album (de façon proportionnelle par rapport à sa taille initiale). Le problème peut-être est que les images une fois réduites ont toujours le même poids...
Cliquez dessus et ca ouvrira une nouvelle fenêtre avec la photo dans sa taille normale..
Bonne chance ;)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.