Foros del Web » Programando para Internet » PHP »

Unir Multiples imagenes a base de datos + imagenes a BD con codigo de las FAQ

Estas en el tema de Unir Multiples imagenes a base de datos + imagenes a BD con codigo de las FAQ en el foro de PHP en Foros del Web. Hola amigos, hace rato no preguntaba por aqui. Uso hace ya bastante un codigo que encontre alguna vez en las FAQ de PHP y me ...
  #1 (permalink)  
Antiguo 06/10/2007, 17:27
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Subir Multiples imagenes a base de datos

Hola amigos, hace rato no preguntaba por aqui.

Uso hace ya bastante un codigo que encontre alguna vez en las FAQ de PHP y me va de maravilla, pero en este caso en particular se me complica su uso.

La idea es que el cliente subira a la base de datos unas noticias, compuestas de su titulo, texto introductorio, fecha y cuerpo de la noticia. Aparte "algunas" llevaran foto y otras no, ademas de que las que llevan foto, algunas llevan 1 y otras quizas 2 o 3, todas con su respectivo pie de foto (nota en la BD)

El codigo que utilizo es para imagenes a BD como blob acompañadas de algun que otro campo de texto (titulo, intro, contenido, fecha, nota)

Noto que si en el form, al hacer submit no he ingresado ninguna imagen en el campo de archivo, no me sube nada y me muestra: "falta_indicar_fichero" (utilizado en el form, ya veran el codigo). La otra es que no se como modificar el codigo que tan bien me ha funcionado siempre, para que pueda entonces:

a) subir los campos titulo, intro, fecha y contenido sin foto para las noticias que no llevan foto

b) la opcion de que si el cliente quiere, suba no solo 1 sino 2 o 3 fotos (maximo creo que es suficiente)

Adjunto todos los codigo que utilizo, de antemano gracias por su ayuda

PD: no por presion pero tengo la entrega el lunes, al menos si pudieran orientarme se los agradeceria mucho!

El formulario (resumido para ustedes) noticias.php:

Código PHP:
<? 
if (isset($_GET['proceso'])){ 
echo 
$_GET['proceso']."<br>"

?>
Código HTML:
<FORM enctype="multipart/form-data" method="post" action="insert_noticias.php">
                    <table width="536">
                      <tr>
                        <td width="81"><div align="left" class="normal">T&iacute;tulo:</div></td>
                        <td width="443"><div align="left">
                          <input name="titulo" type="text" id="titulo" size="45" align="left">
                        </div></td>
                      </tr>
                      <tr>
                        <td width="81"><div align="left" class="normal">Intro:</div></td>
                        <td width="443"><div align="left">
                          <input name="intro" type="text" id="intro" size="45" align="left">
                        </div></td>
                      </tr>
                      <tr>
                        <td><div align="left" class="normal">Contenido:</div></td>
                        <td><div align="left">
                          <textarea name="contenido" cols="60" id="contenido" align="left"></textarea>
                        </div></td>
                      </tr>
                      <tr>
                        <td><div align="left"><span class="normal">Fecha:</span></div></td>
                        <td><div align="left">
                          <input name="fecha" type="text" id="fecha" size="15" align="left">
                        </div></td>
                      </tr>
                      <tr>
                        <td><div align="left" class="normal">Imagen:</div></td>
                        <td><div align="left">
                          <input name="archivo" type="file" id="archivo" size="33" align="left">
                        </div></td>
                      </tr>
                      <tr>
                        <td><div align="left"><span class="normal">Pie de imagen:</span></div></td>
                        <td><div align="left">
                          <input name="nota" type="text" id="nota" size="35" align="left">
                        </div></td>
                      </tr>
                      <tr>
                        <td>&nbsp;</td>
                        <td>&nbsp;</td>
                      </tr>
                      <tr>
                        <td colspan="2"><div align="center">
                            <input type="submit" name="submit" value="Ingresar Noticia">
                        </div></td>
                      </tr>
                    </table>
                  </form> 
El que sube la noticia insert_noticias.php:

Código PHP:
<?php

if (empty($_FILES['archivo']['name'])){ 
header("location: noticias.php?proceso=falta_indicar_fichero");
exit; 

 
include(
"connect.php");
 
$binario_nombre_temporal=$_FILES['archivo']['tmp_name']; 
 
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal))); 
 
$binario_nombre=$_FILES['archivo']['name']; 
$binario_peso=$_FILES['archivo']['size']; 
$binario_tipo=$_FILES['archivo']['type']; 
 
$consulta_insertar "INSERT INTO noticias (id, fecha, titulo, intro, contenido, nota, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$fecha', '$titulo', '$intro', '$contenido', '$nota', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')"
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");

header("location: noticias.php");

exit; 
?>
PD:

Si subo los campos de texto con alguna foto, perfecto, sube se guarda y se muestra sin ningun problema.

Si subo los campos de texto sin foto, no lo guarda y muestra el mensaje falta_indicar_fichero sobre el formulario vacio

Última edición por iarrieta; 07/10/2007 a las 22:29
  #2 (permalink)  
Antiguo 06/10/2007, 21:07
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Texto e imagenes a BD con codigo de las FAQ

Mientras recibo respuesta en el foro, he estado buscando por alli pero siempre logro ubicar codigos ya hechos de multiples uploads, generalmente a carpetas. Nada a base de datos que es el que acostumbro a utilizar.

Lo importante es que el cliente pueda subir o no imagenes, que no sea limitante y, si decide subir 1, 2 o 3 imagenes, entonces se creen los campos de archivo necesarios y el campo de texto para el pie de imagen. De lo contrario, es un form simple con solo los campos de texto y ya.
  #3 (permalink)  
Antiguo 06/10/2007, 21:31
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Para quien le sirva:

Ya logre que me inrese los datos aunque no suba una imagen, es decir, sube los datos con o sin imagen y los ingresa bien luego los muestra tambien bien.

Solo que cuando subo datos sin imagen me tira un error (aunque si ingresa los datos)

Quite del form esto:

<?
if (isset($_GET['proceso'])){
echo $_GET['proceso']."<br>";
}
?>

Y del archivo que sube los datos esto:

if (empty($_FILES['archivo']['name'])){
header("location: noticias.php?proceso=falta_indicar_fichero");
exit;
}

El error que me muestra es este:

Warning: fread(): supplied argument is not a valid stream resource in /home/entre2/public_html/aerogroup/admin/insert_noticias.php on line 7

Casi lo soluciono poniendo en la parte superior de ese archivo esto:

<meta http-equiv="refresh" content="0; url=noticias.html">

Pero se alcanza a ver po una milesima de segundo el error y no es muy pro. Solo faltaria entonces suprimir ese error de manera profesional y ahora me queda lograr creo que con java y modificando la base dedatos, poder subir mas de 1 imagen a la vez

Última edición por iarrieta; 06/10/2007 a las 21:42
  #4 (permalink)  
Antiguo 06/10/2007, 22:06
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Unir Multiples imagenes a base de datos + imagenes a BD con codigo de las FAQ

Solucionado el mensaje de error, aunque siga existiendo no se ve (supongo que si sube todo bien realmente no afecta el funcionamiento)

al comienzo del script coloque:

header ("Location: noticias.html");
  #5 (permalink)  
Antiguo 06/10/2007, 22:42
Avatar de demiurgo_daemon  
Fecha de Ingreso: diciembre-2006
Ubicación: Querétaro
Mensajes: 184
Antigüedad: 17 años, 4 meses
Puntos: 2
Re: Unir Multiples imagenes a base de datos + imagenes a BD con codigo de las FAQ

Hola,

si quieres verificar que te hayan enviado un archivo,

Código PHP:
if(empty($_FILES['archivo']['name'])) 
no es apropiado porque estarías revisando simplemente que un archivo exista y esté vacío. De hecho, por eso te sale el error; estás revisando que un archivo esté vacío, pero no existe. Mejor usa
Código PHP:
if($_FILES['archivo']['error']!=UPLOAD_ERR_OK
Así verificas contra cualquier situación posible al subir (o no) un archivo. Más información sobre los códigos de error en el manual de PHP.

saludos
  #6 (permalink)  
Antiguo 06/10/2007, 22:49
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Unir Multiples imagenes a base de datos + imagenes a BD con codigo de las FAQ

Hola y gracias,

Me indicas que debo volver a utilizar esto en el form:

Código PHP:
<?
if (isset($_GET['proceso'])){
echo 
$_GET['proceso']."<br>";
}
?>
Y es to en el archivo que sube los datos:

Código PHP:
if($_FILES['archivo']['error']!=UPLOAD_ERR_OK)
header("location: noticias.php?proceso=falta_indicar_fichero");
exit;

?????
  #7 (permalink)  
Antiguo 07/10/2007, 22:30
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 5 meses
Puntos: 0
Re: Unir Multiples imagenes a base de datos + imagenes a BD con codigo de las FAQ

Por favor una mano!!! Gracias a quienes puedan colaborarme
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:00.