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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 116 fois - Téléchargée 31 fois

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

Ajouter un commentaire

Commentaires

Messages postés
264
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
7 juillet 2009

alors la je te dis un grand bravo, car ok ce n'est pas la source qui fait ca qui a le plus beau rendu graphique MAIS c'est la seulle qui ne me cryble pas ma page d'erreur et qui marche (meme si je suis pas encor totalement a ce ke je souaite faire )

je te mé 10 !

si qqun pouvé dailleur me filer un coup de main,
en fait mon site est organisé comme ca:

img
wall > ton code
index.php
wallpapers.php > ac un include sur ton code et sur css.php et page.start.php
css.php
page.start.php

ce que je souaite faire c'est afichier les images dans img ( qui comprend un dossier wallpapers)

pour le moment j'obtien ca: http://kankai.dyndns.org:1200/wallpapers.php

:$
Messages postés
5
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
24 novembre 2004

Merci bthivent !!

Il est bien ce petit code, très simple et tout, comme j'aime !!
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
euh... pour gd faut pas mettre qu'une seule fonction en fait...
vas voir mon script (concurent a celui la...)
t'as une page qui fait ça...
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
Ok merci !
coucou747 c'est ce que je fais (enfin je pense) ! ce que je demande c'est le dossier racine. Une fois le dossier racine définit, il suffit d'ajouter un dossier dedans pour qu'il apparraisse dans la liste des catégories..
Questions ajouts de commentaires, ce serait bien, mais un peu cho. Comme je n'utilise pas de bdd, faudrait pas que j'my mette pour les commentaires, alors il faudrait que je les enregistre dans un fichier texte par exemple..puis pour attribuer le commentaire à une image, il faut mettre le nom de la photo dans le fichier texte..
windu c'est vrai que c'est bête de fiare ce que je fais, tu pourrai me filer le nom de la fonction qui permait ca stp, si tu l'a sous la main..

merci pour vos commentaires, @+ !
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
GD ou autres...
Afficher les 10 commentaires

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.