Jump to content


Photo

As Páginas Não Atualizam Automaticamente


  • Faça o login para participar
4 replies to this topic

#1 Perk

Perk

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 31/08/2004, 10:24

Galera estou montando uma loja virtual e já estou quase no fim, mas numa das partes principais o sistema tá falhando :(

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&amp;ItemID=<%=.Fields("itemID")%>&amp;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">&nbsp;(<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


#2 :: Wallace ::

:: Wallace ::

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro
  • Interesses:Informática, Websites, Programação, leitura e Mulheres !

Posted 31/08/2004, 10:34

Perk, vou ser sincero, nem olhei direito o código, mas tente utilizar um refresh na variável que recebe os produtos na página B.

De preferencia, use um If para dizer que ele só deve ser atualizada depois que recebido pela página C.

Boa sorte.
carioca não respira ar, e sim brisa,
o sangue do carioca eh feito de água de côco
a cor eh feita de sol
o gosto de sal
e o corpo de curtição

Fale comigo

#3 Perk

Perk

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 31/08/2004, 10:38

Vlw :: Wallace ::, mas não é preguissa minha não, minha cabeça tá explodindo já, será que vc pode me dizer exatamente onde e como colocar este código de refresh?

#4 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 31/08/2004, 11:02

Velho, a resposta pode ser mais simples do q se imagina. O lance todo está em q sua página ASP já possue um endereço arquivado no histórico, por isso, ele naum dá o refresh automático, tipo ele apenas pega os dados já gravados e exibe.. faça uma busca aki no fórum por buffer e solucione seu problema, ou clique no link abaixo.

Link relacionado:
http://forum.wmonlin...?showtopic=6945

flws... (y)

Edição feita por: Tx.NET, 31/08/2004, 11:03.

> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now

#5 Perk

Perk

    Novato no fórum

  • Usuários
  • 22 posts
  • Sexo:Não informado

Posted 31/08/2004, 11:20

:D
Tx.NET salvastes meu dia !!!!!

Funcionou que é uma blz :D




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq