Na página A o cliente escolhe o produto, que é processado pela página B que depois mostra a Cesta de Compras na página C. Porém sempre que vai para a página B eu tenho que apertar F5 para ele me mostrar corretamente qq alteração na Cesta de compras. Seja inclusão de um novo produto ou exclusão de um produto. Tá tudo funcionando certinho, só isto que está me deixando chateado por não saber o que acontece. Se alguém tiver a paciência de analizar os códigos eu agradeço.
Na página C eu tirei todos os comandos HTML para não deixar isto muito grande.
Página A (passa info do produto selecionado) http://xxxx/Compre.asp?operacao=incluir&quantidade=1&ProdutoID=9
Página B (Compre.asp)
<%@ Language=VBScript %>
<%
Option Explicit
Dim conntemp
'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
'Remove um Item da Cesta de Compras do cliente
Sub Excluir_Item
Dim SQL, rsItensPedidos, quantidade
quantidade=Request.querystring("quatde")
'se quantidade igual a zero entao exclui item e , se for o caso, o pedido
if quantidade = 0 then
SQL = "DELETE FROM itens_Pedidos"
SQL = SQL & " WHERE ItemId = " & Request.QueryString("ItemID")
conntemp.Execute (SQL)
' Verifica se tabela de Itens está vazia
' Se SIM, remove também o Pedido
SQL = "SELECT * FROM Itens_Pedidos, Pedidos"
SQL = SQL & " WHERE Pedidos.PedidoID = itens_pedidos.PedidoID"
SQL = SQL & " AND Pedidos.ClienteID = " & Session("ClienteID")
SQL = SQL & " AND Pedidos.fechado = False"
Set rsItensPedidos= conntemp.Execute (SQL)
'Verifica se tabela esta vazia
If ( rsItensPedidos.EOF ) Then
Limpar_Cesta
End If
'Fecha o Recordset de PedidosItens
rsItensPedidos.Close
Set rsItensPedidos = Nothing
else
'se a quantidade for maior que zero atualiza a tabela itens_pedidos
SQL = "UPDATE Itens_Pedidos SET quantidade = " & quantidade 'Request.Form("quantidade")
SQL = SQL & " WHERE ItemID = " & Request.QueryString("ItemID")
conntemp.Execute SQL ,, adCmdText
end if
End Sub
'Adiciona Item na Cesta
Sub Incluir_Item
Dim rsPedidos, PedidoID, rsItemPedidos, SQL, quantidade
quantidade = Request.querystring("quantidade")
if session("ClienteID") = 0 then
Response.Redirect "identificar.asp"
end if
'SQL seleciona os pedidos abertos
SQL = "SELECT PedidoID FROM Pedidos"
SQL = SQL & " WHERE ClienteID = " & Session("ClienteID")
SQL = SQL & " AND fechado = False"
Set rsPedidos = conntemp.Execute(SQL)
If rsPedidos.EOF Then
response.write "aqui"
' Se Pedido não existe, incluir pedido
rsPedidos.Close
Set rsPedidos = Nothing
'Monta instrucao SQL
SQL = "INSERT INTO Pedidos( ClienteID, dataPedido, fechado )"
SQL = SQL & " values "
SQL = SQL & " ( " & Session("ClienteID") & ",'" & formatdatetime(now(),vbshortdate) & "',False )"
conntemp.Execute SQL
'Pega o ID do pedido incluido p/os pedidos abertos
SQL = "SELECT PedidoID FROM Pedidos"
SQL = SQL & " WHERE ClienteID = " & Session("ClienteID")
SQL = SQL & " AND fechado = False"
Set rsPedidos = conntemp.Execute (SQL)
End If
'Guarda o ID do pedido
PedidoID = rsPedidos.Fields("PedidoID")
Session("PedidoId")=rsPedidos.Fields("PedidoID")
'Fecha o Recordset de Pedidos
rsPedidos.Close
Set rsPedidos = Nothing
'verifica se o produto ja foi incluido para este pedido
SQL = "SELECT PedidoID, ItemID , ProdutoID , Quantidade FROM Itens_Pedidos"
SQL = SQL & " WHERE PedidoID = " & PedidoID
SQL = SQL & " AND ProdutoID = " & request.Querystring("ProdutoID")
set rsItemPedidos = conntemp.Execute (SQL)
'se nao existe o produto no item do pedido entao inclui o item na tabela itens_pedido
if rsitemPedidos.EOF then
'Insere o item na tabela itens do pedido
SQL = "INSERT INTO itens_pedidos ( PedidoID, ProdutoID, Quantidade ) values "
SQL = SQL & " ( " & PedidoID & "," & Request.QueryString("ProdutoID") & "," & quantidade & ")"
else
SQL = "UPDATE itens_pedidos SET quantidade = " & clng(rsItemPedidos("quantidade"))+1
SQL = SQL & " WHERE PedidoID = " & PedidoID
SQL = SQL & " AND ProdutoID = " & request.Querystring("ProdutoID")
end if
conntemp.Execute (SQL) ', , adCmdText)
End Sub
'processamento geral
Dim Operacao
Abre_ConexaoBD
'Obtém tipo de operação passado pela QueryString
Operacao = Request.QueryString("Operacao")
Select Case ucase(Operacao)
Case "INCLUIR"
Incluir_Item
Fecha_ConexaoBD
Response.Redirect "Comprar.asp"
Case "EXCLUIR"
Excluir_Item
Fecha_ConexaoBD
Response.Redirect "Comprar.asp"
End Select
'--------------------------------fim do processamento geral-----------------
%>
Página C (Comprar.asp)
<%@ Language=VBScript %>
<%
Option Explicit
Response.Expires = 0
on error resume next
'Declara Variáveis
Dim conntemp, rsPedidos, totalgeral, PedidoID, SQL, urlimagem, quantidade, 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
'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
'Abre_Conexao
Set conntemp = Server.CreateObject("ADODB.Connection")
conntemp.Open Application("Conecta_bd")
if Request.Form <> "" then
Processa_Alteracao
End if
'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"))
'Abre o Recordset de Pedidos do Cliente
Set rsPedidos = conntemp.Execute (sql)
'identifica o pedido
if ( rsPedidos.EOF ) then
PedidoID = 0
Else
PedidoID = rsPedidos("PedidoID")
session("PedidoId")=clng(rsPedidos("PedidoID"))
End If
if rsPedidos.EOF then%>
response.write "Não existe nenhum item em sua cesta de compras !"
else
totalgeral=0.0
with rspedidos
do while not .EOF
<a href="compre.asp?operacao=excluir&ItemID=<%=.Fields("itemID")%>&PedidoID=<%=.Fields("PedidoID")%>"><b><font face="Verdana" size="1">Excluir</font></b></a></td>
<%=.fields("nome")%>
<%=formatCurrency(.fields("valor"))%>
<%=.fields("ProdutoID")%>" size="3" maxlength="3" value="<%=.fields("quantidade")%>
<%=formatnumber((.fields("quantidade")* .fields("valor")),2)%>
<% totalgeral = totalgeral + .Fields("quantidade")* .Fields("valor")
.movenext
loop
end with
<%=formatcurrency(totalgeral)%>
<input type="submit" value="Alterar" name="submit1"> (<font face="Verdana" size="1">Para alterar a quantidade , informe o novo valor e clique no <i>Link Alterar</i></font>.)
end if
'Fecha o Recordset de Pedidos e conexao com o bd
Session("TotalGeral") = totalgeral
rsPedidos.Close
Set rsPedidos = Nothing
'Fecha_Conexao
conntemp.Close
Set conntemp = Nothing











