Jump to content


Photo

Carrinho De Compras


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

#1 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 12/11/2006, 01:10

Fala galera, blz? Pesquisei muitos tópicos aqui no fórum sobre o assunto, mas to com uma dúvida. Usei um script que tava nos tópicos, mas ele funciona da seguinte forma, você escolhe a quantidade que quer e manda adicionar no carrinho. Então ele verifica o campo quantidade e adiciona. Mas eu queria a opcao de nao escolher quantidade, se a pessoa clicar em comprar já adicionar no carrinho somente 1 unidade.

O Form que envia as infos.

<form action="carrinho.php" method="post" name="frmCarrinho">
<input type="hidden" name="opc_efetivar" value="1">

<input type="hidden" name="txtprod[<? echo $indice;?>][CODIGO]" value="<? echo $codigo_filme; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][NOME]" value="<? echo $nome_filme; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][PRECO]" value="<? echo $preco_filme; ?>">
<input type="hidden" name="txtprod[<? echo $indice;?>][CAPA]" value="<? echo $capa_filme; ?>">
<input type="checkbox" name="txtprod[<? echo $indice;?>][QTDE]" size="3" maxlength="3">


Código que adiciona

//RECEBE O PEDIDO DO USUÁRIO
elseif($_POST[opc_efetivar]) {
//RECEBE AS VARIÁVEIS
$v_prod = $_POST[txtprod];
//PEGA A CHAVE DO ARRAY
$chave = array_keys($v_prod);
//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
$indice = $chave[$i];
//VERIFICA
if(!empty($v_prod[$indice][CODIGO]) ) {
//GRAVA NO ARRAY CESTA
$cesta[$indice][CODIGO] = $v_prod[$indice][CODIGO];
$cesta[$indice][NOME] = $v_prod[$indice][NOME];
$cesta[$indice][PRECO] = $v_prod[$indice][PRECO];
$cesta[$indice][CAPA] = $v_prod[$indice][CAPA];
$cesta[$indice][QTDE] = $v_prod[$indice][QTDE];
}//FECHA IF
}//FECHA FOR
//GRAVA NA SESSÃO
$_SESSION[cesta] = $cesta;
}//FECHA ELSE


Edição feita por: wesley.tome, 12/11/2006, 01:13.

.................

#2 rudesign

rudesign

    xD

  • Usuários
  • 341 posts
  • Sexo:Não informado
  • Localidade:Batatais-SP
  • Interesses:PHP , MySQL , Tibia

Posted 12/11/2006, 09:45

Que tal se você por o campo que tem a quantidade como hidden e deixar o value="1" ??
Nome: Rudá Gonçalves
MSN: ruda_g@hotmail.com
Cidade: Batatais-SP
Outros: Odeio comprimidos!!!!!
"O universo não é idéia minha. A minha idéia do universo é que é idéia minha"

#3 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 12/11/2006, 14:01

Obrigado pela ajuda RUDESIGN. É que eu tinha tentado já como HIDDEN mas não adiantou. Eu consegui colocando a tag <FORM> dentro do LOOP que lista os filmes e mando adicionar somente 1 quantidade sem o campo, e ai sim coloquei o campo quantidade como HIDDEN.

Edição feita por: wesley.tome, 12/11/2006, 14:52.

.................

#4 mofo

mofo

    12 Horas

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

Posted 06/12/2006, 15:15

como vc fez cara nao entendi como vc fez ? to com o mesmo problema

#5 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 07/12/2006, 22:39

Olha ai.... qualquer dúvida só perguntar.

<form action="carrinho.php" method="post" name="frmCarrinho">
<input type="hidden" name="opc_efetivar">
<input type="hidden" name="indice_filme">
<table border="0" cellpadding="0" cellspacing="0" height="0" width="570">
<?php
//PEGA A CHAVE DO ARRAY
if (!empty($filme)){
$chave = array_keys($filme);

$intContLin=1;
for ($i=0; $i<sizeof($chave); $i++){
$indice = $chave[$i];
$codigo_filme = $filme[$indice][CODIGO];
$titulo_filme = $filme[$indice][TITULO];
$preco_filme = $filme[$indice][PRECO];
$capa_filme = $filme[$indice][CAPA];
if ($intContLin % 4 == 1) {
?>
<tr>
<?php
}//fim do if
?>
<td width="135" align="center" bgcolor="#f3f3f3" valign="top" style="padding-top:5px; padding-bottom:5px;">
<img src="lib/dim_imagem.php?imagem=../images/filme/<? echo $capa_filme; ?>" alt="<? echo $titulo_filme; ?>" style="border: solid 1px #000000;">
<br>
<a href="filme_detalhe.php?idFilme=<?php echo $codigo_filme; ?>"><? echo $titulo_filme; ?></a>
<br><img src="images/spacer.gif" width="1" height="5" alt=""><br>
<a href="java script: enviar('INC', '<? echo $indice; ?>');" class="a_btn_alugar">Alugar</a><br>
R$ <? echo $preco_filme; ?><br>
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][CODIGO]" value="<? echo $codigo_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][TITULO]" value="<? echo $titulo_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][PRECO]" value="<? echo $preco_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][CAPA]" value="<? echo $capa_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][QTDE]" value="1">
</td>
<?php
if ($intContLin % 4 == 0){
?>
</tr>
<tr>
<td colspan="7" height="10"><img src="images/spacer.gif" width="1" height="10" alt=""></td>
</tr>
<?php
}//fim do if se igual a 4 quebra linha
else { //senao coloca coluna q separa os filmes
?>
<td width="10"><img src="images/spacer.gif" width="10" height="1" alt=""></td>
<?
}
$intContLin++;
}
}//fim se contiver filme
else {
?>
<tr>
<td></td>
</tr>
<?php
}
?>
</table>
</form>


.................

#6 fdebortoli

fdebortoli

    12 Horas

  • Usuários
  • 250 posts
  • Sexo:Masculino
  • Localidade:Joinville-SC

Posted 07/12/2006, 23:07

Aproveitando que o assunto é carrinho de compras, eu estive pesquisando no fórum a respeito disso, utilizando session e MySQL ... eu me deparei constantemente com esse tutorial:

Fórum do IMASTERS

... eu abaixei esse tutorial e funcionou sem problemas. Mas ele não utiliza banco de dados, tipo, puxando os produtos de uma tabela de MySQL. Alguém aí tem um exemplo?


Obrigado! :boxing:

#7 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 08/12/2006, 15:57

Quando se monta o array de produtos, em vez de fazer manualmente como tem neste script, faça um select no banco e monte o array.
.................

#8 fdebortoli

fdebortoli

    12 Horas

  • Usuários
  • 250 posts
  • Sexo:Masculino
  • Localidade:Joinville-SC

Posted 08/12/2006, 16:18

Sei, aí é onde eu tô me batendo hehe ... pra listar os produtos na tela de seleção, com o botãozinho de comprar .. isso eu fiz numa boa ....

o bicho tá pegando mesmo é na hora de fazer os códigos pra inserir em sessions ... dá uma olhada ... só pra avisar, ele tá com erros com certeza! hehehe


$sql_produtos = "SELECT * FROM produtos WHERE produtoID = ".$_POST["produtoID"];
$rs_produto = mysql_query($sql_produtos, $conexao);

$linha_produto = mysql_fetch_array($rs_produto);
 	$var_produtoID	= $linha_produto["produtoID"];
	$var_nome		= $linha_produto["nome"];
	$var_imagem		= $linha_produto["imagem"];
	$var_preco		= $linha_produto["preco"];

$_SESSION['cps'] = array();

for($i=0; $i<sizeof($_SESSION['cps']); $i++) {
	$_SESSION['cps']['produtoID']	= $var_produtoID;
	$_SESSION['cps']['nome']	= $var_nome;
	$_SESSION['cps']['imagem']	= $var_imagem;
	$_SESSION['cps']['preco']	= $var_preco;

	echo $_SESSION['cps'];
}

se puderes fazer os ajustes no meu códigozinho aí em cima, agradeço hehe!

Edição feita por: fdebortoli, 08/12/2006, 16:19.


#9 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 09/12/2006, 22:28

É o seguinte, o índice no meu script está sendo a chave de cada produto
$indice   =   $chave_cesta[$i];

o id do pedido eu to fazendo assim, pq o pedido pode ter vários itens e todos eles vao ter o mesmo id de pedido.
$sql_nPedido= mysql_query("SELECT idPedido FROM entrega order by idPedido DESC limit 0,1");
$dados_nPedido = mysql_fetch_array($sql_nPedido);
$idPedido = $dados_nPedido['idPedido']+1;

Inserindo no BD
for($i=0; $i<sizeof($chave_cesta); $i++) {
	$indice   =   $chave_cesta[$i];
	AlugaFilme($idPedido, $_SESSION[cliente]["idCliente"], $_SESSION[cesta][$indice][CODIGO], $_SESSION[cesta][$indice][QTDE], $dataEntrega, $dataDevolucao, $status, $pago);
}

Agora a funcao de AlugaFilme é meio grande cheio de restrição que fiz.
Mas basicamente é o insert que vc vai fazer, tem que ser com for pq ele insere cada produto cada vez q incrementa o for.
Tendeu?
.................

#10 fdebortoli

fdebortoli

    12 Horas

  • Usuários
  • 250 posts
  • Sexo:Masculino
  • Localidade:Joinville-SC

Posted 10/12/2006, 12:28

Sei .. mas esse código corresponde a cadastrar o produto numa tabela no banco à medida que o usuário vai consultando e inserindo no carrinho? Pq eu penso que essa parte deveria ser apenas com session, já que o usuário pode uma hora dessas fechar o site ... se for com session, aí não terá problemas, porque o carrinho dele irá esvaziar na hora se ele fizer isso, não é?

:assobio:

#11 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 10/12/2006, 12:41

Vc faz todas as características do carrinho. Consultar produtos, adicionar no carrinho, vai navegando no site, adiciona mais produtos e tals. Vc só vai inserir no BD quando for finalizar o carrinho, vai perorrer todo o array da session e vai armazenando. Como se fosse listar os pedidos, mas é dando insert, como mandei no código acima.

=)
.................

#12 fdebortoli

fdebortoli

    12 Horas

  • Usuários
  • 250 posts
  • Sexo:Masculino
  • Localidade:Joinville-SC

Posted 11/12/2006, 12:53

humm .. eh, tipo, entendi mais ou menos ... eu peguei o codigo que eu fiz, e juntei com o seu, mas acho que ainda tá dando erro:

<?php include("conexao.php");

$sql_produtos = "SELECT * FROM produtos WHERE produtoID = ".$_POST["produtoID"];
$rs_produto = mysql_query($sql_produtos, $conexao);

$linha_produto = mysql_fetch_array($rs_produto);
	$var_produtoID	= $linha_produto["produtoID"];
	$var_nome 		  = $linha_produto["nome"];
	$var_imagem	   = $linha_produto["imagem"];
	$var_preco		= $linha_produto["preco"];

$indice   =   $chave_cesta[$i];	
$_SESSION['cps'] = array();
for($i=0; $i<sizeof($_SESSION['cps']); $i++) {
	$_SESSION['cps']['produtoID']	= $var_produtoID;
	$_SESSION['cps']['nome']	= $var_nome;
	$_SESSION['cps']['imagem']	= $var_imagem;
	$_SESSION['cps']['preco']	= $var_preco;
	
	echo $_SESSION['cps'];
}

:unsure:

#13 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 11/12/2006, 20:55

Hummm, só para eu entender o drama! Vc consegue lista os pedidos, consegue armazenar no carrinho, só não consegue dar o insert no BD?
.................

#14 fdebortoli

fdebortoli

    12 Horas

  • Usuários
  • 250 posts
  • Sexo:Masculino
  • Localidade:Joinville-SC

Posted 12/12/2006, 17:58

Não não ... o cadastro no banco de dados eu pretendo fazer mais tarde .. o bicho tá pegando é na tela do carrinho, onde eu vouinserir um produto escolhido na loja ... no código original, o cara montou com session também, mas os produtos ele cadastrou manualmente, sem utilizar um banco de dados, entendeu? Dá uma olhada nas telas embaixo:


TELA DA LOJA
<?
/************************************************************************
ARQUIVO .........: Carrinho de compras simples: usando arrays e session
BY ..............: Júlio César Martini - baphp@imasters.com.br
SITE ............: iMasters - http://www.imasters.com.br
DATA ............: 23/05/2004
************************************************************************/

//INICIALIZA A SESSÃO
session_start();

//MONTA O ARRAY DE PRODUTOS
$produto[1][CODIGO]	 =   "00001";
$produto[1][ARTISTA]	 =   "CPM22";
$produto[1][ALBUM]	   =   "Chegou a Hora de Recomeçar";
$produto[1][PRECO]	   =   "25,50";
$produto[1][IMAGEM]	  =   "cpm22.jpg";

$produto[2][CODIGO]	 =   "00002";
$produto[2][ARTISTA]	 =   "Offspring";
$produto[2][ALBUM]	   =   "Splinter";
$produto[2][PRECO]	   =   "28,35";
$produto[2][IMAGEM]	  =   "offspring.jpg";

$produto[3][CODIGO]	 =   "00003";
$produto[3][ARTISTA]	 =   "Detonautas";
$produto[3][ALBUM]	   =   "Roque Marciano";
$produto[3][PRECO]	   =   "27,00";
$produto[3][IMAGEM]	  =   "detonautas.jpg";

$produto[4][CODIGO]	 =   "00004";
$produto[4][ARTISTA]	 =   "Good Charlotte";
$produto[4][ALBUM]	   =   "The Young And The Hopeless";
$produto[4][PRECO]	   =   "30,00";
$produto[4][IMAGEM]	  =   "charlotte.jpg";


//TOTAL DE PRODUTOS POR LINHA
$total = 2;
?>

<html>
<head>
<title>97º artigo PHP</title>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
-->
</style></head>

<body>
<table width="773"  border="0" cellspacing="0" cellpadding="0">
  <tr>
	<td><img src="topo.gif" width="773" height="100"></td>
  </tr>
  <tr>
	<td> <br>
	<table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td align='center'><font face='Arial' size='4'><b>Carrinho de compras utilizando arrays e session</b></font></td>
	  </tr>
	</table>
	<br>
	<br>
	<table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td><font face='Arial' size='2'>Confira abaixo, os produtos dispon&iacute;veis no site:</font> </td>
	  </tr>
	</table>
	<br>  
	
	<form action="carrinho.php" method="post" name="frmcarrinho">
	   <input type="hidden" name="opc_efetivar" value="1">

	   <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0"> 
	   <tr>
	   <?
	   //PEGA A CHAVE DO ARRAY
	   $chave = array_keys($produto);
	   
	   //EXIBE OS PRODUTOS
		for($i=0; $i<sizeof($chave); $i++) {
		   $indice	=   $chave[$i];
		   $codigo	=   $produto[$indice][CODIGO];
		   $artista   =   $produto[$indice][ARTISTA];
		   $album	 =   $produto[$indice][ALBUM];
		   $preco	 =   $produto[$indice][PRECO];
		   $imagem	=   $produto[$indice][IMAGEM]; 
		   
		   //VERIFICA
		   if($total == $atual) {
			  echo "</tr><tr>";
			  $atual = 0;
		   } ?> 
		   
		  <td width="14%" height="100"><img src="<? echo $imagem; ?>" width="80" height="80" border="1"></td>
		  <td width="36%">
		  
		  <table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
		  <tr>
			 <td><font face='Arial' size='2'><? echo $artista; ?></font></td>
		  </tr>
		  
		  <tr>
			 <td><font face='Arial' size='2'><? echo $album; ?></font></td>
		  </tr>
		  
		  <tr>
			 <td><font face='Arial' size='2'>R$ <? echo $preco; ?></font></td>
		  </tr>
		  
		  <tr>
			 <td>
			 <input type="hidden" name="txtprod[<? echo $indice;?>][CODIGO]"  value="<? echo $codigo; ?>">
			 <input type="hidden" name="txtprod[<? echo $indice;?>][ARTISTA]"  value="<? echo $artista; ?>">
			 <input type="hidden" name="txtprod[<? echo $indice;?>][ALBUM]"  value="<? echo $album; ?>">
			 <input type="hidden" name="txtprod[<? echo $indice;?>][PRECO]"  value="<? echo $preco; ?>">
			 <input type="text" name="txtprod[<? echo $indice;?>][QTDE]"  size="3" maxlength="3">	 
			 <input type="image" src="carrinho.gif" onClick="java script: document.forms[0].submit();"></td>
		  </tr>
		  </table></td>
   	   <?
		  //SOMA 1 A VARIÁVEL CONTROLADORA
		  $atual++;
	   }//FEHA FOR ?>
	   </tr>
	   </table>   
	</form></td>
  </tr>
  <tr>
	<td><img src="rodape.gif" width="773" height="20"></td>
  </tr>
</table>
</body>
</html>


TELA DO CARRINHO
<?
/************************************************************************
ARQUIVO .........: Carrinho de compras simples: usando arrays e session
BY ..............: Júlio César Martini - baphp@imasters.com.br
SITE ............: iMasters - http://www.imasters.com.br
DATA ............: 23/05/2004
************************************************************************/

//INICIALIZA A SESSÃO
session_start();

//VERIFICA SE TEM PRODUTO NO CARRINHO PARA PUXAR
if(count($_SESSION[cesta]) > 0) { 
   //PEGA A CHAVE DO ARRAY
   $chave   =   array_keys($_SESSION[cesta]);
   
   //PEGA OS DADOS DA SESSÃO
   for($i=0; $i<sizeof($chave); $i++) { 
	  //ÍNDICE
	  $indice   =   $chave[$i]; 
	  
	  //ATRIBUI
	  $cesta[$indice][ARTISTA]  =	$_SESSION[cesta][$indice][ARTISTA];
	  $cesta[$indice][ALBUM]	=	$_SESSION[cesta][$indice][ALBUM];
	  $cesta[$indice][PRECO]	=	$_SESSION[cesta][$indice][PRECO];
	  $cesta[$indice][QTDE]	 =	$_SESSION[cesta][$indice][QTDE];
   }//FECHA FOR
}//FECHA IF



//VERIFICA SE A OPÇÃO ATUALIZAR FOI SELECIONADA
if($_POST[opc_atualizar]) {
   
   //RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAÇÃO
   $v_atualiza  =  $_POST[a_prod];
   
   //PEGA A CHAVE DO ARRAY
   $chave  =  array_keys($v_atualiza);
   
   //EXIBE
   for($i=0; $i<sizeof($chave); $i++) {
	  //PEGA O INDICE DO PRODUTO
	  $indice   =   $chave[$i];
	  
	  //ALTERA A QUANTIDADE DO PRODUTO SELECIONADO
	  $_SESSION[cesta][$indice][QTDE]   =  $v_atualiza[$indice][QTDE];
   }//FECHA FOR
}//FECHA IF


//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA
elseif($_POST[opc_excluir]) {
   
   //RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO
   $excluir  =  $_POST[check];
   
   //EXIBE
   for($i=0; $i<sizeof($excluir); $i++) {
	  //PEGA O INDICE DO PRODUTO
	  $indice   =   $excluir[$i];
	  //DESTRÓI A VARIÁVEL ESPECIFICADA
	  unset($_SESSION[cesta][$indice]);
   }//FECHA FOR
}//FECHA IF



//RECEBE O PEDIDO DO USUÁRIO
elseif($_POST[opc_efetivar]) {
   //RECEBE AS VARIÁVEIS
   $v_prod   =  $_POST[txtprod];
   
   //PEGA A CHAVE DO ARRAY
   $chave  =  array_keys($v_prod);
   
   
   //EXIBE
   for($i=0; $i<sizeof($chave); $i++) {
	  $indice  =  $chave[$i];
	  
	  //VERIFICA
	  if(!empty($v_prod[$indice][QTDE]) ) {
	  
		 //GRAVA NO ARRAY CESTA
		 $cesta[$indice][ARTISTA]  =	$v_prod[$indice][ARTISTA];
		 $cesta[$indice][ALBUM]	=	$v_prod[$indice][ALBUM];
		 $cesta[$indice][PRECO]	=	$v_prod[$indice][PRECO];
		 $cesta[$indice][QTDE]	 =	$v_prod[$indice][QTDE];
	  }//FECHA IF
   }//FECHA FOR
   
   //GRAVA NA SESSÃO
   $_SESSION[cesta]		=   $cesta;
}//FECHA ELSE
?>

<html>
<head>
<title>97º artigo PHP</title>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
.style2 {
	color: #000000;
	font-weight: bold;
}
.style5 {color: #FFFFFF; font-weight: bold; }
-->
</style>

<script language="JavaScript">
<!--
   function enviar(opcao) {
	  //OPÇÃO EXCLUIR SELECIONADA
	  if(opcao == 'E') {
		 document.forms[0].opc_excluir.value = 1;
		 document.forms[0].submit();
	  }//FECHA IF
	  
	  //OPÇÃO ATUALIZAR SELECIONADA
	  if(opcao == 'A') {
		 document.forms[0].opc_atualizar.value = 1;
		 document.forms[0].submit();
	  }//FECHA IF
	  
	  //OPÇÃO FINALIZAR SELECIONADA
	  if(opcao == 'F') {
		 document.forms[0].opc_finalizar.value = 1;
		 document.forms[0].action = "finalizar.php";
		 document.forms[0].submit();
	  }//FECHA IF
	  
   }//FECHA FUNCTION
//-->
</script>

</head>

<body>
<table width="773"  border="0" cellspacing="0" cellpadding="0">
  <tr>
	<td><img src="topo.gif" width="773" height="100"></td>
  </tr>
  <tr>
	<td><br>
	<br>
	<table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td align='center'><font face='Arial' size='4'><b>Carrinho de compras utilizando arrays e session</b></font></td>
	  </tr>
	</table>
	<br>
	<br>
	<table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td><font size="2" face="Arial">Carrinho de Compras: </font></td>
	  </tr>
	</table>
	
	<?
	//EXIBE O CARRINHO SE TIVER PRODUTOS
	if(count($_SESSION[cesta]) > 0) { ?>
	
	<form name="frmCarrinho" method="post">
	   <input type="hidden" name="opc_excluir">
	   <input type="hidden" name="opc_atualizar">
	   <input type="hidden" name="opc_finalizar">
	   <table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
		<tr bgcolor="#CCCCCC">
		  <td width="4%">&nbsp;</td>
		  <td width="8%"><span class="style2">Qtde</span></td>
		  <td width="51%"><span class="style2">Produto</span></td>
		  <td width="19%"><span class="style2">Valor</span></td>
		  <td width="18%"><span class="style2">Subtotal</span></td>
		</tr>
		<?
	  //PEGA A CHAVE
	  $chave_cesta  =  @array_keys($_SESSION[cesta]);
	  
	  //EXIBE OS PRODUTOS DA CESTA
	  for($i=0; $i<sizeof($chave_cesta); $i++) { 
		 $indice   =   $chave_cesta[$i]; 
		 
		 //SUBTOTAIS DE CADA PRODUTO
		 $subtotal =   $_SESSION[cesta][$indice][QTDE] * ereg_replace(",",".",$_SESSION[cesta][$indice][PRECO]);
		 
		 //TOTAL GERAL
		 $total   +=   $subtotal;
	  ?>
		<tr>
		  <td height="25"><input name="check[]" type="checkbox" value="<? echo $indice; ?>"></td>
		  <td height="25"><font face='Arial' size='2'>
		  <input type="text" name="a_prod[<? echo $indice; ?>][QTDE]" value="<? echo $_SESSION[cesta][$indice][QTDE]; ?>" size="3"></font></td>
		  <td height="25"><font face='Arial' size='2'><? echo $_SESSION[cesta][$indice][ARTISTA]; ?> - <? echo $_SESSION[cesta][$indice][ALBUM]; ?></font></td>
		  <td height="25"><font face='Arial' size='2'>R$ <? echo $_SESSION[cesta][$indice][PRECO]; ?></font></td>
		  <td width="18%" height="25"><font face='Arial' size='2'> R$ <? echo number_format($subtotal,2,',','.'); ?></font></td>
		</tr>
		<?
	  }//FECHA FOR ?>
		<tr>
		  <td height="25" colspan="3">
		  <input type="image" name="btnExcluir" src="excluir.gif" onClick="enviar('E');">&nbsp;&nbsp;
		  <input type="image" name="btnAtualiza" src="atualizar.gif" onClick="enviar('A');"></td>
		  <td height="25" bgcolor="#FF0000"><span class="style5">&nbsp;&nbsp;Total &agrave; pagar: </span></td>
		  <td height="25" bgcolor="#FFF0F0" class="style2"> &nbsp;&nbsp;R$&nbsp;<b><? echo number_format($total,2,',','.'); ?></b></td>
		</tr>
		<tr>
		  <td height="25" colspan="3">&nbsp;</td>
		  <td height="40" colspan="2"><div align="center">
		  <input type="image" name="btnFinaliza" src="finaliza.gif" onClick="enviar('F');"></div></td>
		  </tr>
	  </table>
	</form>
	<?
	}//FECHA IF(count) 
	else { ?><br><br><br>
	  <table width="90%"  border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td align='center'><font face='Arial' size='2' color="#006666"><b>Desculpe, mas no momento você não possui nenhumm produto.</b></td>
	  </tr>
	  </table><br><br>
	<?
	}//FECHA ELSE (count)?>
	<table width="70%"  border="0" align="center" cellpadding="0" cellspacing="0">
	  <tr>
		<td align='center'><font face='Arial' size='2'><a href="index.php">&lt;&lt; Voltar </a></font></td>
	  </tr>
	</table>
	<br>
	</td>
  </tr>
  <tr>
	<td><img src="rodape.gif" width="773" height="20"></td>
  </tr>
</table>
</body>
</html>


... o que eu tô quebrando a cabeça é em alterar os códigos dessas duas páginas, pra que ao invés de ele mostrar (e inserir, modificar e excluir) os produtos que estão digitados ali na tela, ele faça isso com produtos que venham de um banco de dados, entende?


vix ... que agonia programar! heheh :rolleyes:


:blink:

#15 wesley.tome

wesley.tome

    24 Horas

  • Usuários
  • 422 posts
  • Sexo:Masculino

Posted 12/12/2006, 23:10

Entendi, então ai vai.

Função que monta o array.

function MontaARRAY_Filme(){
	global $filme;
	
	$sql = mysql_query("select  * from filme");
	$total = mysql_num_rows($sql);
	while($dados = mysql_fetch_array($sql)){
		$cod				  =   $dados["idFilme"];
		//MONTA O ARRAY DE FILMES
		$filme[$cod][CODIGO]  =   $dados["idFilme"];
		$filme[$cod][TITULO]  =   $dados["titulo"];
		$filme[$cod][PRECO]   =   $dados["preco"];
		$filme[$cod][CAPA]	=   $dados["capa"];
		$filme[$cod][IMAGEM]  =   $dados["imagem"];
	}//FIM WHILE
}//FIM DA FUNCAO

Chamando a função na página para montar o array e em seguida listando.
<?php
//chamada da funcao para montar o array
MontaARRAY_Filme();´
?>

<form action="carrinho.php" method="post" name="frmCarrinho">
<input type="hidden" name="opc_efetivar">
<input type="hidden" name="indice_filme">
<?php
//PEGA A CHAVE DO ARRAY
$chave = array_keys($filme_top1);

for ($i=0; $i<sizeof($chave); $i++){
$indice		=   $chave[$i];
$codigo_filme  =   $filme[$indice][CODIGO];
$titulo_filme  =   $filme[$indice][TITULO];
$preco_filme   =   $filme[$indice][PRECO];
$capa_filme	=   $filme[$indice][CAPA];
$imagem_filme  =   $filme[$indice][IMAGEM];
?>
<!-- titulo -->
<b><? echo $titulo_filme; ?></b>
<img src="images/filme/<? echo $imagem_filme; ?>" width="173" height="126" alt="Foto de Destaque">
<br>
<? echo $preco_filme; ?>
<br>
<a href="java script: enviar('INC', '<? echo $indice; ?>');" class="a_btn_alugar">Adicionar ao carrinho</a>

<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][CODIGO]"  value="<? echo $codigo_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][TITULO]"  value="<? echo $titulo_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][PRECO]"  value="<? echo $preco_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][CAPA]"  value="<? echo $capa_filme; ?>">
<input type="hidden" name="filme_inp_hid[<? echo $indice;?>][QTDE]" value="1">
<?php
}
?>
</form>

Agora quando ele clica em adicionar ao carrinho ele chama o a função JS. Mas segue outras funções para vc montar as outras partes, de remover e tals.
function enviar(opcao, indice) {
	//OPÇÃO INCLUIR SELECIONADA
	if(opcao == 'INC') {
		var ind= indice;
		
		frmCarrinho.opc_efetivar.value = 1;
		frmCarrinho.indice_filme.value = ind;			
		frmCarrinho.submit();
	}//FECHA IF		
	//OPÇÃO EXCLUIR SELECIONADA
	if(opcao == 'E') {
		var ind= indice;
		var frm = document.forms["frmCarrinho"];
		
		frm.opc_excluir.value = 1;
		frm.indice_filme.value = ind;
		frm.submit();
	}//FECHA IF

	//OPÇÃO ATUALIZAR SELECIONADA
	if(opcao == 'A') {
		var frm = document.forms["frmCarrinho"];
		frm.opc_atualizar.value = 1;
		frm.submit();
	}//FECHA IF
	
	//OPÇÃO FINALIZAR SELECIONADA
	if(opcao == 'F') {
		frmCarrinho.opc_finalizar.value = 1;
		frmCarrinho.action = "carrinho_finalizar.php";
		frmCarrinho.submit();
	}//FECHA IF

}//FECHA FUNCTION


Por último a página do carrinho com as funções. No caso que estamos fazendo de adicionar ele está chamando a opção efetivar.
<?
//INICIALIZA A SESSÃO
session_start();

//VERIFICA SE TEM PRODUTO NO CARRINHO PARA PUXAR
if(count($_SESSION[cesta]) > 0) { 
   //PEGA A CHAVE DO ARRAY
   $chave   =   array_keys($_SESSION[cesta]);
   
   //PEGA OS DADOS DA SESSÃO
   for($i=0; $i<sizeof($chave); $i++) { 
	  //ÍNDICE
	  $indice   =   $chave[$i]; 
	  
	  //ATRIBUI
	  $cesta[$indice][CODIGO]  =	$_SESSION[cesta][$indice][CODIGO];
	  $cesta[$indice][TITULO]  =	$_SESSION[cesta][$indice][TITULO];
	  $cesta[$indice][PRECO]   =	$_SESSION[cesta][$indice][PRECO];
	  $cesta[$indice][CAPA]	=	$_SESSION[cesta][$indice][CAPA];
	  $cesta[$indice][QTDE]	=	$_SESSION[cesta][$indice][QTDE];
   }//FECHA FOR
}//FECHA IF



//VERIFICA SE A OPÇÃO ATUALIZAR FOI SELECIONADA
if($_POST[opc_atualizar]) {
   //RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAÇÃO
   $v_atualiza  =  $_POST[a_prod];
   //PEGA A CHAVE DO ARRAY
   $chave  =  array_keys($v_atualiza);
   //EXIBE
   for($i=0; $i<sizeof($chave); $i++) {
	  //PEGA O INDICE DO PRODUTO
	  $indice   =   $chave[$i];
	  //ALTERA A QUANTIDADE DO PRODUTO SELECIONADO
	  $_SESSION[cesta][$indice][QTDE]   =  $v_atualiza[$indice][QTDE];
   }//FECHA FOR
}//FECHA IF



//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA
elseif($_POST[opc_excluir]) {   
	//RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO
	$indice  =  $_POST[indice_filme]; 
	//DESTRÓI A VARIÁVEL ESPECIFICADA
	unset($_SESSION[cesta][$indice]);
}//FECHA IF



//RECEBE O PEDIDO DO USUÁRIO
elseif($_POST[opc_efetivar]) {
	$v_prod   =  $_POST[filme_inp_hid];
	$indice   =  $_POST[indice_filme];
	if(!empty($v_prod[$indice][QTDE]) ) {
		//GRAVA NO ARRAY CESTA
		$cesta[$indice][CODIGO]  =	$v_prod[$indice][CODIGO];
		$cesta[$indice][TITULO]  =	$v_prod[$indice][TITULO];
		$cesta[$indice][PRECO]   =	$v_prod[$indice][PRECO];
		$cesta[$indice][CAPA]	=	$v_prod[$indice][CAPA];
		$cesta[$indice][QTDE]	=	$v_prod[$indice][QTDE];
	}//FECHA IF
   //GRAVA NA SESSÃO
   $_SESSION[cesta] =   $cesta;
}//FECHA ELSE
?>
<html>
<head>
	<title>Carrinho com Session</title>
	<link href="css/estilo.css" rel="stylesheet" type="text/css">
	<script src="js/scripts.js" type="text/javascript"></script>
	<script src="js/scripts_validacao.js" type="text/javascript"></script>
</head>

<body>

<table border="0" cellpadding="0" cellspacing="0" height="0" width="600" class="table_bc2">				
<tr>
	<td valign="top">
		<?
		//EXIBE O CARRINHO SE TIVER PRODUTOS
		if(count($_SESSION[cesta]) > 0) { 
		?>
							
		<form name="frmCarrinho" method="post">
		<input type="hidden" name="opc_excluir">
		<input type="hidden" name="opc_atualizar">
		<input type="hidden" name="opc_finalizar">
		<input type="hidden" name="indice_filme">
		<table border="0" cellpadding="10" cellspacing="5" height="100%" width="590">
		<tr>
			<td bgcolor="#c4e100" style="padding-left:10px;"><b>Descrição</b></td>
			<td bgcolor="#c4e100" style="padding-left:10px;"><b>Quantidade</b></td>
			<td bgcolor="#c4e100" style="padding-left:10px;"><b>Remover Item</b></td>
			<td bgcolor="#c4e100" style="padding-left:10px;"><b>Preço Unitário R$</b></td>
		</tr>
		<?
		//PEGA A CHAVE
		$chave_cesta  =  @array_keys($_SESSION[cesta]);
		
		//EXIBE OS PRODUTOS DA CESTA
		for($i=0; $i<sizeof($chave_cesta); $i++) { 
		$indice   =   $chave_cesta[$i]; 
		
		//SUBTOTAIS DE CADA PRODUTO
		$subtotal =   $_SESSION[cesta][$indice][QTDE] * ereg_replace(",",".",$_SESSION[cesta][$indice][PRECO]);
		
		//TOTAL GERAL
		$total   +=   $subtotal;
		?>							
			<tr>
				<td width="250"> <b><? echo $_SESSION[cesta][$indice][TITULO]; ?></b></td>
				<td align="center" width="100"><input type="text" name="a_prod[<? echo $indice; ?>][QTDE]" value="<? echo $_SESSION[cesta][$indice][QTDE]; ?>" class="box2" size="3"></td>
				<td align="center" width="125"><a href="java script: enviar('E', '<? echo $indice; ?>');"><img src="images/excluir.png" width="32" height="32" alt="EXCLUIR" align="absmiddle" border="0" name="excluir"></a></td>
				<td align="center" width="125"><b><? echo $_SESSION[cesta][$indice][PRECO]; ?></b></td>
			</tr>													
		<?
		}//FECHA FOR 
		?>					
		<tr>
			<td bgcolor="#c4e100" style="padding-left:10px;" colspan="4" align="right">
				<table border="0" cellpadding="0" cellspacing="0" height="0" width="100%">
				<tr>
					<td align="left"><input type="Button" value="Atualizar" class="atualizar" onClick="java script: enviar('A');"></td>
					<td align="right"><span class="total"><b>TOTAL:  R$<b><? echo number_format($total,2,',','.'); ?></b></span></td>
				</tr>
				<tr>
					<td><br><br></td>
				</tr>
				<tr>
					<td><input type="Button" value="Finzalizar" class="finalizar" onClick="java script: enviar('F');"></td>
				</tr>
				</table>
			</td>
		</tr>						
		</table>
		</form>
		<?
		}//FECHA IF(count) 
		else { ?>
		  <table width="90%" height="248"  border="0" align="center" cellpadding="0" cellspacing="0">
		  <tr>
			<td align="center"><span class="atencao_2">Desculpe, mas no momento você não possui nenhum produto.</span></td>
		  </tr>
		  </table>
		<?
		}//FECHA ELSE (count)?>
	</td>
</tr>
</table>

</body>
</html>


Acho que está todo ai.
(y)

Edição feita por: wesley.tome, 12/12/2006, 23:23.

.................




1 user(s) are reading this topic

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

IPB Skin By Virteq