
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