A sua Loja Virtual - Criando a cesta de Compras
Após o usuário ser identificado, a cada compra ele é direcionado para sua cesta de compras onde pode ver a posição atual de suas compras.
Para criar uma loja virtual usando ASP .NET acompanhe o curso no link : ASP .NET - Criando um site completo com carrinho de compras (Curso)
|
A figura abaixo exibe a janela da cesta de compras. Vejamos a janela gerada pelo arquivo comprar.asp em detalhes:
Figura 1.0 - Cesta de compras - comprar.asp |
Após o Nome da Empresa e a indicação de CopyRight , o nome do usuário aparece após o título - Cesta de Compras. A seguir temos uma tabela onde são exibidos os seguintes itens:
figura 2.0 - O resultado da exclusão do primeiro item |
Perceba que o o total da cesta foi recalculado.
figura 3.0 - Alterando a quantidade de um item |
Observe que o sistema recalcula o valor do total do item e o valor total da cesta de compras.
Vamos agora ver o código que esta por trás de todo esse processamento.
O código do arquivo comprar.asp é dado a seguir:
<%@ Language=VBScript %>
<%=.Fields("PedidoID")%>"<strong><font face="Verdana" size="1">Excluir</font></strong></a></p> |
'Declara Variáveis Dim conntemp Dim rsPedidos Dim totalgeral Dim PedidoID Dim SQL Dim urlimagem Dim quantidade Dim campo |
'Se o cliente ainda nao foi identificado chama a página de identificacao If ( Session("ClienteID") = 0 ) Then Response.Redirect "Identifica.asp?Tipo=NOVO" End If |
'-------------------------------------- 'Abre conexão com o banco de dados '-------------------------------------- Sub Abre_Conexao Set conntemp = Server.CreateObject("ADODB.Connection") conntemp.Open Application("Conecta_bd") End Sub '-------------------------------------- 'Fecha conexão com o banco de dados '-------------------------------------- Sub Fecha_Conexao conntemp.Close Set conntemp = Nothing End Sub |
'--------------------------------------------- 'Processa alteracao de quantidades do pedido '--------------------------------------------- Sub Processa_Alteracao Conntemp.Execute("Delete * from Itens_Pedidos where PedidoID = " & Session("PedidoID")) for each campo in Request.form if Request.Form(campo)<>"0" then Conntemp.Execute("INSERT INTO Itens_Pedidos (PedidoID,ProdutoID,Quantidade) values (" & Session("PedidoID") & "," & campo & "," & Request.Form(campo) & ")") end if next End Sub |
Conntemp.Execute("Delete * from Itens_Pedidos where PedidoID = " & Session("PedidoID"))
Conntemp.Execute("INSERT INTO Itens_Pedidos
(PedidoID,ProdutoID,Quantidade) values (" & Session("PedidoID") & "," &
campo & "," & Request.Form(campo) & ")")
Abrimos uma conexão ( Abre_Conexao ) e verificamos se houve um pedido para alterar a quantidade de itens dos pedidos ( if Request.Form <> "" then Processa_Alteracao End if )
A seguir montamos a string SQL onde selecionarmos os itens dos pedidos para o Cliente idenficado na sessão:
'pega os itens da cesta de compras sql= "SELECT pedidos.pedidoId, itens_pedidos.itemID, itens_pedidos.ProdutoID, produtos.nome, produtos.valor, itens_pedidos.quantidade, produtos.urlimagem" sql= sql & " FROM (itens_pedidos INNER JOIN pedidos ON itens_pedidos.PedidoID = pedidos.pedidoId) INNER JOIN produtos ON itens_pedidos.ProdutoID = produtos.ProdutoID" sql= sql & " WHERE pedidos.fechado=False" sql= sql & " AND pedidos.clienteId=" & clng(session("ClienteID")) |
Abrimos o Recordset do pedido para o cliente usando a string SQL montada anteriormente
'Abre o Recordset de Pedidos do Cliente Set rsPedidos = conntemp.Execute (SQL) ', , adCmdText) |
Fazemos a identificação do Pedido : Se não há nenhum pedido ainda atribuímos o valor zero, caso contrário definimos o código do pedido para a sessão atual. A seguir incluímos o arquivo ADOVBS.INC com as constantes ADO.
identifica o pedido if ( rsPedidos.EOF ) then PedidoID = 0 Else PedidoID = rsPedidos("PedidoID") session("PedidoId")=clng(rsPedidos("PedidoID")) End If %> <!-- #Include file="ADOVBS.INC" --> |
Exibimos o nome do cliente que esta efetuando as compras:
<td width="689"><b><font face="Verdana" color="#008080" size="2">Cesta de Compras - <%=Session("ClienteNome")%></font></b>
Se não existir nenhum item na cesta do exibe mensagem :
<% if rsPedidos.EOF then response.write(" ==> Não existe nenhum item em sua cesta de compras !")%>
A seguir montamos o formulário exibindo os itens do pedido :
<form method="POST" action="comprar.asp"> <table border="1" width="692" cellspacing="1"> <tr> <td width="82"> <p align="center"> <font face="Verdana" size="1">Excluir Item</font> </p> </td> <td width="357"> <p align="center"><font face="Verdana" size="1" color="#000000"> Nome do Produto</font></td> <td width="87"> <p align="center"><font face="Verdana" size="1" color="#000000">Preço Unitário</font></td> <td width="67"> <p align="center"><font face="Verdana" size="1" color="#000000">Qtde</font></td> <td width="81"> <p align="right"><font face="Verdana" size="1" color="#000000">Total</font></td> </tr> <tr> totalgeral=0.0 |
Percorremos o Recordset do pedido( with rspedidos) até o final ( do while not .EOF ) e montamos com os dados do existentes no Recordset a cesta de compras item a item do formulário , para cada coluna. Assim temos:
1-) Primeira Columa : Excluir Item - Ação a ser executada quando o usuário clicar no Link - Excluir:
href="compre.asp?operacao=excluir&ItemID=<%=.Fields("itemID")%>&PedidoID=_
<%=.Fields("PedidoID")%>"
O arquivo compre.asp será acionado com os parâmetros indicando o no. do item (ItemID=<%=.Fields("itemID") e o código do Pedido ( PedidoID=<%=.Fields("PedidoID")%>")
2-) Segunda Coluna: Nome do Produto - Exibe o nome do produto comprado:
<td width="357"><font face="Verdana" size="1"><%=.fields("nome")%> </font></td>
3-) Terceira Coluna : Preço Unitário - Exibe o preço unitário do produto:
<p align="right"><font face="Verdana" size="1"><%=formatCurrency(.fields("valor"))%> </font> </td>
4-) Quarta Coluna : Quantidade - Exibe a quantidade comprada do produto:
<p align="center"><font face="Verdana" size="1"><input type="text" name="<%=.fields("ProdutoID")%>" size="3" maxlength="3" value="<%=.fields("quantidade")%>"
Observe que relacionamos a quantidade ao código do produto para permitir sua identificação.
5-) Quinta Coluna : Total - Exibe o valor total comprado para este produto:
<p align="right"><font face="Verdana" size="1"><%=formatnumber((.fields("quantidade")* .fields("valor")),2)%>
Note que obtemos o valor total multiplicando a quantidade pelo valor.
5-) Finalmente acrescentamos o valor do pedido(.Fields("quantidade")* .Fields("valor")) a variável totalgeral e movemos o ponteiro para o próximo registro do recordset(.movenext) . Após percorrer todo o Recordset a variável totalgeral irá conter o valor total da cesta de compras.
<% totalgeral = totalgeral + .Fields("quantidade")* .Fields("valor")
.movenext
do while not .EOF
<%=.Fields("PedidoID")%>"<strong><font
face="Verdana" size="1">Excluir</font></strong></a></p> |
Para encerrar associamos ao botão Continuar Compras (cont_cpra.gif) o código:
<p align="center"><b><font color="#FFFFFF" face="Verdana" size="2"><a href="http://macorati/loja/index.htm"><img border="0" src="IMAGENS/cont_cpra.gif">Con</a>
Quando o botão for acionado o usuário será levado a página inicial ( index.htm )
e ao botão Encerrar Compras(enc_cpra.gif) o código:
<p align="center"><a href="http://macorati/loja/destino.asp"><img border="0" src="IMAGENS/enc_cpra.gif"></a>
que quando acionado irá acionar o arquivo destino.asp que exibirá os dados do destinatário do pedido. Ver abaixo:
figura 4.0 - O formulário gerado pelo arquivo destino.asp |
O arquivo destino.asp apenas exibe o nome do destinatário do pedido . Seu código é exibido a seguir:
<%@ Language=VBScript %> <% Option Explicit 'Declara Variáveis Dim conntemp Dim SQL Dim rsclientes 'Se o cliente ainda nao foi identificado chama a página de identificacao If ( Session("ClienteID") = 0 ) Then Response.Redirect "Identifica.asp?Tipo=NOVO" End If '-------------------------------------- 'Abre conexão com o banco de dados '-------------------------------------- Sub Abre_ConexaoBD Set conntemp = Server.CreateObject("ADODB.Connection") conntemp.Open Application("Conecta_bd") End Sub '-------------------------------------- 'Fecha conexão com o banco de dados '-------------------------------------- Sub Fecha_ConexaoBD conntemp.Close Set conntemp = Nothing End Sub Abre_ConexaoBD SQL = "Select * from Clientes Where ClienteID= " & session("ClienteID") set rsclientes = conntemp.Execute (SQL) %> <html> <head> <meta http-equiv="Content-Language" content="pt-br"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>Caixa</title> </head> <body link="#008080" vlink="#008080" alink="#008080"> <table border="0" width="698"> <tr> <TD bgcolor="#FFFFFF" width="689"> <p align="center"><b><font color="#008080" size="5" face="Verdana">JcmSoft - A sua Loja Virtual</font></b> </TD> </tr> <tr> <TD align=middle bgColor=#008080 width="689"> <p align="center"><B><FONT color=#FFFFFF face=arial size=-2>Copyright JcmSoft. Todos os direitos reservados</FONT></B></p> </TD> </tr> <tr> <td width="689"><b><font face="Verdana" color="#008080" size="4">Destinatário</font></b></td> </tr> </table> <form method="POST" action="caixa.asp" onsubmit="return checa_dados()" name="remessa"> <p><b><font face="Verdana" size="2" color="#008080">Endereço do Destinatário</font></b><font face="Verdana" size="1"> (Para alterar informe novos dados e clique no botão - <b>Confirma</b>)</font></p> <hr color="#008080" style="margin-top: -20"> <div align="left" style="width: 741; height: 293"> <table BORDER="0" CELLPADDING="0" CELLSPACING="0" height="194" width="741"> <tr> <td height="26" width="21"> <b><font face="Verdana" color="#008080" size="2">Nome:</font></b> </td> <td height="26" width="708"> <p><input type="text" name="nome" size="35" value="<%=rsclientes("ClienteNome")%>"></p> </td> </tr> <tr> <td height="26" width="21"> <p><b><font face="Verdana" color="#008080" size="2">Endereço:</font></b></p> </td> <td height="26" width="708"> <p><font face="Verdana"><input NAME="endereco" TYPE="text" SIZE="35" value="<%=rsclientes("ClienteEndereco")%>"></font></p> </td> </tr> <tr> <td height="27" width="21"> <p><b><font face="Verdana" color="#008080" size="2">Cidade:</font></b></p> </td> <td height="27" width="708"> <p><font face="Verdana"><input NAME="cidade" TYPE="text" SIZE="35" value="<%=rsclientes("ClienteCidade")%>" > </font></p> </td> </tr> <tr> <td height="24" width="21"> <p><b><font face="Verdana" color="#008080" size="2">UF:</font></b></p> </td> <td height="24" width="708"> <p><font face="Verdana"><input NAME="estado" TYPE="text" SIZE="2" maxlenght="2" value="<%=rsclientes("ClienteEstado")%>" </font></p> </font> </td> </tr> <tr> <td width="21" height="29"> <p><b><font face="Verdana" color="#008080" size="2">CEP:</font></b></p> </td> <td width="704" height="29"> <p><input NAME="cep" TYPE="text" SIZE="11" value="<%=rsclientes("ClienteCep")%>"></p> </td> </tr> <tr> <td width="725" height="33" colspan="2"> <hr> </td> </tr> <tr> <td width="229" height="33"> <p align="center"><input type="submit" value="Confirma" name="confirma"> </td> <td width="496" height="33"> <p align="right"><a href="http://macorati/loja/comprar.asp"><img border="0" src="IMAGENS/retorna.gif"></a> </td> </tr> </table> <% rsclientes.close set rsclientes=nothing Fecha_ConexaoBD %> </div> </form> </body> </html> <SCRIPT LANGUAGE="JavaScript"> <!--// function checa_dados() { if (document.remessa.nome.value.length == 0) { alert("Informe o nome do destinatário !"); document.remessa.nome.focus(); return false; } if (document.remessa.endereco.value.length == 0) { alert("Informe o endereço do destinatário !"); document.remessa.endereco.focus(); return false; } if (document.remessa.cidade.value.length == 0) { alert("Informe a cidade do destinatário !"); document.remessa.cidade.focus(); return false; } if (document.remessa.estado.value.length == 0) { alert("Informe o estado do destinatário !"); document.remessa.estado.focus(); return false; } if (document.remessa.cep.value.length == 0) { alert("Informe o Cep do destinatário !"); document.remessa.cep.focus(); return false; } return true; } //--> </SCRIPT> |
O arquivo basicamente faz o seguinte ao ser processado:
Abre_ConexaoBD SQL = "Select * from Clientes Where ClienteID= " & session("ClienteID") set rsclientes = conntemp.Execute (SQL) |
<form method="POST" action="caixa.asp" onsubmit="return checa_dados()" name="remessa">
rsclientes.close set rsclientes=nothing Fecha_ConexaoBD %> |
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET