Ir para conteúdo

POWERED BY:

Arquivado

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

Jow Xavier

Script de Carrinho de Compra com DB MySql

Recommended Posts

Bom dia galera,

Estava procurando um script de carrinho de compras na net, achei alguns, uns complicados, outros nem tanto porém ñ eram funcionais ... achei melhor eu desenvolver um do meu jeito e ir melhorando com a ajuda de vcs ... Por isso tentei criar o mais simples possivel ... Espero a ajuda de vcs, para criarmos um script q todos possam usar ... Bom vamos lá ...

Primeiro criei um banco de dados simples em MySql, com a seguinte estrutura:

[b]Criando a Base de Dados carrinho_compras[/b]
CREATE DATABASE carrinho_compras;

[b]Usando esta base de dados[/b]
use carrinho_compras;

[b]Criando a minha tabela[/b]
CREATE TABLE carrinho(
id int(10) unsigned not null auto_increment,
produto varchar(100) not null,
preco varchar(11) not null,
quantidade varchar(11) not null,
primary key (id));

[b]obs:[/b] Agora no painel de controle escolho a minha fonte de dados do sistema OK, criei a minha Base de dados do sistema

 

conexao.asp

<%
dim cnn
sub abre_conectar
set cnn=server.CreateObject("adodb.connection")
cnn.open "carrinho_compras" 
end sub
sub fecha_conectar
	 cnn.close
	 Set cnn = nothing
end sub 
%>

[b]obs:[/b] Criada dentro de uma pasta config, para organizar melhor a estrutura do projeto, mas é opcional

default.asp

<html>
<head></head>
<title>Carrinho de Compras</title>
<body>
<form action="inserir_carrinho.asp" method="post">
<table width="100%">
<tr>
<td>Produto</td>
<td>Preço</td>
<td>Quantidade</td>
</tr>
<tr>
<td><input type="text" name="produto"></td>
<td><input type="text" name="preco"></td>
<td><input type="text" name="quantidade" size="5"></td>
</tr>
</table>
<table width="100%">
<tr>
<td><input type="submit" value="Adicionar ao Carrinho"></td>
</tr>
</table>
</form>

inserir_carrinho.asp

<!--#include file="config/conexao.asp"-->

<% call abre_conectar 
produto=request.Form("produto")
preco=request.Form("preco")
quantidade=request.Form("quantidade")


sql = "insert into carrinho (produto, preco, quantidade)"
sql = sql & " values ('"&produto& "', '"&preco&"', '"&quantidade&"')"
set tab = cnn.execute(sql) 

call fecha_conectar
set tab = nothing
response.Redirect("default.asp")%>

form_alterar.asp

<!-- #include file="config/conexao.asp"-->
<%

call abre_conectar

id1 = Request.QueryString("alterar")

sql = "Select * from carrinho WHERE id = "&id1  

set tab = cnn.execute(sql) %>

<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
-->
</style>


<%
On error resume Next
'Dim objConn, stringSQL, strConnection, id, strDBPath


'Deletando registro da tabela contato onde esta a id
if err <> 0 Then%>
	
<div align="left">
	<center><span class="titulo1">Ocorreu algum erro!</span>
	</font>
  <a href="java script:history.back(-1)" class="link1_inativo">Volta</a></center></div>

	  <%else%>
			
	  <form action="altera_dados.asp" method="post">
 
			 <table width="100%">
<tr>
<td>Produto</td>
<td>Preço</td>
<td>Quantidade</td>
</tr>
<tr>
<td><input type="text" name="produto" value="<%=tab("produto")%>"></td>
<td><input type="text" name="preco" value="<%=tab("preco")%>"></td>
<td><input type="text" name="quantidade" size="5" value="<%=tab("quantidade")%>">
<input type="hidden" name="id" value="<%=tab("id")%>"></td>
</tr>

				  <td> 
					<input name="enviar" type="submit" class="formulario" value="Alterar">
					</td>
				  </tr>
			  </table>
			
	  </form>
	  <%end if
	  call fecha_conectar
	 set tab = nothing%>

altera_dados.asp

<!--#include file="config/conexao.asp"-->
<%

call abre_conectar

produto=request.Form("produto")
preco=request.Form("preco")
quantidade=request.Form("quantidade")

id=request.Form("id")

sql = "UPDATE carrinho SET produto = '"&produto&"', preco = '"&preco&"', quantidade = '"&quantidade&"' WHERE id ="&id

'Caso ocorra um erro esta função de erro será chamada
On error Resume Next
'Executaa inserção no Banco de Dados 
set tab = cnn.execute(sql)
'Fecha o Objeto de Conexão
call fecha_conectar
set tab = nothing 
if err = 0 Then
	'Redireciona o usuário caso não tenha ocorrido erro na transação
	response.redirect "default.asp"
end if
%>

action_excluir.asp

<!-- #include file="config/conexao.asp"-->
<%

call abre_conectar

'Option Explicit
Dim objConn, stringSQL, strConnection, array_id, i, sql_id, id,strDBPath
id = Request.QueryString("radio")
'Caso ocorra algum erro os precessos não são interrompidos 
'e é passado para a próxima linha de comando
On error Resume Next %><style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
-->
</style>

  
			<% 
		if err = 0 and id <> "" then
			array_id = split(id,",")
			For i=0 to ubound(array_id)
				sql_id = sql_id & "carrinho.id = " & Trim(array_id(i)) & " OR "
														 'campo texto, entao" & Trim(array_id(i)) & " OR "
														 'caso numerico '" & Trim(array_id(i)) & "' OR "
			Next
			sql_id = left(sql_id,(len(sql_id)-4))
			sql = "DELETE FROM carrinho WHERE "&sql_id&""
			
						set tab = cnn.execute(sql)
			
			call fecha_conectar
set tab = nothing
		  
%>
			<table align="center">
				<tr bgcolor="">
				  <td><%response.Redirect("default.asp")%></td>
						  </tr>
			  </table>
			
			  
				<%else%>
				<br>
				<center>Ocorreu algum erro!<br>
				<br>
				Nenhum dado foi excluido!</span><br><br>
				<a href="java script:history.back(-1)" class="link1_inativo">Volta</a></center></div>
		  
		  <%End if%>		</td>
	  </tr>
	</table>

</td>
  </tr>
</table></td>
  </tr>
</table>

Bom isso é o primeiro passo, agora vamos melhorar este código ... Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde, Valeu galera, espero melhorar esse script criei um script de carrinho de compras em PHP q está bem mais completo q este hehehe, qd eu tiver um tempinho vou ver se passo o código para asp, é q agora estou desenvonvendo um site em asp e php heheh coisa louca, mas qd acabar espero postar ai alguns códigos abraçãooooo ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente uma boa contribuição. Mas eu particularmente acho que o sistema ideal de carrinho de compras é aquele que armazena em cookies o que o cliente/usuário adicionou no carrinho de compras e somente quando ele finalizar o pedido que grava as informações no banco de dados (assim diminui e muito as requisições ao BD, visto que muitos usuários só navegam mas não compram) e daí prossegue o sistema original, abrindo o form pro usuário ou fazer login ou cadastrar etc.

 

Aliás, uma dúvida, está correto armazenar em cookies? Porque a session mesmo é criada pro login do usuário pra identificar qual é o usuário né? E o que acharam dessa sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente uma boa contribuição. Mas eu particularmente acho que o sistema ideal de carrinho de compras é aquele que armazena em cookies o que o cliente/usuário adicionou no carrinho de compras e somente quando ele finalizar o pedido que grava as informações no banco de dados (assim diminui e muito as requisições ao BD, visto que muitos usuários só navegam mas não compram) e daí prossegue o sistema original, abrindo o form pro usuário ou fazer login ou cadastrar etc.

 

Aliás, uma dúvida, está correto armazenar em cookies? Porque a session mesmo é criada pro login do usuário pra identificar qual é o usuário né? E o que acharam dessa sugestão?

Boa tarde newboxters muito boa sugestão, mas desconheço armazenar os dados em cookies e depois gravar no banco de dados, se alguém conhecer pode dar uma dica aí pra gente ir melhorando esse código abraçosssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, acho que é possível, pois a idéia que eu tentei sugerir é o esquema comum de sistemas e-commerce, que o usuário entra na página, adiciona um produto ao carrinho e continua navegando, depois pode adicionar outro produto

 

Como no exemplo nesse modelo teste do pagseguro:

http://www.lojamodelo.com.br/

 

Aí creio que eles não armazenam os produtos diretamente no banco de dados e sim em cookies e só quando a compra é finalizada que os dados vão para um banco de dados.

 

Não seria +/- isso?

 

-----

Editado:

 

Acabei de confirmar sim, eles usam cookies. Adicionei dois produtos ao carrinho, continuei navegando, voltei ao carrinho e estavam os 2 produtos, depois limpei os cookies sem sair do site, voltei ao carrinho e estava vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother então eu criei um carrinho de compra para um site e tbm já tentei uma solução assim, e ñ obtive a solução, tbm gostaria de fazer dessa maneira inclusive estou pesquisando na net .... abraçosss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom a lógica seria ao colocar um produto ao carrinho, ao invés de gravar os dados no banco de dados, você trabalharia com cookies e criaria um cookie com cada item necessário do produto para gravação, como id do produto, quantidade, e esses dados ficam gravados no cookie.

 

O processo se repete se o cliente adicionar outros produtos até que ele finalize a compra, daí você pega esses dados gravados no cookie e daí sim adiciona ao banco de dados.

 

Mas de fato, na parte funcional de um sistema assim, eu particularmente ainda não sei muito sobre isso, mas estou pesquisando, qualquer nova contribuição eu postarei aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, sem dúvida, cookies podem ser destruídos, prova disso que limpei os cookies na "loja modelo" que passei e limpou meu carrinho de compras, mas essa é a vantagem (na minha opinião).

 

Afinal, além de evitar o excesso de requisições ao banco de dados, se o cliente só quer navegar no site e ter uma idéia de quanto sairia o total que ele comprou, então ele vê no site e se não quiser mais ver ele simplesmente sai do site e daí depende da validade do cookie ou se ele vai limpar os cookies.

 

Agora o que o site que você indicou quis dizer é se realmente forem informações importantes, como gravar nome de usuário e senha de um sistema de login em cookie aí sim é total falta de segurança, pois além de poder deletar, os cookies podem ser alterados, nesse caso são utilizados sessions com base em informações do banco de dados.

 

Mas enfim, voltando ao sistema de carrinho de compras, eu particularmente, acho que o modelo ideal é gravando essa parte em cookies e realmente só passa para o banco de dados ao finalizar a compra.

 

Gostaria de saber também o que os moderadores ou outros usuários acham a respeito disso, pois como eu disse, isso é minha opinião.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jow, dê uma olhada nesse script de carrinho de compras que usa cookies:

http://cookiecart.blogspot.com/

 

Achei interessante, e você poderia implementá-lo em seu sistema, assim quando clica em "Envia pedido" ao invés de mandar por e-mail que esse script faz, você adiciona as informações no banco de dados.

 

---

Editado:

Buscando mais informações na Web, li artigos que dizem que é melhor utilizar sessions mesmo neste caso. Afinal, não sobrecarregaria o banco de dados e a segurança seria alta.

 

Só fiquei com a dúvida se utilizar várias sessions não deixaria a página mais lenta ou algo do tipo, exemplo:

session("preco"),session("cod_produto"),session("nome_produto"),session("quantidade").

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.