SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: zaida20 en Jueves 7 de Junio de 2007, 11:51

Título: Insertar Imágenes A Traves De Archivos Binarios
Publicado por: zaida20 en Jueves 7 de Junio de 2007, 11:51
Hola:
Soy nueva en el foro, y tengo un problema. Quiero insertar imágenes en mysql a través de php, transformando las imágenes a archivos binarios, he conseguido hacerlo mostrándome solo una imagen. Éste es el código:

Código: Text
  1. <?php
  2. //conexion
  3. $dp_di="localhost";
  4. $usuario_db="root";
  5. $clave_db=NULL;
  6. $conexion=mysql_connect($dp_di,$usuario_db,$clave_db);
  7. if($conexion==NULL)
  8. {
  9.   printf("Error");
  10. }
  11. //conectamos con la bd utopia
  12. $db='utopia';
  13. mysql_select_db($db,$conexion);
  14. ob_start();
  15. // Abro el archivo de imagen para cargar sus contenidos
  16. $archivo = 'sin_ruta/2.jpg';
  17. $fp = fopen ($archivo, 'r');
  18. if ($fp)
  19. {
  20.   $datos = fread($fp, filesize ($archivo)); // cargo la imagen
  21.   fclose($fp);
  22.   // averiguo su tipo mime
  23.   $tipo_mime = 'image/jpeg';
  24.   $isize = getimagesize($archivo);
  25.   if ($isize)
  26.   $tipo_mime = $isize['archivo_binario'];
  27.   // La guardamos en la BD
  28.   $datos = base64_encode ($datos);
  29.   $sql = "INSERT INTO archivos (archivo_binario) VALUES ('$datos')";
  30.   $res = mysql_query($sql);
  31.   if (!$res)
  32.     echo "Error al ejecutar la consulta ($sql)\n";
  33.  
  34.   //hacemos el select.
  35.  
  36.     $sql = "SELECT archivo_binario FROM archivos where id=28";
  37.      $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  38.   if($consulta!=NULL)
  39.   {
  40.     if(mysql_num_rows($consulta)!=0)
  41.     {
  42.       $datos=mysql_fetch_array($consulta);
  43.       echo base64_decode($datos['archivo_binario']);
  44.     }
  45.   }
  46. }
  47.  
  48. ?>
  49.  
  50.  

El problema viene cuando quiero que se muestren todas las imágenes que contiene la tabla de mysql, éste es el código:

Código: Text
  1. <?php
  2. //conexion
  3. $dp_di="localhost";
  4. $usuario_db="root";
  5. $clave_db=NULL;
  6. $conexion=mysql_connect($dp_di,$usuario_db,$clave_db);
  7. if($conexion==NULL)
  8. {
  9.   printf("Error");
  10. }
  11. //conectamos con la bd utopia
  12. $db='utopia';
  13. mysql_select_db($db,$conexion);
  14. ob_start();
  15. // Abro el archivo de imagen para cargar sus contenidos
  16. $archivo = 'sin_ruta/2.jpg';
  17. $fp = fopen ($archivo, 'r');
  18. if ($fp)
  19. {
  20.   $datos = fread($fp, filesize ($archivo)); // cargo la imagen
  21.   fclose($fp);
  22.   // averiguo su tipo mime
  23.   $tipo_mime = 'image/jpeg';
  24.   $isize = getimagesize($archivo);
  25.   if ($isize)
  26.   $tipo_mime = $isize['archivo_binario'];
  27.   // La guardamos en la BD
  28.   $datos = base64_encode ($datos);
  29.   $sql = "INSERT INTO archivos (archivo_binario) VALUES ('$datos')";
  30.   $res = mysql_query($sql);
  31.   if (!$res)
  32.     echo "Error al ejecutar la consulta ($sql)\n";
  33.   //hacemos el select.
  34.   $sql = "SELECT archivo_binario FROM archivos";
  35.   $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  36.   $i=0;
  37.   if($consulta!=NULL)
  38.   {
  39.     if(mysql_num_rows($consulta)!=0)
  40.     {
  41.       while ($datos=mysql_fetch_array($consulta))
  42.       {
  43.         $archivo_bin[$i]=$datos['archivos_binarios'];
  44.         $pepe[$i]=base64_decode($archivo_bin[$i]);
  45.         //header ('Content-Type: image/jpeg');
  46.         echo base64_decode($datos['archivo_binario']);
  47.         echo $pepe[$i];
  48.         echo $i;
  49.         $i++;
  50.       }
  51.     }
  52.   }
  53. }
  54. ?>
  55.  
  56.  
  57.  

No me funciona, sólo me muestra una imagen. ¿Alquien puede ayudarme?
Muchas gracias
Saludos: :hola:
Título: Re: Insertar Imágenes A Traves De Archivos Binarios
Publicado por: F_Tanori en Jueves 7 de Junio de 2007, 13:20
Hola

no se si tu metodo de Inserción este funcionadote bien

pero en este caso para leer  todas las imagenes seria conveniente que cree un archivo que lea la imagen con la cabecera apropiada por ejemplo

con este archivo desplegarias en una tabla (HTML) los las imagenes contenida en la tabla de MySQL

galeria.php
Código: Text
  1. <?php
  2.  
  3. //conexion
  4. $dp_di="localhost";
  5. $usuario_db="root";
  6. $clave_db="";
  7. $conexion=mysql_connect($dp_di,$usuario_db,$clave_db);
  8. $id=$_GET['id'];
  9.  
  10. if($conexion)
  11. {
  12.  
  13. $db='is';
  14. mysql_select_db($db,$conexion);
  15. ob_start();
  16.  
  17.  $sql = "SELECT id FROM empleados";
  18.  $consulta = mysql_query($sql);
  19.  
  20.   if($consulta)
  21.   {
  22.      echo "<table border='1'>";
  23.       while ($datos=mysql_fetch_array($consulta))
  24.       {
  25.         echo "<td><td><img src='imagen.php?id=".$datos['id']."' width='190px' height='90px'></td></tr>\n";
  26.       }
  27.       echo "</table>";
  28.   }
  29. }  
  30.  
  31. ?>
  32.  


imagen.php
Este archivo procesa el campo blob

Código: Text
  1.  
  2. <?php
  3. header ('Content-Type: image/jpeg');
  4.  
  5. //conexion
  6. $dp_di="localhost";
  7. $usuario_db="root";
  8. $clave_db="";
  9. $conexion=mysql_connect($dp_di,$usuario_db,$clave_db);
  10. $id=$_GET['id'];
  11.  
  12. if($conexion)
  13. {
  14.  
  15. $db='is';
  16. mysql_select_db($db,$conexion);
  17. ob_start();
  18.  
  19.  $sql = "SELECT foto FROM empleados  WHERE id='$id'";
  20.  $consulta = mysql_query($sql);
  21.  
  22.   if($consulta)
  23.   {
  24.       $datos=mysql_fetch_array($consulta);
  25.       echo $datos['foto'];
  26.   }
  27. }
  28. ?>
  29.  

aqui hay una manera de insertar

http://www.buayacorp.com/archivos/guardar-...-blob-de-mysql/ (http://www.buayacorp.com/archivos/guardar-una-imagen-y-su-miniatura-a-un-campo-blob-de-mysql/)

Para Leer

http://www.buayacorp.com/archivos/mostrar-...sql-usando-php/ (http://www.buayacorp.com/archivos/mostrar-una-imagen-desde-blob-mysql-usando-php/)

aunque no se si tu metodo funciones yo hice pruebas con unas tablas que ya contienen imagenes :P y es una idea  :ph34r:  supongo que hay mas ......

Espero te sea de ayuda
Saludos
Título: Re: Insertar Imágenes A Traves De Archivos Binarios
Publicado por: zaida20 en Jueves 7 de Junio de 2007, 13:30
Muchas gracias F_Tanori

Lo he conseguido con un código que he encontrado en éste foro, de todas formas probaré con el tuyo haber que tal.

Muchisimas gracias!!!!
Saludos:  :hola: