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

Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Estas en el tema de Dudas sobre un carrito pasando datos a bases de datos al acabar la compra en el foro de ASP Clásico en Foros del Web. Hola a todos, Estoy intentando crear un carrito de la compra para una web bastante sencilla y de momento todo me iba bien, use el ...
  #1 (permalink)  
Antiguo 30/01/2009, 11:57
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola a todos,

Estoy intentando crear un carrito de la compra para una web bastante sencilla y de momento todo me iba bien, use el carrito de aspfacil.com y simplemente le añadí el hecho de que sólo se pueda usar el carrito si te has registrado antes.

El caso es que ahora lo que quiero es que cuando el usuario decida finalizar la compra todo lo que este en su carrito pase a una tabla de la base datos llamada pedidos y hay es donde tengo las dudas, he intentado pasar los datos de la session carrito a la base de datos pero no me aclaro y me da un fallo de se espera un objeto en la linea de "tabla3.open sql2,conexion,3,3".

Básicamente creo que lo que no entiendo es el funcionamiento del objeto carrito o la variable de sesión carrito y como puedo sacar los datos de ahí y meterlos en la tabla de pedidos, si puedieráis darme alguna pista de por donde empezar os lo agradecería mucho.

Tampoco tengo demasiado claro como hacer para que la tabla de Pedidos esté bien, es decir entiendo que debe tener:

- idpedido = autonúmerico
- idusuario = texto
- total = numérico (gasto total de ese pedido)
- fecha = obtenida con date() en ASP
- hora = obtenida con time() en ASP

Pero aparte de estos datos, ¿cómo hago para que aparezca el detalle de la compra desglosado? Es decir cuantas unidades y de que producto, podría crear 3 campos de cada producto: idproducto, precio y unidades pero supongo que no será la forma correcta de hacerlo.

Este es el código de la página de un producto:

Código asp:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Tienda</title>
  6. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  7. <link href="/estilos/estilos.css" rel="stylesheet" type="text/css" />
  8. </head>
  9.  
  10. <body>
  11. <%
  12. Sub MostrarCatalogo
  13. Set conexion = Server.CreateObject("ADODB.Connection")
  14. Set tabla = Server.CreateObject("ADODB.recordset")
  15.  
  16. conexion.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0; Data Source="&server.MapPath("../db/Tienda.mdb")
  17.  
  18.  sql = "Select * from Productos where Idproducto =" & request("id")
  19.     tabla.open sql, conexion
  20.     Dim usuario
  21.     Dim nombre
  22.     usuario = session("usuario")
  23.     %>
  24.    
  25. <% if (usuario = "ok") then
  26.     nombre = session("user")%>
  27. <table width="960" border="0" align="center" cellpadding="0" cellspacing="0">
  28.   <tr>
  29.     <td height="31" align="right"><span style="color:#FFFFFF;font-weight:bold">Hola <%=nombre%></span><img src="http://www.forosdelweb.com/iconos/carrito.gif" alt="" width="16" height="13" hspace="5" border="0" align="absmiddle" /><a href="http://www.forosdelweb.com/tienda/index.htm" target="_blank" >Tienda</a> <a href="desconectar.asp?id=1&pag=prod1" >Cerrar sesión</a></td>
  30.   </tr>
  31. <% else %>
  32. <table width="960" border="0" align="center" cellpadding="0" cellspacing="0">
  33. <tr>
  34.     <td height="31" align="right"><img src="http://www.forosdelweb.com/iconos/carrito.gif" alt="" width="16" height="13" hspace="5" border="0" align="absmiddle" /><a href="http://www.forosdelweb.com/tienda/index.htm" target="_blank" >Tienda</a></td>
  35.   </tr>
  36. <% end if%>  
  37.   <tr>
  38.     <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
  39.       <tr>
  40.         <td align="right" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#77786A">
  41.           <tr>
  42.  
  43.             <td height="115" align="left" valign="bottom"><br />              
  44.               <table border="0" cellspacing="0" cellpadding="10">
  45.                 </table></td>
  46.           </tr>
  47.  
  48.         </table></td>
  49.       </tr>
  50.       <tr>
  51.         <td align="center" bgcolor="#757668"><table width="920" border="0" cellpadding="0" cellspacing="0" bgcolor="#000000">
  52.           <tr>
  53.             <td><table width="920" border="0" cellspacing="10" cellpadding="0">
  54.               <tr>
  55.                 <td align="left"><img src="<%=tabla.fields("foto")%>" />                  <table width="420" border="0" cellspacing="0" cellpadding="10">
  56.  
  57.                   <tr valign="top">
  58.                     <td><%=tabla.fields("nombre")%><br /></td>
  59.                     </tr>
  60.                  
  61.                 </table>                  
  62.                 <font color="#FFFFFF"><br />
  63.                   </font>
  64. <% if (usuario = "ok") then
  65.     nombre = session("user")%>
  66.                   <table border="0" cellpadding="10" cellspacing="0" bgcolor="#5C5C4C">
  67.                     <tr>
  68.                       <td><font color="#FFFFFF">Precio : <strong><%=tabla.Fields("precio")%></strong>&euro;</font></td>
  69.                       <td bgcolor="#999966" ><img src="http://www.forosdelweb.com/../imag/ico-carrito.gif" alt="" width="16" height="13" /> <a href="prod1.asp?ac=meter&prod=<%=tabla.Fields("Idproducto")%>&id=1" target="_blank">Comprar</a></td></tr>
  70. </table>      
  71. <% else %>
  72. <table border="0" cellpadding="10" cellspacing="0" bgcolor="#5C5C4C">
  73.                     <tr>
  74.                       <td><font color="#FFFFFF">Precio : <strong>70</strong>&euro;</font></td>
  75.                       <td bgcolor="#999966"><img src="http://www.forosdelweb.com/iconos/carrito.gif" alt="" width="16" height="13" /> <a href="http://www.forosdelweb.com/tienda/index.htm" target="_blank">Comprar</a></td>
  76.                     </tr>
  77.                   </table>
  78. <% end if%>                                        
  79.  <font color="#FFFFFF">&nbsp; </font></td>
  80.               </tr>
  81.             </table></td>
  82.           </tr>
  83.         </table></td>
  84.       </tr>
  85.       <tr>
  86.  
  87.         <td align="center" bgcolor="#757668">&nbsp;</td>
  88.       </tr>
  89.     </table></td>
  90.   </tr>
  91. </table>
  92. </body>
  93. </html>              
  94.                      
  95. <%  tabla.close
  96. End sub
  97.    
  98. ''''''''''''''''''''''''''''''''''''''''SHOP''''''''''''''''''''''''''''''''''''''''''''''
  99.  
  100. Sub MostrarCarrito'*********************************************************
  101.  
  102. Dim tabla, tabla2, SQL
  103. Dim clave
  104. Dim gastos  
  105. Dim total, subtotal
  106. 'gastos=2500 '
  107. gastos=0
  108. total=0
  109. subtotal=0
  110. Set tabla=Server.CreateObject("ADODB.Recordset")
  111. %>
  112.     <TABLE BORDER="1" CELLPADDING="1" CELLSPACING="1">
  113.     <TR>
  114.     <TD>Artículo</TD>
  115.     <TD>Cantidad</TD>
  116.     <TD>Precio/unidad</TD>
  117.     <TD>Quitar del carrito</TD>
  118.     <TD>Total</TD>  
  119.     </TR>
  120. <%
  121. For Each clave In carrito
  122. subtotal=0      
  123. SQL="SELECT * FROM Productos WHERE IdProducto="&clave&";"
  124. Set tabla=conexion.Execute(SQL)
  125. %>
  126.     <TR>
  127. <TD><%=tabla.Fields("Nombre")%></TD>
  128.     <TD><%=carrito(clave)%></TD>
  129.     <TD><%=tabla.Fields("Precio")%></TD>
  130.     <TD><A HREF="prod1.asp?ac=sacar&prod=<%=clave%>&cant=1&id=1">Quitar Uno</A>
  131.      <A HREF="prod1.asp?ac=sacar&prod=<%=clave%>&cant=<%=carrito(clave)%>&id=1">Quitar Todos</A>
  132.     </TD>
  133. <%
  134. subtotal=CSng(FormatNumber(carrito(clave))*tabla.Fields("Precio"))
  135. total=total+subtotal
  136. %>
  137.     <TD><%= subtotal %></TD>
  138.     </TR>
  139. <%
  140. Next
  141. If carrito.Count > 0 Then
  142. tabla.Close
  143. Set tabla=Nothing
  144. End If
  145. %>
  146.     <TR>
  147.     <TD COLSPAN=4>Gastos de envío</TD>
  148.     <TD>
  149.     <%
  150.     If total=0 Then
  151.         Response.Write("0")    
  152.     Else
  153.         Response.Write(gastos)
  154.     End If
  155.     %>
  156.     </TD>
  157.     <TR>
  158.     <TD COLSPAN=4><B>Total:</B></TD>
  159.     <TD>
  160.     <%if total=0 Then
  161.         Response.Write("0")
  162.     Else
  163.         Response.Write(total+gastos)
  164.     End If
  165.     %>  
  166.     </TD>
  167.     </TABLE>
  168. <%
  169. If accion<>"fin" Then
  170. %>
  171.     <center>
  172.     <A HREF=prod1.asp?id=1>Seguir mirando</A> / <A HREF=prod1.asp?ac=fin&id=1>Pasar por caja</A>
  173.     </center>
  174. <%
  175. End If
  176. End Sub'********************************************************************
  177.  
  178.  
  179. Sub MeterArticulo (id)'******************************************************
  180.  
  181. If carrito.Exists(id) Then
  182. carrito(id)=carrito(id)+1
  183. Else
  184. carrito.Add id, 1
  185. End If
  186. Response.Write("Se ha añadido el artículo al carrito<br>")
  187. End Sub'********************************************************************
  188.  
  189.  
  190. Sub SacarArticulo (id, cantidad)'*******************************************
  191.  
  192. If Not carrito.Exists(id) Then
  193. Response.Write("¡No tienes eso en tu carrito!")
  194. Else
  195. If cantidad>1 Then
  196. carrito.Remove(id)
  197. Else
  198. carrito(id)=carrito(id)-1
  199. If carrito(id)<1 Then
  200. carrito.Remove(id)
  201. End If
  202. End If
  203. End If
  204. End Sub'********************************************************************
  205.  
  206. Sub PasarPorCaja'***********************************************************
  207.  
  208. %>
  209.     <H2>¡Gracias por su compra!</H2>
  210. <%
  211. MostrarCarrito
  212. %>
  213. En breve te llegarán a tu casa los productos. Gracias por comprar . <br>
  214. (En un caso real aquí pediríamos los datos, etc.)
  215. <% 
  216.  
  217. Dim tabla3, sql2
  218.  
  219. sql2 = "Select * from Pedidos"
  220.         tabla3.open sql2,conexion,3,3      
  221.         tabla3.addnew
  222.         tabla3.fields("Idusuario") = session("idusuario")
  223.         tabla3.update
  224.         tabla3.Close
  225.         Set tabla3=Nothing
  226.  
  227.  
  228. Set Session("carrito")=Nothing
  229.  
  230.  
  231. End Sub'********************************************************************
  232.  
  233.  
  234. Dim carrito
  235. Dim accion
  236. Dim producto
  237. Dim cant
  238. Dim conexion
  239. %>
  240.  
  241. <%
  242. If IsObject(Session("carrito")) Then
  243.     Set carrito=Session("carrito")
  244. Else
  245.     Set carrito=Server.CreateObject("Scripting.Dictionary")
  246. End If
  247. accion=CStr(Request.QueryString("ac"))  
  248. producto=CInt(Request.QueryString("prod"))  
  249. cant=CInt(Request.QueryString("cant"))  
  250. Select Case accion
  251. Case "ver"
  252. MostrarCarrito
  253. Case "meter"
  254. MeterArticulo Producto
  255. MostrarCarrito
  256. Case "sacar"
  257. Call SacarArticulo (producto, cant)
  258. MostrarCarrito
  259. Case "fin"
  260. PasarPorCaja
  261. Case Else
  262. MostrarCatalogo
  263. End Select
  264. Set Session("carrito")=carrito
  265. conexion.Close
  266. Set conexion=Nothing
  267.  
  268.  
  269. ''''''''''''''''''''''''''''''''''''''''SHOP''''''''''''''''''''''''''''''''''''''''''''''    
  270. %>

Este es link a la página con el archivo original:
http://www.aspfacil.com/codigo/shop.asp?ac=ver
  #2 (permalink)  
Antiguo 30/01/2009, 14:52
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Creo que con esto lograrás lo que buscas

Código asp:
Ver original
  1. Sub MostrarCarrito'*********************************************************
  2. .....
  3.  
  4. <%
  5. subtotal=CSng(FormatNumber(carrito(clave))*tabla.Fields("Precio"))
  6. total=total+subtotal
  7. %>
  8.     <TD><%= subtotal %></TD>
  9.     </TR>
  10. <%
  11.  
  12.  
  13. if accion<>"fin" then ' CREA OTRA TABLA (o como tu veas)
  14. else
  15. SQL="INSERT INTO Compras (Articulo, ....) values ('"&oRs.Fields("Nombre")&"', ......)"
  16. oConn.Execute(SQL)
  17. end if
  18.  
  19.  
  20. Next
  21. If carrito.Count > 0 Then
  22. tabla.Close
  23. Set tabla=Nothing
  24. End If
  25. %>
  26.  
  27. ...

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 31/01/2009, 12:54
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola Adler,

Gracias por la ayuda, he intentado hacer algo parecido a lo que tú me dices, eso creo al menos. He invertido los valores en la sentencia SQL por si era algo de eso pero da el mismo error en la línea de "SQL="INSERT INTO Pedidos ('"&oRs.Fields("IdProducto")&"') values ('"&clave&"')" me dice: "Se requiere un objeto: 'oRs'" pero el objeto oRs ya está declarado ya que lo he creado primero aquí:

Código asp:
Ver original
  1. <%
  2. Sub MostrarCatalogo
  3. Set tabla = Server.CreateObject("ADODB.recordset")
  4. Set oRs = Server.CreateObject("ADODB.recordset")
  5. %>

Y luego aquí:

Código asp:
Ver original
  1. <%
  2. Dim carrito
  3. Dim accion
  4. Dim producto
  5. Dim cant
  6. Dim conexion
  7. Dim oRs
  8. %>

Así es como he dejado esta parte del código:

Código asp:
Ver original
  1. <%
  2. subtotal=CSng(FormatNumber(carrito(clave))*tabla.Fields("Precio"))
  3. total=total+subtotal
  4. %>
  5.     <TD><%= subtotal %></TD>
  6.     </TR>
  7. <%
  8. if accion<>"fin" then
  9. else
  10. SQL="INSERT INTO Pedidos ('"&oRs.Fields("IdProducto")&"') values ('"&clave&"')"
  11. Set oRs=conexion.Execute(SQL)
  12. end if
  13.  
  14. Next
  15. If carrito.Count > 0 Then
  16. tabla.Close

La verdad es que tengo un lío considerable con el tema de las SQLs y todo eso.
  #4 (permalink)  
Antiguo 31/01/2009, 14:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Para darte la respuesta que ocupaba me base en el original

Hazlo asi

Código asp:
Ver original
  1. SQL="INSERT INTO Pedidos ('"&tabla.Fields("IdProducto")&"') values ('"&clave&"')"
  2. conexion.Execute(SQL)

PD: No hace falta un recordset

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 31/01/2009, 23:46
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

y por que no vas metiendo los carritos en una base de datos desde que se selecciona? asi no cargas el server con variables de sesion?

ademas, si el usuario, ya registrado se tiene que retirar despues podria seguir con su compra, de la otra manera no...digo
  #6 (permalink)  
Antiguo 01/02/2009, 08:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Cita:
Iniciado por sjam7 Ver Mensaje
y por que no vas metiendo los carritos en una base de datos desde que se selecciona? asi no cargas el server con variables de sesion?

ademas, si el usuario, ya registrado se tiene que retirar despues podria seguir con su compra, de la otra manera no...digo


¿Y si el usuario se retracta de su compra? No me parece tan sencillo como lo
pintas, para que el usuario pudiera seguir comprando en otro momento y sumar su nueva compra a la antigua y no cobrarle de nuevo los gastos de envio.
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 01/02/2009, 13:57
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola a ambos,

Lo primero, gracias Adler ya lo he probado adaptandolo a mi version y funciona perfectamente.

Sobre la forma de hacer las cosas sjam7, pensé en su día en un usar una base de datos temporal que se borrase si no se hacía la compra y pasasen los datos a una base de datos definitiva si se concreta la compra pero creo es mejor usar variables de sesión y que en la tabla de pedidos sólo se guarden pedidos definitivos.

De todas formas hay cosas que no se si son fallos de Access de ASP o probablemente míos, en la tabla de pedidos quiero pasar la fecha actual y la hora del pedido, al menos la fecha para poder ordenar los pedidos por fecha y esas cosas. El caso es que pongo una variable fecha y la igualo a date() y cuando la meto en el campo de la base de datos de Access en un campo fecha/hora tipo fecha corta me pone siempre de fecha 30/12/1899. Si uso un document.write(date()) en el archivo de asp si que me saca bien la fecha.

Otro tema que me tiene un poco preocupado es el de la seguridad, de momento estoy usando una base de datos de Access porque tampoco se muy bien como hacerlo con SQL Server pero no se como hacer que la gente no pueda bajarse la base datos si averigua la ruta al mdb. Si puede poner alguna especie de usuario y contraseña o algo así.
  #8 (permalink)  
Antiguo 02/02/2009, 06:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Cita:
Iniciado por haga41 Ver Mensaje
De todas formas hay cosas que no se si son fallos de Access de ASP o probablemente míos, en la tabla de pedidos quiero pasar la fecha actual y la hora del pedido, al menos la fecha para poder ordenar los pedidos por fecha y esas cosas. El caso es que pongo una variable fecha y la igualo a date() y cuando la meto en el campo de la base de datos de Access en un campo fecha/hora tipo fecha corta me pone siempre de fecha 30/12/1899. Si uso un document.write(date()) en el archivo de asp si que me saca bien la fecha.
f = Date()
SQL="INSERT INTO Pedidos ('"&tabla.Fields("IdProducto")&"', fecha) values ('"&clave&"', #"&f&"#)"


Cita:
Iniciado por haga41 Ver Mensaje
Otro tema que me tiene un poco preocupado es el de la seguridad, de momento estoy usando una base de datos de Access porque tampoco se muy bien como hacerlo con SQL Server pero no se como hacer que la gente no pueda bajarse la base datos si averigua la ruta al mdb. Si puede poner alguna especie de usuario y contraseña o algo así.
Mira esta liga, quizás te ayude

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 02/02/2009, 17:04
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola Adler,

Gracias de nuevo, lo de la fecha funciona perfecto como me los has puesto tanto para la fecha como para la hora, supongo que esas almoadillas serviran para la limpiar los valores del objeto date y time o algo así.

Sobre lo otro he estado mirando los ejemplos de la web que me has dado y he probado uno de ellos pero no estoy seguro de si lo entiendo bien, he cambiado en el archivo SHOP.asp esto:


Código asp:
Ver original
  1. <%
  2. Set oConn=Server.CreateObject("ADODB.Connection")
  3. oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data\tienda.mdb")
  4. %>

Código asp:
Ver original
  1. <%
  2. Set oConn=Server.CreateObject("ADODB.Connection")
  3.  
  4. Dim path_Bd As String
  5.    
  6.   path_Bd = App.Path & "data\Tienda.mdb"
  7.    
  8.   oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _
  9.           path_Bd & ";" & "User Id=admin;Password="%>

Y me da un error de "Error de compilación de Microsoft VBScript (0x800A0401)
Se esperaba un final de instrucción" en la línea del Dim path_Bd As String. Pero la duda que tengo es si el User Id y el Password son valores que yo declaro en ese momento on valores de la base de datos, entiendo que son valores que declaro en ese momento no? He probado a declarar Dim path_Bd sin el "As String"pero entonces me da un erro de "se requiere un objeto" en la línea de "path_Bd = App.Path & "\data\Tienda.mdb". He intentado probar de otras formas que he encontrado en otras webs pero al probarlo local no sabía que poner cuando tenía que poner el Server y también me fallaban.
  #10 (permalink)  
Antiguo 03/02/2009, 05:22
 
Fecha de Ingreso: septiembre-2004
Mensajes: 76
Antigüedad: 19 años, 9 meses
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola tengo una pregunta ya para rizar el rizo.
Una vez que esta finalizado el pedido como puedes enviarlo por e-mail?, es decir que el usuario y el administrador de la tienda virtual reciba una copia del pedido.
Muchas gracias
  #11 (permalink)  
Antiguo 03/02/2009, 05:53
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola, haga41

Prueba con

Código sql:
Ver original
  1. SET oConn = Server.CreateObject("ADODB.Connection")
  2. oConn.OPEN "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("data\Tienda.mdb")&"; Jet OLEDB:Database Password=Adler;"

Pero primero has de ponerle a la bd una contraseña, probando, ya que hace años que no trabajo con Access, sería

Archivo --> Abrir ---> Seleccionas la bd ---> En el botón Abrir, pinchas en la flecha. Se te abrirá un menú. Escoges Abrir en Modo Exclusivo

Essfgt

Cuando sea igual a "fin" además de hacer el insert, añade esta función para envio de correos

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 03/02/2009, 17:19
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola Adler,

De esa forma va perfecto, muchas gracias.
Después de hacer lo que has puesto de abrir la base datos en modo exclusivo lo que hacer es ir al menú de seguridad en la parte de arriba y elegir: Establecer contraseña para la base de datos. Con eso ya funciona todo perfectamente.

Haciendo más pruebas con el carrito me ha salido una cosa que no se como arreglar, he estado buscando por ahí la forma pero no he encontrado una forma que me lo solucione aún, quiero que la variable de session carrito se borre o se ponga a cero cuando el usuario cierra el navegador, cuando cierra sesión la variable se pone a cero y se borra su valor tanto en Firefox como en Explorer pero al cerrar navegador la variable de sesión sólo se me borra en Explorer en Firefox sigue manteniendo su valor.
Según he leido creo que tendría que borrar la caché para poder borrar la variable de sesión de Firefox pero no se si puedo hacerlo o sólo puede hacerlo el usuario.

Este es mi archivo Global.asa que tengo en el directorio raíz, lo de Response.expires = 0 lo he puesto para intentar qeu borre la caché pero no me funciona.

Código asp:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" RUNAT="SERVER"%>
  2. session_onStart().
  3.  
  4. sub session_onStart()
  5. session("num_prod")=0
  6. session("carrito")=0
  7. session("usuario")="ko"
  8. Response.expires = 0
  9.  
  10. session_onEnd().
  11.  
  12. sub session_onEnd()
  13. session("num_prod")=0
  14. session("carrito")=0
  15. session("usuario")="ko"
  16. Response.expires = 0
  17.  
  18. </SCRIPT>
  #13 (permalink)  
Antiguo 03/02/2009, 21:10
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

es que se supone que una sesion puede seguir aunque se cierre el navegador, si tienes configurado para que la sesion dure 20min esos 20 min son a partir de la ultima actividad en el servidor, incluyendo cerrar el navegador, si lo tienes configurado con mas tiempo pues durara mas.

y de lo de usar una base de datos...no es tan dificil, es mas, yo asi lo uso y se me hace mas facil controlar, y usando el mismo global.asa puedes hacer que en lugar de borrar datos al terminar la sesion borres los datos en la tabla, pero en fin, solo es un comentario, cada quien
  #14 (permalink)  
Antiguo 04/02/2009, 07:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Global.asa está bien pero como dices que quieres detectar el cierre del navegador, has de hacerlo del lado del cliente

Hechale un vistazo a este articulo
, el autor dice que funciona

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #15 (permalink)  
Antiguo 06/02/2009, 11:38
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola sjam7,

La verdad es que al principio pensaba hacer algo parecido a lo que decías tú, es decir que las compras en vez de guardarse en variables de sesión se guarden en una base de datos, lo que pasa es que lo que yo había pensado en tener 2 tablas diferentes en esa base de datos una tabla llamada por ejemplo "temporal" en la que se irían almacenando los elementos que compra el usuario y otra llamada "compras", "pedidos" o algo así que sería la tabla en la que se quedarían grabadas las compras definitivas, lo que pasa es que no tengo muy claro como lo haría.

Según tú, en el global.asa podría vaciar la tabla "temporal" tanto al cerrar sesión como al cerrar navgador ¿no?

Adler

Gracias por el enlace, he intentado probarlo pero aún me queda comprenderlo bien, el Ajax y yo todavía no nos entendemos mucho.

Creo que intentaré hacerlo funcionar así pero también intentaré crear otra versión con tablas temporales. No e la verdad es que estoy hecho un lío, no pensaba que el Firefox me iba a dar tantos problemas con las variables de sesión.
  #16 (permalink)  
Antiguo 06/02/2009, 13:31
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Cita:
Iniciado por haga41 Ver Mensaje
No e la verdad es que estoy hecho un lío, no pensaba que el Firefox me iba a dar tantos problemas con las variables de sesión.
¿Qué problema tienes usar FF y sesiones? Yo llevo años y no he tenido ningún problema
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #17 (permalink)  
Antiguo 07/02/2009, 13:34
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola Adler,

Creo que seguramente he hecho tantas pruebas que al final me he equivocado, porque ahora estoy probando a cerrar Firefox sin haber cerrado sesión y al volver a abrir Firefox vacia correctamente el carrito juraría que nates no lo hacía pero me habré equivocado.

Lo que me he dado cuenta aunque probablemente sea rizar el rizo y algo incontrolable es que si usando Firefox tengo abiertas varias pestañas y en una tengo la tienda online con el carrito de la compra con cosas dentro si cierro esa pestaña y por tanto la tienda y más tarde vuelvo a abrir una nueva pestaña y acceder a la tienda después de acceder a la tienda de nuevo los objetos siguen en el carrito, creo que es algo muy rebuscado pero bueno no se porque me ha dado por probarlo.
  #18 (permalink)  
Antiguo 12/02/2009, 04:41
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola otra vez,

Ya siento molestar pero he tenido un problema instalando SQL Server y he tenido instalar el XP de cero otra vez. El caso es que después de instalar el IIS y el Dreamweaver he vuelto a crear el sitio y he puesto la última copia de seguridad que tenía, pero al haber metido la contraseña a la base de datos de Access no me dejaba finalizar la compra, ingresar los datos den la tabla. El caso es que me he puesto a dar permisos a los usuarios en la pestaña de seguridad y ahora me falla el global.asa.

Me dice este error:

Páginas Active Server, ASP 0137 (0x80004005)
Cada bloque Script debe ser uno de los procedimientos Global.asa autorizados. Las directivas Script con &lt;% ... %&gt; no están autorizadas dentro del archivo global.asa. Los nombres de procedimientos autorizados son Application_OnStart, Application_OnEnd, Session_OnStart o Session_OnEnd.
/carro/global.asa, línea 1

Este es el global.asa

<%@LANGUAGE="VBSCRIPT" RUNAT="SERVER"%>
session_onStart().

sub session_onStart()
session("num_prod")=0
session("carrito")=0
session("usuario")="ko"
Response.expires = 0

session_onEnd().

sub session_onEnd()
session("num_prod")=0
session("carrito")=0
session("usuario")="ko"
Response.expires = 0

</SCRIPT>

El caso es que si quito el global.asa me finaliza las compras perfectamente aunque claro.

He visto este post tuyo Adler, porque también me pasaba ese problema antes de que me pasase lo del global.asa y he hecho lo que hiciste tú pero supongo que habré tocado algun permiso que no debía.

¿Alguna idea de donde la he podido liar?
  #19 (permalink)  
Antiguo 12/02/2009, 06:13
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola

Bueno he estado desconectado unos días, malditos exámenes

Cita:
Iniciado por haga41 Ver Mensaje
Lo que me he dado cuenta aunque probablemente sea rizar el rizo y algo incontrolable es que si usando Firefox tengo abiertas varias pestañas y en una tengo la tienda online con el carrito de la compra con cosas dentro si cierro esa pestaña y por tanto la tienda y más tarde vuelvo a abrir una nueva pestaña y acceder a la tienda después de acceder a la tienda de nuevo los objetos siguen en el carrito, creo que es algo muy rebuscado pero bueno no se porque me ha dado por probarlo.
Como tú dices es rizar el rizo. No creo que tenga mucha importancia ya que el usuario tiene la opción de borrar todos los artículos de la compra anterior. Además este caso que planteas cuanta veces se puede dar ....

En cuanto a tu otro problema quitale la @

<%LANGUAGE="VBSCRIPT" RUNAT="SERVER"%>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #20 (permalink)  
Antiguo 15/02/2009, 16:24
 
Fecha de Ingreso: junio-2008
Mensajes: 145
Antigüedad: 16 años
Puntos: 0
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola Adler,

Ya siento que hayas estado liado con exámenes, espero que te hayan salido bien.

Lo de las pestañas como tú dices es ser demasiado quisquilloso así que de momento me olvido.

Lo otro al final era un tema de permisos, poniendo "No compartido" en las opciones de carpeta de "Uso compartido de web" parece que funciona pero gracias por darme otra solución.
  #21 (permalink)  
Antiguo 21/02/2009, 07:14
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 5 meses
Puntos: 126
Respuesta: Dudas sobre un carrito pasando datos a bases de datos al acabar la compra

Hola, haga41

Enhorabuena
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 23:09.