facilitar las gelerias de imagenes

HTML y todos sus derivados relacionados con la creación de sitios web

Moderador: Moderadores

Avatar de Usuario
GooFerca

facilitar las gelerias de imagenes

Mensaje por GooFerca » Mar Oct 04, 2011 5:30 pm

hola a todos:

quisiera compartir con todos vosotros un sistema de tener y mantener una galeria de imagenes, slide o cualquier conjuntos de imagenes de una web, todo con el uso de php+mysql, no es para nada la forma mas habitual y por esa misma razon aqui lo expongo, es una alternativa facil en todos los sentidos.

En primer lugar vamos a crear la base de datos que contendran las imagenes, si si he dicho contener imagenes, he ahi donde radica toda la diferencia y sencillez del tema.
Bien sea desde phpmyadmin o desde un script php hacia el mysql creamos una tabla con todos los campos que creamos necesarios y ademas crearemos un campo que sea:
TIPO: BLOB O MEDIUM BLOB
Este tipo de campos son para contener tipos de datos binarios, el mas adecuado seria el blob, el mediumblob es capaz de contener archivos mas grandes pero tampoco vamos a almacenar imagenes de una mega de peso, por lo tanto con blob deberia ser suficiente.

Ahora toca el turno a php, una vez tenermos nuestra tabla que contendra las imagenes ya creada debemos alamcenar las fotos, desde phpmyadmin se puede hacer pulsando sobre la pestaña "Insertar", veremos que en la posicion donde corresponde al campo blob tendremos el tipico boton de formulario examinar para indicar el archivo a insertar en la tabla, se hace de la forma que siempre hacemos cuando subimos un archivo al server atraves de una fomulario.
Para poder mostrar esas imagnes en nuestra web deberemos tener un pequeñisimo script php que se encargara de sacar las imagenes de la base de datos y con un header de php le dara el formato correcto, aqui teneis el script ...

<?php
include "config.php";
$sql = "SELECT $_GET[img] FROM $_GET[tbl] WHERE id = '$_GET[id]'";
$link = mysql_connect($host, $user, $pass) or die(mysql_error($link));
mysql_select_db($db, $link) or die(mysql_error($link));
$conn = mysql_query($sql, $link) or die(mysql_error($link));
$datos = mysql_fetch_array($conn);
$imagen = $datos[0];
header("Content-Type: image/jpg");
echo $imagen;
?>

Como se ve, el script incluye un archivo config por aquello de no tener nuestros datos de conexion en el mismo php que solicita los datos, en la segunda linea seleccionamos la imagen por su id unico de nuestra base de datos, en las lineas sucesivias se hace la conexion y se ejecuta la consulta sql de la cual tenemos la variable imagen que contiene el valor de la posicion 0 del array obtenido de la consulta, osea el binario de la imagen.
La linea header lo que hace es enviar infomacion a el navegar que la variable imagen es un tipo de archivo IMAGEN con formato JPG, por ultimo le entegramos la variable para que el navegador nos la muestre. Bien para mostrar realmente la imagen utilizaremos una llamada a este archivo php dentro de la etikqueta html <img src> quedando mas o menos asi <img src="imagen.php?tbl=galeria&img=imagen&id=1" width="100" height="100"> para el ejemplo de url explico que la tabla donde esta la imagen se llama "galeria", la columna se llama "imagen" y que su id es "1", asi descagaremos la imagen 1 de nuestra DB.

A fin de poder mantener actualizado el slide o la galeria con imagenes nuevas, o cambiarlas las que ahi por otras, nos hara falta un formulario tipo de subida de archivos al servidor en html y este script que se encargara de almacenar las imagenes dentro de la DB.

<?php
$imgform=$_FILES['imagen']['tmp_name'] ;
$imagen = addslashes(fread(fopen($imgform, "rb"), filesize($imgform)));
//esta sentencia seria para actualizar una imagen que ya tenemos y cambiarlo por otra
mysql_query ("UPDATE $_POST[tbl] SET imagen='$imagen' WHERE id='$_POST[id]'")or die (mysql_error());
//esta para meter una imagen mas en la DB
mysql_query ("INSERT INTO $_POST[tbl] (imagen) VALUES (''$imagen')") or die ("MySQL ERROR: ".mysql_error());
?>

Los archivos php los podeis, esta claro, llamarlos como querais, y tener encuenta esos nombres para hacer las llamadas correctamente a la hora de mostrar, editar o añadir las imagenes. Si teneis alguna duda y os interesa implementar esto comentar y os hechare una mano gustasamente

Avatar de Usuario
GooFerca

Re: facilitar las gelerias de imagenes

Mensaje por GooFerca » Mar Oct 04, 2011 5:38 pm

Rectifico un error la la ultima sentencia sql
esta es la original
mysql_query ("INSERT INTO $_POST[tbl] (imagen) VALUES (''$imagen')") or die ("MySQL ERROR: ".mysql_error());
esta es la correcta
mysql_query ("INSERT INTO $_POST[tbl] (imagen) VALUES (''$imagen") or die ("MySQL ERROR: ".mysql_error());

Un saludo a todos

Responder