Foros del Web » Programando para Internet » ASP Clásico »

ayuda con este código

Estas en el tema de ayuda con este código en el foro de ASP Clásico en Foros del Web. Estoy desarrollando un carro de compras en una sola página y soy principiante y no se como hacer para poder ingresar una columna donde se ...
  #1 (permalink)  
Antiguo 10/07/2003, 12:19
 
Fecha de Ingreso: julio-2003
Mensajes: 70
Antigüedad: 20 años, 11 meses
Puntos: 0
ayuda con este código

Estoy desarrollando un carro de compras en una sola página y soy principiante y no se como hacer para poder ingresar una columna donde se puedan cambiar las cantidades , he recorrido muchas preguntas de este forro y he visto muchos ejemplos pero son distintos a mi carrito y no se como resolverlo.
Les agradezco la ayuda a todos lo que esten interesados.
Aca pongo mi código
que es bastante largo
<html>

<HEAD>
<style><!--
a { text-decoration: none }
a:hover { color: #003636}-->
</style><style>
BODY {SCROLLBAR-FACE-COLOR: #006699; SCROLLBAR-HIGHLIGHT-COLOR: #nnnnn; SCROLLBAR-SHADOW-COLOR: #ffffff; SCROLLBAR-3DLIGHT-COLOR: #E7E7E7; SCROLLBAR-ARROW-COLOR: #ffffff; SCROLLBAR-TRACK-COLOR: #cccccc; SCROLLBAR-DARKSHADOW-COLOR: #ffffff; }
</style>
<%@LANGUAGE="VBSCRIPT"%>
<%Response.Buffer=True%>
<script language="javascript">
function envioCorreo(){
var nombre;
var direccion;
var correo;
var telefono;
nombre = datos.fnombre.value;
direccion = datos.fcalle.value;
correo = datos.fmail.value;
telefono = datos.ftel.value;
window.location.href="shop2.asp?ac=EnviarCorreo&no mbre=" + nombre + "&direccion=" + direccion + "&correo=" + correo + "&telefono=" + telefono ;
}
</script>
<%


Sub MostrarCatalogo
' Muestra el catálogo con enlaces para ir comprando

Dim oRs, oRs2, SQL ' Uso 2 recordset
Dim idmarca ' IdMarca en Productos

' Conexión sin DSN a la base de datos

set oRs=Server.CreateObject("ADODB.Recordset")
set oRs2=Server.CreateObject("ADODB.Recordset")

'SQL="SELECT * FROM Productos;"
SQL="SELECT * FROM PRODUCTOS WHERE Marca=2"

oRs.Open SQL, oConn

'Dibujo la tabla
%>
<title></title>
</head>

<body>

<div align="center">
<center>
<TABLE BORDER=1 CELLSPACING="0" CELLPADDING="1" width="552" bordercolor="#006699">
<TR>
<TD bgcolor="#006699" width="318">
<p align="center"><B><font face="Verdana" size="1" color="#FFFFFF">Producto</font></B></p>
</TD>
<TD bgcolor="#006699" width="41">
<p align="center"><B><font face="Verdana" size="1" color="#FFFFFF">Precio</font></B></p>
</TD>
<TD bgcolor="#006699" width="76">
<p align="center">&nbsp;</TD>

<%
do until oRs.EOF
idmarca=oRs.Fields("Marca")

' Tengo que sacar el nombre y la URL de la marca
SQL="SELECT * FROM Marcas WHERE IdMarca="&idmarca&";"
oRs2.Open SQL, oConn

' Cuidado con los dos recordset ahora:
' oRs2 tiene la marca
' oRs tiene el producto
%>
<TR>
<TD bgcolor="#FFFFFF" width="318">
<p align="center"><font face="Verdana" size="1"><%=oRs.Fields("Nombre")%></font></TD>
<TD bgcolor="#FFFFFF" width="41">
<p align="center"><font face="Verdana" size="1"><%=oRs.Fields("Precio")%></font></TD>
<TD bgcolor="#FFFFFF" width="76">
<p align="center"><A HREF="shop2.asp?ac=meter&prod=<%=oRs.Fields("IdPro ducto")%>"><font face="Verdana" size="1">Comprar</font></A></p>
</TD>
</TR>
<%
'Limpio oRs2
oRs2.Close
oRs.MoveNext
loop

'Termino la tabla
%>
</TABLE>
</center>
</div>
<p align="center"><font face="Verdana" size="1">
<%
oRs.Close
set oRs=nothing
set oRs2=nothing
' Pinto opciones
%>
<center><A HREF=shop2.asp?ac=ver>Ver Carrito</A></center>

&nbsp;<br>

<%
End Sub
'----------------------------------------------------------

Sub MostrarCarrito
' Muestra el contenido del carrito de la compra
' En este ejemplo los gastos de envío los declaro aquí como constante.
' En un caso real deberían traerse de base de datos y llenar un combo por ejemplo

' carrito es la variable global que referencia al carrito

Dim oRs, oRs2, SQL

Dim clave

Dim gastos ' Gastos de envio
Dim total, subtotal

gastos=0000 ' Para todo el mundo! :)
total=0
subtotal=0

' Conexión sin DSN a la base de datos
' Debería haber sacado estas líneas a un sub y llamarlo, pero en fin :(

set oRs=Server.CreateObject("ADODB.Recordset")


'Pinto la tabla


%>
</font>
<p align="center">&nbsp;</p>
<div align="center">
<center>
<TABLE BORDER="1" CELLPADDING="0" CELLSPACING="0" width="621" bordercolor="#006699">
<TR>
<TD colspan="6" width="471" bgcolor="#006699"><font color="#FFFF00"><a href="javascript:print()"><img border="0" src="file:///C:/Mis%20documentos/cocina/shop111.gif" align="right"></a><b><font face="Verdana" color="#FFFFFF" size="2">CARRITO</font></b></font></TD>
</TR>
<TR>
<TD bgcolor="#006699" width="451">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF"><b>Producto</b></font>
</TD>
<TD bgcolor="#006699" width="73">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF"><b>Cantidad</b></font></p>
</TD>
<TD bgcolor="#006699" colspan="2" width="1">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF"><b>Precio</b></font></p>
</TD>
<TD bgcolor="#006699" width="136">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF"><b>Quitar del carrito</b></font></p>
</TD>
<TD bgcolor="#006699" width="1">
<p align="center"><font face="Verdana" size="1" color="#FFFFFF"><b>Total</b></font></p>
</TD>
</TR>
<%
For Each clave in carrito
subtotal=0 ' Total de cada artículo en el carrito
'Pinto la línea de este producto
SQL="SELECT * FROM Productos WHERE IdProducto="&clave&";"
set oRs=oConn.Execute(SQL)

%>
<TR>

<TD bgcolor="#FFFFFF" width="451">
<p align="center"><font face="Verdana" size="1"><%=oRs.Fields("Nombre")%></font></TD>
<TD bgcolor="#FFFFFF" width="73">
<p align="center"><font face="Verdana" size="1"><%=carrito(clave)%></font></TD>
<TD colspan="2" bgcolor="#FFFFFF" width="1">
<p align="center"><font face="Verdana" size="1"><%=oRs.Fields("Precio")%></font></TD>
<TD bgcolor="#FFFFFF" width="136">
<p align="center"><font face="Verdana" size="1"><A HREF="shop2.asp?ac=sacar&prod=<%=clave%>&cant=1"> Uno</A>
<A HREF="shop2.asp?ac=sacar&prod=<%=clave%>&cant=<%=c arrito(clave)%>"> Todos</A>
</font></p>
</TD>
<%
' Multiplico el precio por la cantidad. FormatNumber me asegura que es un nº válido
' y convierto todo a tipo Single con CSng.
subtotal=CSng(FormatNumber(carrito(clave))*oRs.Fie lds("Precio"))
total=total+subtotal
%>
<TD bgcolor="#FFFFFF" width="1">
<p align="center"><font face="Verdana" size="1"><%= subtotal %></font></TD>
</TR>
<%
Next

if carrito.Count > 0 then
oRs.Close
set oRs=nothing
end if

'Pinto el final de la tabla

%>
<TR>
<TD COLSPAN=5 bgcolor="#FFFFFF" width="488">
<p align="center"><font face="Verdana" size="1">Gastos de envío</font></p>
</TD>
<TD bgcolor="#FFFFFF" width="1">
<p align="center"><font face="Verdana" size="1">
<%
if total=0 then
Response.Write("0") ' Sin compra no hay gastos de envío
else
Response.Write(gastos)
end if
%>
</font>
</TD>
<TR>
<TD COLSPAN=5 bgcolor="#FFFFFF" width="488">
<p align="center"><B><font face="Verdana" size="1">Total:</font></B></p>
</TD>
<TD bgcolor="#FFFFFF" width="1">
<p align="center"><font face="Verdana" size="1">
<%if total=0 then
Response.Write("0")
else
Response.Write(total+gastos)
end if
%>
</font>
</TD>
<TR>
<TD COLSPAN=3 bgcolor="#006699" width="161"><a href="pastas.asp"><img border="0" src="../sol_seguir_comp.gif"></a></TD>
<TD COLSPAN=3 bgcolor="#006699" width="306"><a href="shop2.asp?ac=fin"><img border="0" src="../sol_confirmar.gif" align="right"></a></TD>
</TABLE>
</center>
</div>
<p align="center"><font face="Verdana" size="1">
<%
' Pinto los enlaces
' si no he llamado desde PasarPorCaja
if accion<>"fin" then
%>
<%
end if
End Sub
'----------------------------------------------------------

sigue....
__________________
NormaB
  #2 (permalink)  
Antiguo 10/07/2003, 12:20
 
Fecha de Ingreso: julio-2003
Mensajes: 70
Antigüedad: 20 años, 11 meses
Puntos: 0
Sub MeterArticulo (id)
' Añade el producto id al carrito de la compra
' En un caso real se deberían poder añadir más de una unidad
' bien desde el catálogo, bien editando en el carrito

' Si ya tengo el artículo en el carrito sumo 1 a la cantidad
if carrito.Exists(id) then
carrito(id)=carrito(id)+1
else
' Si no lo añado
carrito.Add id, 1
end if
Response.Write("Se ha añadido el artículo al carrito<br>")
End Sub

Sub SacarArticulo (id, cantidad)
' Saca un numero "cantidad" de articulos "id" del carrito
if not carrito.Exists(id) then
Response.Write("¡No tienes eso en tu carrito!")
else
if cantidad>1 then
'Quito todos así que quito ese articulo del carrito
carrito.Remove(id)
else
'Quito uno
carrito(id)=carrito(id)-1
if carrito(id)<1 then
carrito.Remove(id)
end if
end if
end if

End Sub

Sub EnviarCorreo(nombre,direccion,correo,telefono)
'--------------------------------------------
'capturamso los campos y mandamos el correo
Dim oRs, oRs2, SQL
Dim clave
Dim gastos ' Gastos de envio
Dim total, subtotal

gastos=0000 ' Para todo el mundo! :)
total=0
subtotal=0
' Conexión sin DSN a la base de datos
' Debería haber sacado estas líneas a un sub y llamarlo, pero en fin :(
set oRs=Server.CreateObject("ADODB.Recordset")
dim oMail
DIM Sender
dim Recipient
dim titulo
dim Texto
Set oMail = Server.CreateObject ("CDONTS.NewMail")
oMail.BodyFormat = cdoBodyFormatHTML
oMail.MailFormat = 0
Sender = "[email protected]" 'Tu email
Recipient = correo 'Email de destino, aqui meto la variable correo que es la que ha metido en la caja,es decir a la que quiere el cliente que se le mande
'si hay mas de un lo separamos con mail1;mail2
titulo = "Envio del carrito de la compra"
Texto ="<html><body>"
Texto = Texto & "<center><h2><b>D/Dña " & nombre & "</b></h2></center><BR><BR>"
For Each clave in carrito
subtotal=0 ' Total de cada artículo en el carrito
'Pinto la línea de este producto
SQL="SELECT * FROM Productos WHERE IdProducto="&clave&";"
set oRs=oConn.Execute(SQL)
'para usar el telefono o la direccion en el correo simplemente con las variables direccion y telefono
Texto = Texto & " Producto : " & oRs.Fields("Nombre") & "<BR>"
Texto = Texto & " Cantidad : " & carrito(clave) & "<BR>"
Texto = Texto & " Precio : " & oRs.Fields("Precio") & "<BR>"
subtotal=CSng(FormatNumber(carrito(clave))*oRs.Fie lds("Precio"))
Texto = Texto & " Total : " & subtotal & "<BR>"
Texto = Texto & "<hr>"
total=total+subtotal
Next
Texto = Texto & "<br>"
Texto = Texto & "<center><b>Total de la compra:" & Total & "</b></center>"
Texto = Texto & "</body></html>"
'por si quieres mandar copia a alguien mas, lo descomentas si quieres que mande a mas de uno
'oMail.Cc="[email protected]"
'por si quieres adjuntar ficheros a esa persona, lo descomentas si quieres mandar ficheros adjuntos
'oMail.AttachFile "c:\horas.xls"
oMail.Send Sender, Recipient, titulo, Texto

Set oMail = Nothing
oRs.close
set oRs = Nothing
'La instrucción oMail.MailFormat = 0 hace que el mail se envié con formato HTML, si MailFormat lo ponemos a 1 el mail se enviará en formato texto. También es posible enviar ficheros adjuntos con CDO, para poder hacerlo hay que utilizar la propiedad :

'AttachFile ruta del fichero, nombre del fichero
'ahora le volvemos a mostrar el carrito por ejemplo
MostrarCarrito
'Norma estas 5 lineas siguientes es el código añadido para eliminar el carrito al mandar el correo
set Session("carrito")=nothing
Session.Abandon
response.clear
response.redirect "gracias.asp"
response.end
End Sub


Sub PasarPorCaja
'-----------------------------------------------
' En este punto del script es donde debería ir
' todo lo relacionado con el pago, etc.
Dim fnombre
fnombre=CStr( Trim( Request.Form("fNombre") ) )
%></font>
<h2 align="center"><font face="Verdana" size="1">¡Gracias por comprar nuestros
productos!</font></h2>
<p align="center"><font face="Verdana" size="1">En breve nos comunicaremos en el
horario indicado para confirmar la entrega en su domicilio.&nbsp;<br>
Recomendamos tener lugar disponible en su freezer.<br>
</p>
<form name="datos">
<p align="center"><input type="hidden" name="ac" value="EnviarCorreo">
<table border="0" width="100%" cellspacing="0" height="40">
<tr>
<td width="50%" align="right" height="28">
<p align="right"><font face="Verdana" size="1" color="#000000">Nombre y
Apellido<br>
</font></td>
<td width="50%" height="28"><font face="Verdana" size="1"><input type="text" name="fnombre" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="28"><font face="Verdana" size="1" color="#000000">Dirección<br>
</font></td>
<td width="50%" height="28"><font face="Verdana" size="1"><input type="text" name="fcalle" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="28"><font face="Verdana" size="1" color="#000000">E
- Mail&nbsp;<br>
</font></td>
<td width="50%" height="28"><font face="Verdana" size="1"><input type="text" name="fmail" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="1"><font face="Verdana" size="1" color="#000000">Tel<br>
</font></td>
<td width="50%" height="1"><font face="Verdana" size="1"><input type="text" name="ftel" size="20"></font></td>
</tr>
<tr>
<td width="50%" align="right" height="1"><font face="Verdana" size="1" color="#000000">Horario
de contacto<br>
</font></td>
<td width="50%" height="1"><font face="Verdana" size="1"><input type="text" name="fhora" size="20">
Ej:
de 9 a 13</font></td>
</tr>
<tr>
<td width="100%" align="right" height="1" colspan="2">
<p align="center"><font face="Verdana" size="1"><br>
<input type="button" value="Enviar Datos" style="font-size: 8pt; font-family: Verdana; background-color: rgb(233,233,233); border: 1px double #808080" onClick="envioCorreo();" ;></font></td>
</tr>
</table>
</form>


<%
MostrarCarrito
%>

<%

set Session("carrito")=nothing
End Sub




'---------------------------------
' Programa "principal"
'---------------------------------
Dim carrito
Dim accion
Dim producto
Dim cant
Dim oConn


set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("tienda.mdb")

' Si no existe el carrito lo creo
' si existe lo referencio

if isobject(Session("carrito")) then
set carrito=Session("carrito")
else
set carrito=Server.CreateObject("Scripting.Dictionary" )
end if

accion=CStr(Request.QueryString("ac")) 'Paso el parámetro a cadena
producto=CInt(Request.QueryString("prod")) 'Paso el parámetro cant a número entero
cant=CInt(Request.QueryString("cant")) 'Paso el parámetro cant a número entero
nombre = Request.QueryString("nombre")
direccion = Request.QueryString("direccion")
correo = Request.QueryString("correo")
telefono = Request.QueryString("telefono")
Select Case accion

Case "ver"
'Muestro el carrito
MostrarCarrito

Case "meter"
'Añado articulo al carrito
MeterArticulo producto
MostrarCarrito

Case "sacar"
call SacarArticulo (producto, cant)
MostrarCarrito

case "EnviarCorreo"
EnviarCorreo nombre,direccion,correo,telefono

Case "fin"
PasarPorCaja

Case else
'Muestro el catálogo
MostrarCatalogo

End Select

set Session("carrito")=carrito
oConn.Close
set oConn=nothing

%>


</font>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>

</html>
__________________
NormaB
  #3 (permalink)  
Antiguo 11/07/2003, 15:27
 
Fecha de Ingreso: julio-2003
Mensajes: 70
Antigüedad: 20 años, 11 meses
Puntos: 0
Aunque no sepan la respuesta me pueden decir si se puede hacer o nó?
Gracias
norma
__________________
NormaB
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 00:42.