Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sfonseca45

Problema com Script - Carrinho de Compras

Recommended Posts

Boa Tarde,

Estou criando um sistema de orçamentos e peguei um script aqui do forum e adaptei ao meu sistema,

porém estou com dois problemas:

 

1 - Qdo possuo apenas um produto consigo alterar a quantidade normalmente, acima disso não consigo

2 - Não sei porque alguns produtos cadastrados dão erro ( Erro de tempo de execução do Microsoft VBScript error '800a0009' Subscrito fora do intervalo: '[number: 3]' ) e o nome do produto é dividido ou seja

 

Na descrição sai uma parte / Outra no preço e o final na quantidade.

 

Pensei que fosse por causa do "(" que alguns produtos possuiam na descrição - retirei - mas o problema continua.

 

Será que alguem poderia me ajudar?

 

Segue abaixo o script (é meio longo) :

<%Dim Carrinho, ProcProd, Loop1Dim acao%><%acao = Request.QueryString("acao")%><%Select Case acaoCase "Excluir" 		  	  'VARIÁVEIS UTILZADAS SOMENTE PARA EXCLUIR OS PRODUTOS 	  Dim Excluir, ExcluirItem 					  'ESVAZIO A SESSÃO QUE CONTÉM O SUBTOTAL 	  Session("SubTotal") = Empty 	  'RECUPERO O ID ENVIADO PARA SER EXCLUÍDO 	  Prod_ID = Request.QueryString("Prod_ID") 	  'QUEBRO A SESSÃO PELA BARRA, SEPARANDO CADA ÍTEM DO CARRINHO 	  Excluir = Split(Session("Carrinho"), "/") 	  'LOOP PARA PASSAR ÍTEM POR ÍTEM DO CARRINHO 	  For Loop1 = LBound(Excluir) TO Ubound(Excluir) 		 'QUEBRO CADA ÍTEM PELA VÍRGULA SEPARANDO CÓDIGO, NOME, PREÇO E ETC 		 ExcluirItem = Split(Excluir(Loop1), "-") 		 'VERIFICA SE O CÓDIGO PRODUTO ATUAL EH IGUAL AO PRODUTO ESCOLHIDO PARA SER DELETADO 		 'SE FOR, ELE NÃO EH ADICIONADO AO NOVO CARRINHO 		 If Not ExcluirItem(0) = Prod_ID Then 			'VERIFICA SE A VARIÁVEL CARRINHO ESTAH VAZIA 			If IsEmpty(Carrinho) Then 			   'SE ESTIVER PREENCHE COM O PRIMEIRO PRODUTO DO CARRINHO 			   Carrinho = ExcluirItem(0) &"-"& ExcluirItem(1) &"-"& ExcluirItem(2) &"-"& ExcluirItem(3) 			Else 			   'ADICIONO O PRÓXIMO PRODUTO JUNTO COM OS DEMAIS PRODUTS 			   Carrinho = Carrinho &"/"& ExcluirItem(0) &"-"& ExcluirItem(1) &"-"& ExcluirItem(2) &"-"& ExcluirItem(3) 				End If 			'PREENCHO A SESSÃO SUBTOTAL COM OS TOTAIS DE CADA ÍTEM 			Session("SubTotal") = Session("SubTotal") + (ExcluirItem(2) * ExcluirItem(3)) 		 End If 	  Next 	  'DEFINO O NOVO VALOR PARA A SESSÃO CARRINHO PARA SER EXIBIDO NA TELA 	  Session("Carrinho") = Carrinho	  	  Case "Atualizar" 		  	  'VARIÁVEIS UTILIZADAS SOMENTE PARA ATUALIZAR 	  Dim Atualizar, AtualizarItem, Prod_Qtde, CarQtdes 	  'ESVAZIO O SUBTOTAL 	  Session("SubTotal") = Empty 	  'RECUPERO TODAS AS QTDES DO FORM 	  Prod_Qtde   = Request.Form("P_CarQtde") 	  'QUEBRO AS QTDES PELA VÍRGULA 	  CarQtdes   = Split(Prod_Qtde, "-") 	  'SEPARO CADA PRODUTO DO CARRINHO EM UMA INSTANCIA DO ARRAY 	  Atualizar = Split(Session("Carrinho"), "/") 	  'PRIMEIRO LOOP (CADA PRODUTO) 	  For Loop1 = LBound(Atualizar) TO UBound(Atualizar) 		 'QUEBRO CADA ÍTEM DO PRODUTO QUE ESTAH SENDO UTILIZADO NO MOMENTO PELO SCRIPT 		 AtualizarItem = Split(Atualizar(Loop1), "-") 		 'VERIFICA SE A VARIÁVEL ESTAH VAZIA, SE ESTIVER, SERÁ INSERIDO O PRIMEIRO PRODUTO 		 If IsNumeric(CarQtdes(Loop1)) Then 			If IsEmpty(Carrinho) Then 			   'INSIRO O PRIMEIRO PRODUTO NO CARRINHO 			   Carrinho = AtualizarItem(0) &"-"& AtualizarItem(1) &"-"& AtualizarItem(2) &"-"& Trim(CarQtdes(Loop1)) 			Else 			   'ADICIONO OS OUTROS PRODUTOS JUNTO COM O RESTANTE 			   Carrinho = Carrinho &"/"& AtualizarItem(0) &"-"& AtualizarItem(1) &"-"& AtualizarItem(2) &"-"& Trim(CarQtdes(Loop1)) 			End If 			'CALCULO O SUBTOTAL 			Session("SubTotal") = Session("SubTotal") + (AtualizarItem(2) * Trim(CarQtdes(Loop1))) 		 End If 	  Next 	  'PREENCHO A SESSÃO PRINCIPAL COM OS DADOS JA ATUALIZADO 	  Session("Carrinho") = Carrinho	  	  Case "Cancelar" 		  	  Session("Carrinho") = Empty 	  Session("Carrinho_Item") = Empty 	  Session("SubTotal") = Empty 	  Session("UltProd") = Empty       End Select%><%ConnString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\web\delivery_helpdesk\database\delivery.mdb;" Set conexao=server.createobject("adodb.connection") Conexao.open ConnString %><%' Recupera informações do checkbosid = Request.Querystring("checkbox")%><%' Desmembra os valores do checkboxvid = split(Request.QueryString("checkbox"),",")for i = 0 to uBound (vid)'response.write vid(i) & "<br>"next%><%Dim P_Nome, P_Preco for i = 0 to uBound (vid)			'VERIFICO SE O PRODUTO JA EXISTE NO CARRINHO 	  ProcProd = InStr(Session("Carrinho"), vid(i))	  	   'SE NÃO EXISTIR ADICIONA 	  If ProcProd = 0 Then	Set rstproduto = Conexao.Execute("Select * From produto Where id_produto="& vid(i)) 					  			id = rstproduto("id_produto")			P_Nome  = rstproduto("produto") 			P_Preco = rstproduto("vlrvenda") 			qtde = 1						'Response.Write P_Nome & "<------>"			'Response.Write P_Preco &  "<br>"						 rstproduto.Close 			 Set rstproduto = Nothing 			 			 'Verificar se a Session esta vazia			 If IsEmpty(Session("Carrinho"))  then			 	session("Carrinho") =id&"-"& P_Nome&"-"&P_Preco&"-"&qtde			else				session("Carrinho") = session("Carrinho") &"/"&id&"-"&P_Nome&"-"&P_Preco&"-"&qtde			end if						 'CALCULO O SUBTOTAL 		 Session("SubTotal") = Session("SubTotal") + (P_Preco * qtde) 		 'RECUPERO O NOME DO ÚLTIMO PRODUTO ESCOLHIDO 		 Session("UltProd")   = P_Nome		 End if			Next	%><link href="estilo.css" rel="stylesheet" type="text/css" /><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Delivery - Carrinho</title></head><body class="navLink"><form name="form1" method="post" action="carrinho.asp?Acao=Atualizar">   <table width="100%" border="1" cellpadding="3" cellspacing="2" bordercolor="#FFFFFF" class="TextoCorpo"> 	 <tr class="header">	   <td height="20" colspan="6" class="header"><div align="center">Orçamento</div></td>	 </tr>	 <tr> 	   <td width="8%" height="20" class="footer"> <div align="center" class="style2">Código</div></td> 	   <td width="34%" class="footer"> <div align="center" class="style2">Produto</div></td> 	   <td width="16%" class="footer"> <div align="center" class="style2">Preço</div></td> 	   <td width="12%" class="footer"> <div align="center" class="style2">Qtde</div></td> 	   <td width="22%" class="footer"> <div align="center" class="style2">Total</div></td> 	   <td width="8%" class="footer"> <div align="center" class="style2">Opção</div></td> 	</tr> <% Carrinho = Split(Session("Carrinho"), "/")    For Loop1 = LBound(Carrinho) TO UBound(Carrinho) 	  If Not IsEmpty(Carrinho(Loop1)) Then 		 Carrinho_Item = Split(Carrinho(Loop1), "-")   %> 	 <tr class="sidebarHeader"> 			<td class="sidebarHeader"><div align="center" class="style2"><%= Carrinho_Item(0) %></div></td> 	   <td class="sidebarHeader"><div align="left"></div>	   <div align="left" class="style2"><%= Carrinho_Item(1) %></div></td> 	   <td class="sidebarHeader"><div align="center" class="style2"><%= (Carrinho_Item(2)) %></div></td> 	   <td class="sidebarHeader"><div align="center" class="style2"> 			 <input type="text" name="P_CarQtde" class="TextoCorpo" size="3" onBlur="Completa()" onKeyPress="return DesabilitaEnter()" maxlength="3" id="Qtde<%= Carrinho_Item(0) %>" value="<%= Carrinho_Item(3) %>"> 		   </div></td> 	   <td class="sidebarHeader"><div align="center" class="style2"><%=FormatCurrency(Carrinho_Item(2) * Carrinho_Item(3),2) %></div></td> 	   <td class="sidebarHeader"> <div align="center" class="box1"><a href="carrinho.asp?Acao=Excluir&Prod_ID=<%= Carrinho_Item(0) %>">Excluir</a></div></td> 	 </tr> <% 	  End If Next  %> 	 <tr> 	   <td><span class="style2"></span></td> 	   <td><span class="style2"></span></td> 	   <td colspan="2" class="dingbat"><div align="right" class="style2">Subtotal:</div></td> 	   <td bordercolor="#FF9900" class="dingbat"><div align="center" class="style2"><font color="#FF0000"><%= FormatCurrency(Session("SubTotal"),2) %></font></div></td> 	   <td class="dingbat"><span class="style2"></span></td> 	 </tr>	 <tr class="navLink" >	   <td colspan="6" ><div align="left"><a href="carrinho.asp?acao=Cancelar" target="mainFrame" class="navLink" >Cancelar		 Comprar </a></div></td>	 </tr>   </table> </form></body></html>

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando for postar trechos de códigos por favor utilize a TAG

 (botão  no editor) com ela fica muito mais fácil ler os códigos.

 

Os separadores das matrizes em seu sistema são a "/" e o "-" então tome cuidado com o uso deles nas descrições/nomes de seus produtos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom DiaEm primeiro lugar me desculpe quanto a falha do post do código ... marinheiro de primeira viagem ...Bom amigão consegui resolver o problema da apresentação dos nomes - realmente havia produtos cadastrados com "/" e "-" .... Agora ainda não consegui resolver o problema da atualização da quantidade ....Teria alguma dica ?Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá algum erro nos casos de alteração das quantidades?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.