November 25th, 2009
Galeria de Fotos PHP sin BBDD
Muy buenas tigres de la programacion, bueno aqui nuevamente para mostrarles un recurso que les puede interesar, resulta que hace poco teniamos que resolver un problemilla, que era mostrar distintas imagenes a especie de catalogo de productos, hasta ahi todo sencillo porque con un “img src” se hubiera terminado el tema, pero el cliente queria cambiarlas el y no tenia ni p…. idea de HTML ni de PHP queria el agregar o quitar fotos cuando quisiera, bueno eso tampoco significaria mucho pues podiamos desarrollar un pequeño gestor de contenidos especificamente para esta seccion, osea subir, cambiar y eliminar fotitos.. nada del otro mundo, pero, aqui viene el tema y lo cabrones que quieren ser los clientes cuando quieren
que no queria aumentar su presupuesto!!!! osea queria las joyas del nilo a precio de “todo 100″, bueno como era un cliente recomendado y teniamos que hacerlo para no quedar mal, negociamos un poco y despues de algunos arañazos y mordidas, resolvimos el tema para “bien” de los dos, lo pongo entre comillas porque fue un chollo para el cliente. Pero al menos nos sirvio de ejercicio para poner algo en este venerable blog de vuestro servidor
.
Bueno, ahora explico como solucionamos este asunto.
1.-Organizamos la estructura de carpetas donde estaran las imagenes que se van a mostrar.
2.- Creamos un fichero que abrira y recorrera la carpeta asi como mostrara las imagenes. A este fichero le llamaremos catalogo_view.php y tendra el siguiente codigo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $dir="imagenes/galeria/"; $directorio = opendir($dir); $ancho=80; $alto=80; while ($archivo = readdir($directorio)){ if ($archivo != "." && $archivo != ".."){ $ext=explode(".",$archivo); $ext[1] = strtolower($ext[1]); if($ext[1] == 'jpg' || $ext[1] == 'png' || $ext[1] == 'gif' || $ext[1] == 'jpeg'){ $archivos[$archivo] = '<a href="'.$dir.$archivo.'"><img src="'.$dir.$archivo.'" width="'.$ancho.'" '.'height="'.$alto.'" /></a>'."\n"; } } } closedir($directorio); ksort ($archivos); ?> |
Ahora procedo a explicar brevemente las partes mas importantes.
En la primera linea definimos una variable $dir con la ruta exacta donde estan las imagenes a utilizar. La siguiente linea abre el directorio y guarda la informacion en la variable $directorio.
1 2 | $dir="imagenes/galeria/"; $directorio = opendir($dir); |
Ahora definimos las variables que guardan las dimensiones de las imagenes en formato thumbnail. Tener cuidado con guardar la proporcion de imagen.
1 2 | $ancho=80; $alto=80; |
Lo siguiente es recorrer la carpeta donde tenemos las imagenes y evita que se recorran indices que podrian vulnerar la seguridad, recuerden, a este nivel trabajamos a modo UNIX.
1 2 | while ($archivo = readdir($directorio)){ if ($archivo != "." && $archivo != ".."){ |
Ahora buscamos el “.” para empezar a filtrar los ficheros por su extension, recuerden queremos obtener las imagenes con formato ‘jpg’, ‘png’, ‘gif’ o ‘jpeg’. Pero no se limiten que ahi pueden poner la extension que quieran.
1 2 3 | $ext=explode(".",$archivo); $ext[1] = strtolower($ext[1]); if($ext[1] == 'jpg' || $ext[1] == 'png' || $ext[1] == 'gif' || $ext[1] == 'jpeg') |
A continuacion guardamos cada imagen de la carpeta en una posicion determinada del array $archivo[], le he puesto un enlace porque en realidad tenia un efecto lightbox para darle un toque mas guapo.
1 | $archivos[$archivo] = '<a href="'.$dir.$archivo.'" rel="lightbox[roadtrip]"><img src="'.$dir.$archivo.'" width="'.$ancho.'" '.'height="'.$alto.'" /></a>'."\n"; |
Por ultimo cerramos el directorio, no olvidar, y ordenamos la matriz por clave.
Pero ahi no queda la cosa jejeje nonono .. ahora tenemos que crear otro fichero que cargara nuestra genial programacion, y recorrera el array $archivo para mostrarlo en la pagina.
1 2 3 4 5 6 | <?php include_once('catalogo_view.php'); foreach($archivos as $enlaces_uo){ echo $enlaces_uo; } ?> |
Y listo, asi de facil, ahora a probarlo y si teneis alguna duda, ya sabes donde encontrarme en el bar de Pepe el Toro
Saludos!