Problemas con FORM, creo...
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 añadiendo 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 conclusión 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.
(añadirproducto.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="añadirproducto.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 (€):</td>
<td><b>
<input name="precio" type="text" class="box" id="precio" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio Clientes 1 (€):</td>
<td><b>
<input name="precioclientes1" type="text" class="box" id="precioclientes1" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio Clientes 2 (€):</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>
El caso es que lo unico que me hace es subir las imagenes al servidor, despues de hacer varias pruevas he llegado a la conclusión 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.
(añadirproducto.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="añadirproducto.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 (€):</td>
<td><b>
<input name="precio" type="text" class="box" id="precio" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio Clientes 1 (€):</td>
<td><b>
<input name="precioclientes1" type="text" class="box" id="precioclientes1" size="30">
</b></td>
</tr>
<tr>
<td class="texto2">Precio Clientes 2 (€):</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>
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]
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]
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>
<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
</head>
en lugar de utilizar Request.Form, utiliza upload.Form("dato") aver que tal
Es cierto que con multipart/form-data no sirve el método Request.
Puedes usar el componente aspsmartupload (http://www.aspsmart.com/) y podrás recoger la información del fichero, en este caso imágen y los demás campos.
Es muy fácil de usar, creo que las instrucciones son muy claras y es gratuito.
Suerte
Puedes usar el componente aspsmartupload (http://www.aspsmart.com/) y podrás recoger la información del fichero, en este caso imágen y los demás campos.
Es muy fácil de usar, creo que las instrucciones son muy claras y es gratuito.
Suerte
Puede que no sea la mejor solución, pero yo lo he solucionado con la creación de una Session.
De todas formas sólo tenia que pasar un único campo, por lo que no creo que cargue en exceso el servidor con una Session de más.
Me explico:
En la página en la que tengo el formulario he hecho
Session(\"ubicacion\")=carpeta
Dónde \"carpeta\" es una variable que recoge el valor de un campo del formulario
En la página 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 solución adecuada, le rogaría que me lo digera para no tener problemas en un futuro.
Saludos.
De todas formas sólo tenia que pasar un único campo, por lo que no creo que cargue en exceso el servidor con una Session de más.
Me explico:
En la página en la que tengo el formulario he hecho
Session(\"ubicacion\")=carpeta
Dónde \"carpeta\" es una variable que recoge el valor de un campo del formulario
En la página 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 solución adecuada, le rogaría que me lo digera para no tener problemas en un futuro.
Saludos.