Problemas con FORM, creo...

Gigatron
07 de Julio del 2008
Bueno yo tengo esta pagina, su funcion principalmente deveria ser la de escrivir en un formulario los datos de un producto, seleccionar las imagenes del producto en tu disco duro y al mandar el formulario los datos los procesa la misma pagina, subiendo por un lado el archivo del formulario en el servidor y aadiendo el resto de campos de texto a la base de datos.

El caso es que lo unico que me hace es subir las imagenes al servidor, despues de hacer varias pruevas he llegado a la conclusin de que el formulario no envia los valores de los campos, solo envia los valores del campo file (del archivo). Y creo que es por esto enctype="multipart/form-data"

Estoy muy desesperado, he hecho un monton de cosas pero nada.
Si he de aclarar algo mas sobre el codigo y lo que pretendo, no duden en decirmelo, es muy importante que pueda hacer esto.

(aadirproducto.asp)

<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
%>
<!-- #include file="freeaspupload.asp" -->
<%

Dim uploadsDirVar
uploadsDirVar = Server.mapPath("./")

Function SaveFiles
Dim Upload, ks, resumen
Set Upload = New FreeASPUpload
Upload.Save(uploadsDirVar)
If Err.Number <> 0 then Exit function
ks = Upload.UploadedFiles.keys
if (UBound(ks) = -1) then resumen = "No es un nombre valido en el sistema."
SaveFiles = resumen

Dim oConn2, rs
Set oConn2 = Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn2.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("esto no creo que importe.mdb"))

set rssql_nuevo=oconn2.execute("insert into Productos (marca,nombre,descripcion,precio,precioclientes1,p recioclientes2,nsubcategoria) values ('"& (request.form("marca")) & "','"& (request.form("nombre")) & "','"& (request.form("descripcion")) & "','"& (request.form("precio")) & "','"& (request.form("precioclientes1")) & "','"& (request.form("precioclientes2")) & "','"& (request.form("nsubcategoria")) & "')")

end function
%>

<html>
<head>
<title>Insertar Productos</title>
<link href="../Estilos/estilo1.css" rel="stylesheet" type="text/css">
</head>
<body class="body">
<table width="100%" height="100%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#999999" bgcolor="#000000">
<tr>
<td align="center" valign="top" class="texto">
<b>Agregar Producto:</b><br>
<p>Agrege los Productos de Z-Bombilla.
<br>Desde esta pagina usted podra ingresar un nuevo producto en la base de datos de Z-Bombilla.</p>

<form name="frmSend" method="POST" enctype="multipart/form-data" action="aadirproducto.asp">
<table width="400" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="120" class="texto2">Marca:</td>
<td><b>
<input name="marca" type="text" class="box" id="marca" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Nombre:</td>
<td><b>
<input name="nombre" type="text" class="box" id="nombre" size="30">
</b></td>
</tr>
<tr>
<td valign="top" class="texto2">Descripcion:</td>
<td><b>
<input name="descripcion" type="text" class="box" id="descripcion" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio (&euro;):</td>
<td><b>
<input name="precio" type="text" class="box" id="precio" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio Clientes 1 (&euro;):</td>
<td><b>
<input name="precioclientes1" type="text" class="box" id="precioclientes1" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio Clientes 2 (&euro;):</td>
<td><b>
<input name="precioclientes2" type="text" class="box" id="precioclientes2" size="30">
<input name="nsubcategoria" type="hidden" id="nsubcategoria" value="<% =Request.QueryString("Id") %>">
</b></td>
</tr>
<tr>
<td class="texto2">Foto 1:</td>
<td><b>
<input name="attach1" type="file" size="17" class="box">
</b></td>
</tr>
<tr>
<td class="texto2">Foto 2:</td>
<td><b>
<input name="attach2" type="file" size="17" class="box">
</b></td>
</tr>
<tr>
<td height="5" class="texto2"> <input name="imageField" type="image" src="Imagenes/spacer.gif" width="1" height="1" border="0">
</td>
<td height="5"> <input name="imageField2" type="image" src="Imagenes/spacer.gif" width="1" height="1" border="0"></td>
</tr>
<tr>
<td class="texto2"><input name="Submit" type="submit" class="botonBuscar" value="Aceptar"></td>
<td><input name="Submit2" type="reset" class="box" value="Restablecer"></td>
</tr>
</table>
</form>
</td></tr></table>
<%
'solo llamo al UPLOAD si hay envio de formulario
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
response.write SaveFiles()
end if
%>
</body>
</html>

gastonnn
07 de Julio del 2008
El formulario que envias es multipart/form-data con eso le dices al servidor que estas procesando Bytes, lo solucion es sencilla tienes que hacer 2 paginas una primera pagina es la que toma los datos que quieres insertar, una vez que le agregas los datos envias el formulario, la 1 pagina se encarga de procesar los datos y agregar el registro a la base de datos.
Si todo funciona bien, automaticamente pasas a la 2 pagina con un response.redirect "2pagina.asp"
Tomas el ID del registro ingresado

dim strID
strID = Request.QueryString("ID")

y en esta segunda pagina agregas la imagen,
cuando termina de subir la foto o imagen, editas
el registro y le agregas la direccion donde se
encuentra la imagen.
Gaston Nat
[email protected]

uno
07 de Julio del 2008
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>

pikeba
07 de Julio del 2008
en lugar de utilizar Request.Form, utiliza upload.Form("dato") aver que tal

An?o
07 de Julio del 2008
Es cierto que con multipart/form-data no sirve el mtodo Request.
Puedes usar el componente aspsmartupload (http://www.aspsmart.com/) y podrs recoger la informacin del fichero, en este caso imgen y los dems campos.
Es muy fcil de usar, creo que las instrucciones son muy claras y es gratuito.

Suerte

Josep
07 de Julio del 2008
Puede que no sea la mejor solucin, pero yo lo he solucionado con la creacin de una Session.

De todas formas slo tenia que pasar un nico campo, por lo que no creo que cargue en exceso el servidor con una Session de ms.

Me explico:

En la pgina en la que tengo el formulario he hecho
Session(\"ubicacion\")=carpeta
Dnde \"carpeta\" es una variable que recoge el valor de un campo del formulario

En la pgina que recibe los datos he hecho
c=Session(\"ubicacion\")
Luego con c (variable en la que tengo el valor del campo del formulario) ya puedo hacer lo que quiera.

Si alguien cree que no es una solucin adecuada, le rogara que me lo digera para no tener problemas en un futuro.

Saludos.

nimai
07 de Julio del 2008
bueno no pones la pagina a la que llega la informacion pero creo que el problema deve de estar en la forma en la que recibes los datos

request.form("nombre de las cajas de texto") para el metodo get y
request.querystring("nombre de las cajas de texto") para el metodo post