Foros del Web » Programando para Internet » PHP »

Subir imagenes a bd (mas de 1)

Estas en el tema de Subir imagenes a bd (mas de 1) en el foro de PHP en Foros del Web. Hola amigos, Acabo de leer el aporte de Cluster "Subir_archivos_a_una_BD(en_binario)", el cual es para un solo caso en especial, asi que me gustaria por favor ...
  #1 (permalink)  
Antiguo 05/03/2009, 15:57
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta Subir imagenes a bd (mas de 1)

Hola amigos,
Acabo de leer el aporte de Cluster "Subir_archivos_a_una_BD(en_binario)", el cual es para un solo caso en especial, asi que me gustaria por favor alguien pueda ayudarme como implementarla para SUBIR IMAGENES A BD, PERO MAS DE 1.

Con esta sugerencia (permalink #208):
http://www.forosdelweb.com/f18/tutor...75/index7.html

Esto es lo que avanze:
Código php:
Ver original
  1. <!-- <?php
  2. $postback = (isset($_POST["enviar"])) ? true : false;
  3. if($postback)
  4. {
  5.   error_reporting(E_ALL);
  6.   include('conec.php');
  7.   conectarse();
  8.   $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  9.   for($i=0;$i<=2;$i++)
  10.   {
  11.     //archivo temporal (ruta y nombre)
  12.     $tmp_name = $_FILES["foto"]["tmp_name"][$i];
  13.     //leer el archivo temporal
  14.     $fp = fopen($tmp_name,"rb");
  15.     //filesize: obtiene el tamaño del archivo
  16.     //fread: lectura de archivos segura con material binario
  17.     $tfoto = fread($fp, filesize($tmp_name));
  18.     //escapa una cadena insertando barras "\"
  19.     $tfoto = addslashes($tfoto);
  20.     fclose($fp);
  21.     @unlink($tmp_name);
  22.     //obtener del array FILES (superglobal) los datos del binario...nombre, tipo, tamaño
  23.     $name = $_FILES["foto"]["name"][$i];
  24.     $type = $_FILES["foto"]["type"][$i];
  25.     if(!in_array($type,$mimetypes))
  26.     die("El archivo que subiste no es una imagen válida");
  27.     $size = $_FILES["foto"]["size"][$i];
  28.     $sql = "INSERT INTO catalogo(foto,foto2,foto3) VALUES('$tfoto','$tfoto2','$tfoto3')";
  29.     mysql_query($sql);
  30.  
  31.   }
  32.   $nombre = $_POST["nombre"];
  33.   $precio = $_POST["precio"];
  34.   $sql = "INSERT INTO catalogo(producto,precio) VALUES('$nombre','$precio')";
  35.   mysql_query($sql);
  36.   echo "<h2>Foto guardada correctamente en la base de datos</h2>";
  37. }
  38. exit();
  39. ?> -->
Lo que no me queda claro es que modificacion realizarlo para que al obtener el $tfoto inserte al campo foto, al obtener el $tfoto2 inserte al campo foto2 y al obtener $tfoto3 inserte al campo foto3 (y como generar $tfoto, $tfoto2 y $tfoto3)

Ah y otra cosa en el formulario, como seria para el input FILE (debido a que necesito para 3 imagenes)
Código php:
Ver original
  1. <!-- <input type="file" size="51" id="foto" name="foto"> -->

Agradesco de antemano sus colaboraciones.
  #2 (permalink)  
Antiguo 05/03/2009, 16:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 587
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: Subir imagenes a bd (mas de 1)

tienes que poner los <input type="file"> y enlazarlo con el código de subida correspondiente.

yo lo haria asi.
  #3 (permalink)  
Antiguo 05/03/2009, 17:50
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Subir imagenes a bd (mas de 1)

Disculpen pero a esto se refiere flashtkd:
Código php:
Ver original
  1. <!-- <html>
  2. <head>
  3. <title>Formulario Blob</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. </head>
  6.  
  7. <body>
  8. <form name="frmimage" method="post" enctype="multipart/form-data" action="include/insertarBlob.php">
  9. <table>
  10. <tr>
  11.     <td>Imagen:</td>
  12.     <td><input type="file" size="51" name="foto"></td>      //ID=00010
  13. </tr>
  14. <tr>
  15.     <td>Imagen:</td>
  16.     <td><input type="file" size="51" name="foto2"></td>    //FOTO2 CON =ID
  17. </tr>
  18. <tr>
  19.     <td>Imagen:</td>
  20.     <td><input type="file" size="51" name="foto3"></td>   //FOTO3 CON =ID
  21. </tr>
  22. </table>
  23. <center>
  24. <table>
  25. <tr>
  26.     <td><input type="submit" name="enviar" value="Guardar"></td>
  27.     <td><input type="reset" name="reset" value="Limpiar"></td>
  28. </tr>
  29. </table>
  30. </form>
  31. </body>
  32. </html>
  33.  -->
???No entiendo esta parte, por favor si alguien puede darme una manito...gracias
  #4 (permalink)  
Antiguo 06/03/2009, 08:17
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Respuesta: Subir imagenes a bd (mas de 1)

Bien esta es mi ayuda

x lo visto necesitas insetartlas de a 3 verdad?

bueno 3 cosas debes cambiar

1.En tu formulario

3 veces esto:

<input type="file" size="51" name="foto[]">

2.En tu codigo

cambias

for($i=0;$i<=2;$i++)

por

for($i=0;$i< count($_FILES['foto']);$i++)


3.

Luego presta atencion


Código PHP:

  
if(!in_array($type,$mimetypes))
    die(
"El archivo que subiste no es una imagen válida");
    
$size $_FILES["foto"]["size"][$i];
    
$sql "INSERT INTO catalogo(foto,foto2,foto3) VALUES('$tfoto','$tfoto2','$tfoto3')";
    
mysql_query($sql);
 
  } 
por

Código PHP:
  i
f
(!in_array($type,$mimetypes))
    die(
"El archivo que subiste no es una imagen válida");

$tfotos [$i] = $tfoto;
 
 }
 
$sql "INSERT INTO catalogo(foto,foto2,foto3) VALUES('".$tfotos[0]."','".$tfotos[1]."','".$tfotos[2]."')";
 
mysql_query($sql); 
  #5 (permalink)  
Antiguo 06/03/2009, 16:04
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Subir imagenes a bd (mas de 1)

Hola a todos, este es el avanze segun lo sugerido por Nefertiter
formularioBlob.php
Código php:
Ver original
  1. <!-- <html>
  2. <head>
  3. <title>Imagen a Blob</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. </head>
  6. <body>
  7. <form name="frmimage" method="post" enctype="multipart/form-data" action="include/insertarBlob.php">
  8. <table>
  9. <tr>    <td align="right" width="19%">Foto 1:</td>
  10.     <td width="61%"><input type="file" size="51" name="foto[]"></td>
  11. </tr>
  12. <tr>    <td align="right" width="19%">Foto 2:</td>
  13.     <td width="61%"><input type="file" size="51" name="foto[]"></td>
  14. </tr>
  15. <tr>    <td align="right" width="19%">Foto 3:</td>
  16.     <td width="61%"><input type="file" size="51" name="foto[]"></td>
  17. </tr>
  18. </table>
  19. <center>
  20. <table border=0 cellpadding=15>
  21.     <td><input type="submit" name="enviar" value="Guardar"></td>
  22.     <td><input type="reset" name="reset" value="Limpiar"></td>
  23. </table>
  24. </form>
  25. </body>
  26. </html>
  27.  -->
insertarBlob.php
Código php:
Ver original
  1. <!-- <?php
  2. $postback = (isset($_POST["enviar"])) ? true : false;
  3. if($postback)
  4. {
  5.   error_reporting(E_ALL);
  6.   include('conec.php');
  7.   conectarse();
  8.   $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  9.   for($i=0;$i<=count($_FILES['foto']);$i++)
  10.   {
  11.     //obtener del array FILES (superglobal) los datos del binario...nombre, tipo, tamaño
  12.     $size = $_FILES["foto"]["size"][$i];           //linea 12
  13.     $name = $_FILES["foto"]["name"][$i];      //linea 13
  14.     $type = $_FILES["foto"]["type"][$i];         //linea 14
  15.     if(!in_array($type,$mimetypes))
  16.     die("El archivo que subiste no es una imagen válida");
  17.     //archivo temporal (ruta y nombre)
  18.     $tmp_name = $_FILES["foto"]["tmp_name"][$i];
  19.     //leer el archivo temporal
  20.     $fp = fopen($tmp_name,"rb");
  21.     //filesize: obtiene el tamaño del archivo
  22.     //fread: lectura de archivos segura con material binario
  23.     $tfoto = fread($fp, filesize($tmp_name));
  24.     //escapa una cadena insertando barras "\"
  25.     $tfoto[$i] = addslashes($tfoto);
  26.     fclose($fp);
  27.     @unlink($tmp_name);
  28.   }
  29.     $sql1 = "INSERT INTO catalogo(id,foto,foto1,foto2) VALUES('','".$tfoto[0]."','".$tfoto[1]."','".$tfoto[2]."')";          //ojo el campo id es autoincrement
  30.     mysql_query($sql1) or die( "Error: " . mysql_error());
  31.  
  32.   echo "<h2>Foto guardada correctamente en la base de datos</h2>";
  33. }
  34. exit();
  35. ?> -->
pero me sale estos msjes de error:
Notice: Undefined offset: 3 in /home/nando/public_html/include/insertarBlob.php on line 12
Notice: Undefined offset: 3 in /home/nando/public_html/include/insertarBlob.php on line 13
Notice: Undefined offset: 3 in /home/nando/public_html/include/insertarBlob.php on line 14
El archivo que subiste no es una imagen válida
  #6 (permalink)  
Antiguo 07/03/2009, 05:45
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Respuesta: Subir imagenes a bd (mas de 1)

habia otro error q no vi,

nunca es

$size = $_FILES["foto"]["size"][$i];

es

$size = $_FILES["foto"][$i]["size"];

tienes mal el indice.

creo seria solo eso el error.
  #7 (permalink)  
Antiguo 09/03/2009, 14:51
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Hize lo que me sugirieron, y esta es la parte que modifique:
Código php:
Ver original
  1. <!--     $size = $_FILES["foto"][$i]["size"];
  2.     $name = $_FILES["foto"][$i]["name"];
  3.     $type = $_FILES["foto"][$i]["type"]; -->
ahora me salen los sgtes mensajes de error:

Notice: Undefined offset: 0 in /home/nando/public_html/insertarBlob.php on line 12
Notice: Undefined offset: 0 in /home/nando/public_html/insertarBlob.php on line 13
Notice: Undefined offset: 0 in /home/nando/public_html/insertarBlob.php on line 14
El archivo que subiste no es una imagen válida

Por favor si alguien puede decirme en que esta fallando el codigo, gracias a todos por su tiempo.

Saludos,

Me gustaria saber que significa este error:
Undefined offset

Intento modificar el codigo pero sigue este bendito mensaje, que es lo que puedo hacer???

Saludos,

Hola amigos,
Buscando en la web...esto es lo que encontre como comentario:
"Este error se produce cuando hay una variable indefinida, o esta se inicializa con un valor nulo, cuando no debería ser así"
Pero que es lo que tengo que arreglar el codigo para que funcione...disculpen pero no soy experto en la materia...pero quisiera aprender

...Gracias

Última edición por GatorV; 10/03/2009 a las 09:10
  #8 (permalink)  
Antiguo 11/03/2009, 17:19
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Subir imagenes a bd (mas de 1)

Disculpen amigos, llevo varios dias sin dar con esto...he seguido segun lo sugerido por el link principal de Cluster: "Subir Archivos en bd(binario)" el cual indica que ante cualquier modificacion que se realizara, poner un nuevo tema y eso es lo que estoy realizando.

Por favor si me podrian ayudar que no la doy con ese mensaje, que no encuentro mucha literatura para descifrarla.

Espero me sepan comprender, gracias...
  #9 (permalink)  
Antiguo 12/03/2009, 00:08
 
Fecha de Ingreso: marzo-2009
Ubicación: Sancti Spíritus, CUBA
Mensajes: 150
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Subir imagenes a bd (mas de 1)

Oye debes de hacer el Formulario antes de codificarlo adema escuchame con atencion debes de ponerle
Código PHP:
<form action="nombredelarchivo.php" method="post" enctype="multipart/form-data"
esto es importante porque sin esto no sube nada el codigo que hice es el siguientes ademas se me estaba olvidando algo crea una carpeta en el servidor lamada "image" ahi es donde se guardaran todas las imagenes que tu busques....

Codigo para subir img:

Código PHP:
<?php
session_start
();
//fijence debajo dice action=subirimg.php  "subirimg.php" es el nombre del archivo comprenden
echo "<form action=subirimg.php method=post enctype='multipart/form-data'>"
."<input type=file name=data>"
."<input type=submit value=Enviar>"
."<form><br><br>";
//fijence bien aquí debajo imprimo el nombre de la imagen cargada entonces cada ves que yo carge una imagen
//ese nombre de la imagen se me va guardando como si fuera una lista de las imagenes que yo vaya entrando...
echo $_FILES['data']['name'];
if (
is_uploaded_file($_FILES['data']['tmp_name'])){
copy($_FILES['data']['tmp_name'],"./image/".$_FILES['data']['name']);
}
//si se fijan  dice "./image/" ese es elnombre de la carpeta donde se van a guardar las imagenes
?>
  #10 (permalink)  
Antiguo 12/03/2009, 08:01
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Agradesco mucho tu ayuda PHPcool, pero como te daras cuenta:
1. El formulario ya esta implementado (input file=3)
2. El tema es subir archivo a la bd pero en binario (mas de 1 archivo)...como base estoy tomando el aporte de Cluster.

Amigo otra vez muchas gracias, espero poder encontrar la solución a este tema y porque no la puedas tener como otra opcion.

Saludos,

Hola David, espero me puedas ayudar por favor con esto. Llevo semanas con esto, pero nada...

El tema esta en que basado del tutorial de Cluster:
Con esta sugerencia (permalink #208):
Tutorial ejemplo: Subir archivos a tu BD (guardando en la BD en binario)

Intento implementar en la subida archivos pero 3 imagenes en la BD en forma binaria, pero el error que me bota es:
Notice: Undefined offset: 0 in /home/nando/public_html/insertarBlob.php on line 12
Notice: Undefined offset: 0 in /home/nando/public_html/insertarBlob.php on line 13
Notice: Undefined offset: 0 in /home/nando/public_html/insertarBlob.php on line 14
El archivo que subiste no es una imagen válida

Agradesco de antemano tu colaboracion,

Hola amigos, creo estar tan cerca...
Esto me base del sgte enlace:
tresw.forosdelweb.com/wiki/PHP:_%C2%BFC%C3%B3mo_hago_para_subir_mas_de_1_arch ivo%2C_o_talvez_las_cantidad_que_yo_desee_sin_limi taciones%3F

Y realize algunas modificaciones, segun mis necesidades:
Código php:
Ver original
  1. <!-- <?php
  2. $postback = (isset($_POST["enviar"])) ? true : false;
  3. if($postback)
  4. {
  5.   error_reporting(E_ALL);
  6.   include('conec.php');
  7.   conectarse();
  8.   for($i=0;$i<=2;$i++)
  9.   {
  10.     //obtener del array FILES (superglobal) los datos del binario...nombre, tipo, tamaño
  11.     $tamanio = $_FILES["foto"]["size"][$i];
  12.     $nombre = $_FILES["foto"]["name"][$i];
  13.     $tipo = $_FILES["foto"]["type"][$i];
  14.     $mimetipos = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
  15.     if(!in_array($tipo,$mimetipos))
  16.         die("El archivo que subiste no es una imagen válida");
  17.     //archivo temporal (ruta y nombre)
  18.     $archivo = $_FILES["foto"]["tmp_name"][$i];
  19.     //leer el archivo temporal
  20.     $fp = fopen($archivo,"rb");
  21.     $contenido = fread($fp, $tamanio);
  22.     //escapa una cadena insertando barras "\"
  23.     $contenido = addslashes($contenido);
  24.     $contenido[$i] = $contenido;
  25.     fclose($fp);
  26.     @unlink($contenido);
  27.   }
  28.   $sql1 = "INSERT INTO catalogo(id,foto,foto1,foto2,mime) VALUES('','".$contenido[0]."','".$contenido[1]."','".$contenido[2]."','$tipo')";
  29.     mysql_query($sql1) or die( "Error: " . mysql_error());
  30.  
  31.   echo "<h2>Foto guardada correctamente en la base de datos</h2>";
  32. }
  33. exit();
  34. ?> -->

Me da el sgte msje: "Foto guardada correctamente en la base de datos", bien hasta estamos bien pero al momento de visualizar la imagen me sale una aspa.

Intente:
1. Al darle click derecho: verThumbnail.php?cod=00159, protocolo: protocolo de transferencia de hipertexto, tipo: no disponible, direccion: tresw.midominio/verThumbnail.php?cod=00159, tamaño: no disponible, dimensiones: 252x30 pixeles, creado: no disponible, modificado: no disponible.
2. En phpAdmin: los campos foto, foto1, foto2 estan [BLOB - 1 Bytes], el campo mime image/pjpeg

Que mas puedo hacer amigos...solo necesito de sus ayudas por favor...sigo insistiendo con esto...mil disculpas.

Última edición por GatorV; 30/03/2009 a las 16:03
  #11 (permalink)  
Antiguo 30/03/2009, 14:13
Avatar de hoberwilly  
Fecha de Ingreso: julio-2008
Ubicación: Lima - Perú
Mensajes: 769
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Subir imagenes a bd (mas de 1)

Si alguna persona que tenga algunas sugerencias por favor, ojo que no quiero la solucion ...pero si estoy necesitando un guia , o exista unos post relacionado a este tema que estan buscaditos.

Muchas gracias...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.