Foros del Web » Programando para Internet » PHP »

Doble formulario

Estas en el tema de Doble formulario en el foro de PHP en Foros del Web. Hola a todos. Gracias a vuestros consejos, por fin he conseguido subir imagenes a un servidor mediante php. Ahora tengo una nueva duda: Tengo un ...
  #1 (permalink)  
Antiguo 24/03/2004, 04:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 0
Doble formulario

Hola a todos.

Gracias a vuestros consejos, por fin he conseguido subir imagenes a un servidor mediante php.

Ahora tengo una nueva duda:

Tengo un formulario que me sube datos a una bdd SQL con una acción <?php echo $editFormAction; ?>.

Para subir las imagenes, la acción dirige a una página "subir_imagenes.php".

¿Es posible hacer un formulario que ejecute mediante un botón las dos órdenes?

Gracias mil.

Xavi
  #2 (permalink)  
Antiguo 24/03/2004, 06:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes mezclar ambos formularios .. y un sólo botón de "submit" para el formulario ..

El único detalle que tienes que tener en cuenta es que si mezclas datos "planos" (como los de tu fomulario normal) y campos de formulario tipo "FILE" (el de tu imagen) debes usar como definición del <form ..> :

Código PHP:
<form action="file-upload.php" method="POST" enctype="multipart/form-data"
El "enctype" y el método POST son necesarios para combinar "texto plano" y "datos binarios" ...

En tu script actual "subir_imagenes.php" incluye el código que ya usaras para procesar las variables de tu otro formulario ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 24/03/2004, 10:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 0
OK.

Pero cómo consigo que el nombre de la imagen vaya a parar al campo "nom_imagen)??

Gracias dos mil
  #4 (permalink)  
Antiguo 24/03/2004, 10:52
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 0
He comprobado que si el formulario es del tipo (multipart/form-data) envia la imagen a su directorio pero no inserta el valor del nombre en el campo.

En cambio, si es (application/x-www-form-urlencoded) inserta el nombre de la imagen como valor del campo, pero, en cambio no me sube la imagen.

¿Tiene solución?
  #5 (permalink)  
Antiguo 24/03/2004, 10:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por su array asociado:

$_FILES['imagen']['name']

las demás iran en el array asociado:

$_POST['otra']

Revisa el manual oficial de PHP para más detalles:
http://www.php.net/manual/en/features.file-upload.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 24/03/2004, 10:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El formulario tiene que ser codificado como:
multipart/form-data

por qué así le indicas al navegador que va a enviar los datos en dos partes: una texto plano que son tus campos de tu formulario normales y otra parte "binario" que será tu archivo con todas sus propiedades y codificado así para tal fin.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 24/03/2004, 11:08
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 0
Perdona que moleste tanto, pero mi cdóigo es algo así como:

------------------------------------------------------------------

$insertSQL = sprintf("INSERT INTO partits (jornada, partit, `data`, resultat, alineacio, cronica, foto, proxim) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($HTTP_POST_VARS['jornada'], "text"),
GetSQLValueString($HTTP_POST_VARS['partit'], "text"),
GetSQLValueString($HTTP_POST_VARS['data'], "text"),
GetSQLValueString($HTTP_POST_VARS['resultat'], "text"),
GetSQLValueString($HTTP_POST_VARS['alineacio'], "text"),
GetSQLValueString($HTTP_POST_VARS['cronica'], "text"),
GetSQLValueString($HTTP_POST_VARS['foto'], "text"),
GetSQLValueString($HTTP_POST_VARS['proxim'], "text"));

*-------------------------------------------------------

Me lo crea Dreamweaver. ¿Es este el problema?
  #8 (permalink)  
Antiguo 24/03/2004, 11:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Se supone que "foto" es el campo FILE de tu formulario donde indicas el archivo a subir? ..

GetSQLValueString($HTTP_POST_VARS['foto'], "text"),

Si es así .. ahí deberias tener

GetSQLValueString($HTTP_POST_FILES['foto']['name'], "text"),

Pero si puedes NO uses Dreamweaver para generar código ... así vienen los problemas cuando quieres salirte de lo que hacen sus asistentes (o bien buscate si encuentras algún módulo de "upload" para Dreamweaver ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 24/03/2004, 11:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 0
Si, es así.

Pongo lo que me dices y no hay manera. El campo "foto" sigue saliendo NULL.

Alguna idea genial??

Gracias

P.S. Utilizo Dw xq todavia no tengo ni idea de programación, pero prometo seguir aprendiendo, con maestros como tú.
  #10 (permalink)  
Antiguo 24/03/2004, 11:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. te recomendaría que leas las FAQ's de este foro por qué hay varios ejemplos de "Upload" (y sino usa el buscador del foro) .. prueba esos ejemplos y ves olvidandote poco a poco de los asistentes de Dreamweaver (por lo menos para generar código PHP que no sabes ni lo que significa .. que ese suele ser el problema: lo que haga bien .. bien está ..pero lo que no hace ahí se complica).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 24/03/2004, 11:54
 
Fecha de Ingreso: marzo-2004
Mensajes: 17
Antigüedad: 13 años, 8 meses
Puntos: 0
Bien!!!!

Ya funciona!!!!!

La parte de codigo era asi:

-------------------------------------------------

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO partits (jornada, partit, `data`, resultat, alineacio, cronica, foto, proxim) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['jornada'], "text"),
GetSQLValueString($_POST['partit'], "text"),
GetSQLValueString($_POST['data'], "text"),
GetSQLValueString($_POST['resultat'], "text"),
GetSQLValueString($_POST['alineacio'], "text"),
GetSQLValueString($_POST['cronica'], "text"),
GetSQLValueString($_FILES['foto']['name'], "text"),
GetSQLValueString($_POST['proxim'], "text"));


------------------------------------------------------------

Era cambiar (HTTP_POST_VARS) POR ($_POST) en todas las líneas excepto en la da la foto que era (S_FILES)

Gracias por los consejos.

Tienes una birra pagada en bcn!!!
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 07:14.