El codigo que he usado para esto, es el siguiente
Por una parte el html para subir los datos junto a la imagen a la base de datos
Código:
Y por otro lado el php para subir los datos junto a la imagen a la base de datos<!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> <title>Imagen a Blob</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form name="frmimage" id="frmimage" method="post" enctype="multipart/form-data" action="junto.php"> <p>Datos</p> <p>Seleccione marca: <select name ="marca"> <option value="seat">Seat</option> <option value="audi">Audi</option> </select> </p> <p>Indica color: <select name ="color"> <option value="rojo">rojo</option> <option value="verde">verde</option> </select> </p> <p> Nombre: <input type="text" id="nombre" name="nombre" /> <br /> Imagen: <input type="file" id="foto" name="foto" /> <br /> <input type="submit" name="enviar" id="enviar" value="Guardar" /> </p> </form> </body>
Código:
Bueno, esto añade a mi base de datos 6 campos entre ellos, una imagen en blob, dentro de la base de datos.<?php $marca = $_POST['marca']; $color = $_POST['color']; // Verificamos que el formulario no ha sido enviado aun $postback = (isset($_POST["enviar"])) ? true : false; if($postback){ // Nivel de errores error_reporting(E_ALL); // Constantes # Altura de el thumbnail en píxeles define("ALTURA", 100); # Nombre del archivo temporal del thumbnail define("NAMETHUMB", "/tmp/thumbtemp"); //Esto en servidores Linux, en Windows podría ser: // define("NAMETHUMB", "c:/windows/temp/thumbtemp"); y te olvidas de los problemas de permisos # Servidor de base de datos define("DBHOST", "localhost"); # nombre de la base de datos define("DBNAME", "nombre"); # Usuario de base de datos define("DBUSER", "user"); # Password de base de datos define("DBPASSWORD", "password"); // Mime types permitidos $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png"); // Variables de la foto $name = $_FILES["foto"]["name"]; $type = $_FILES["foto"]["type"]; $tmp_name = $_FILES["foto"]["tmp_name"]; $size = $_FILES["foto"]["size"]; // Verificamos si el archivo es una imagen válida if(!in_array($type, $mimetypes)) die("El archivo que subiste no es una imagen válida"); // Creando el thumbnail switch($type) { case $mimetypes[0]: case $mimetypes[1]: $img = imagecreatefromjpeg($tmp_name); break; case $mimetypes[2]: $img = imagecreatefromgif($tmp_name); break; case $mimetypes[3]: $img = imagecreatefrompng($tmp_name); break; } $datos = getimagesize($tmp_name); $ratio = ($datos[1]/ALTURA); $ancho = round($datos[0]/$ratio); $thumb = imagecreatetruecolor($ancho, ALTURA); imagecopyresized($thumb, $img, 0, 0, 0, 0, $ancho, ALTURA, $datos[0], $datos[1]); switch($type) { case $mimetypes[0]: case $mimetypes[1]: imagejpeg($thumb, NAMETHUMB); break; case $mimetypes[2]: imagegif($thumb, NAMETHUMB); break; case $mimetypes[3]: imagepng($thumb, NAMETHUMB); break; } // Extrae los contenidos de las fotos # contenido de la foto original $fp = fopen($tmp_name, "rb"); $tfoto = fread($fp, filesize($tmp_name)); $tfoto = addslashes($tfoto); fclose($fp); # contenido del thumbnail $fp = fopen(NAMETHUMB, "rb"); $tthumb = fread($fp, filesize(NAMETHUMB)); $tthumb = addslashes($tthumb); fclose($fp); // Borra archivos temporales si es que existen @unlink($tmp_name); @unlink(NAMETHUMB); // Guardamos todo en la base de datos #nombre de la foto $nombre = $_POST["nombre"]; $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));; mysql_select_db(DBNAME, $link) or die(mysql_error($link)); $sql = "INSERT INTO coches(marca, color, nombre, foto, thumb, mime ) VALUES ('$marca', '$color', '$nombre', '$tfoto', '$tthumb', '$type' )"; mysql_query($sql, $link) or die(mysql_error($link)); echo "Datos Guardados"; exit(); } ?>
Hasta aquí todo bien (no hacer caso de los datos de las tablas ya que estoy de pruebas).
Y ahora viene el problema
Antes tenia el siguiente código, para buscar los campos de texto.
El html
Código:
y el php<head> <title>Base de datos consulta</title> <head> <body bgcolor = "#303030"> <body text ="#E5E5E5"> <font face ="tahoma"> <font size = "2"> <body link = "#E5E5E5" vlink="E0E0E0"> <p aling ="center"> <form name="form" action= "buscacoches.php" method="post"> <strong> <h2> FORMULARIO PARA BUSQUEDA </h2> </strong> <hr size = "8" color ="ffffff" width ="100%" aling ="left"> <h5>Seleccione la marca de su vehiculo: <select name="marca"> <option value="seat">Seat</option> <option value="audi">Audi</option> </select> </h5> <h5>Seleccione color: <select name="color"> <option value="rojo">Rojo</option> <option value="amarillo">Amarillo </option> <option value="verde">verde</option> <option value="azul">Azul </option> <option value="negro">Negro </option> <option value="blanco">Blanco </option> <option value="gris">Gris </option> </select> </h5> <input name="Enviar" type="submit" value="Enviar"> </h5> </form>
Código:
Pero al código primero que le he añadido el trozo de código para guardar las imágenes en blob, no tengo ni idea de donde poner el trozo de código para que usando la búsqueda me muestre la imagen..<head> <title>Base de datos consulta</title> <head> <body bgcolor = "#303030"> <body text ="#E5E5E5"> <font face ="tahoma"> <font size = "2"> <body link = "#E5E5E5" vlink="E0E0E0"> <p aling ="center"> <h2> RESULTADO DE LA BUSQUEDA </h2> <? $marca = $_POST['marca']; $color = $_POST['color']; $host="localhost"; $user="usuario"; $password="password"; $db="datos"; $link = mysql_connect($host,$user,$password); mysql_select_db($db,$link); $consulta = mysql_query("SELECT * FROM coches WHERE marca LIKE '$marca' or color LIKE '$color' ",$link); while ($row=mysql_fetch_array($consulta)) { $id=$row["id"]; $marca=$row["marca"]; $color=$row["color"]; echo ("<table width='100%' border='0' cellspacing='0' cellpadding='0'>\n"); echo ("<td>\n"); echo ("<td width='12%'><a href=coches.php?id=$id> Modificar</a></td>\n"); echo("<td width='12%'><a href=borracoche.php?id=$id> Borrar</a></td>\n"); echo ("<td width=26%'><a href=coches.php?id=$id>$marca</a></td>\n"); echo ("<td width=26%'>$color</a></td>\n"); echo ("<td width=26%'>$id</a></td>\n"); echo("</tr>\n"); echo("</table>\n"); echo "<hr size = 2 color =ffffff width = 100% aling = left>"; } ?> <a href="http://web">Volver
Aquí aparte pongo el código para mostrar las imágenes en blob, (imágenes dentro de la base de datos)
El php
Código:
y aquí el html que te muestra la imagen/ Nivel de errores error_reporting(E_ALL); // Constantes # Servidor de base de datos define("DBHOST", "localhost"); # nombre de la base de datos define("DBNAME", "basedatos" # Usuario de base de datos define("DBUSER", "usuario); # Password de base de datos define("DBPASSWORD", "password"); // Parámetros para recuperar la imagen # Recuperamos el parámetro GET con el id único de la foto que queremos mostrar $idfoto = (isset($_GET["idfoto"])) ? $_GET["idfoto"] : exit(); # Recuperamos el parámetro GET para elegir entre la miniatura o la foto real $tam = (isset($_GET["tam"])) ? $_GET["tam"] : 1; // Escojemos la foto real o la miniatura según la variable $tam switch($tam) { case "1": $campo = "foto";break;; case "2": $campo = "thumb";break;; default: $campo = "foto";break;; } // Recuperamos la foto de la tabla $sql = "SELECT $campo, mime FROM tabla WHERE idfoto = $idfoto"; # Conexión a la base de datos $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));; mysql_select_db(DBNAME, $link) or die(mysql_error($link)); $conn = mysql_query($sql, $link) or die(mysql_error($link)); $datos = mysql_fetch_array($conn); // La imagen $imagen = $datos[0]; // El mime type de la imagen $mime = $datos[1]; // Gracias a esta cabecera, podemos ver la imagen // que acabamos de recuperar del campo blob header("Content-Type: $mime"); // Muestra la imagen echo $imagen; ?>
Código:
<img src="verblob.php?idfoto=2&tam=1" alt="Imagen desde Blob" />
Con este ultimo ejemplo es mostrar la imagen de la base de datos, yo lo que busco es hacer la base de datos donde cuando hagas la búsqueda te salgan los datos junto con la imagen.
A mi me funciona, por un lado busca los datos, y por otro la imagen pero la gente no busca la imagen, busca los datos y luego al lado de ese dato sale la imagen...
Joder movida...
Y con mi poca experiencia en php vamos bien servidos
Un Saludo!
![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)