Jump to content


Photo

Carrinho De Compras


  • Faça o login para participar
1 reply to this topic

#1 [TnV]SoM

[TnV]SoM

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado
  • Localidade:Brusque - SC

Posted 01/11/2005, 08:45

Bom dia amigos, preciso de um help de vocês..
Seguinte, com base no tutorial do imasters de como criar um carrinho de compras utilizando sessions e array desenvolvi um sistema de carrinho de compras, porém o meu carrinho utiliza o banco de dados para listar os produtos, até aí tudo bem, o problema é:

A empresa tem muitos produtos, e quando estou utilizando o carrinho, nem todos os produtos que eu adiciono vão para o carrinho, o que pode ser?

Abaixo os códigos que estou trabalhando:


index.php
<?
//INICIALIZA A SESSÃO
session_start();

//Faz requerimento da conexão com o banco
require("connect.php");

//Numero de colunas
$total = 2;
?>
<html>
<head>
<title><?=$titulo;?></title>
<style type="text/css">
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
.css {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	font-style: normal;
	color: #000000;
	border: 1px dotted #666666;
}
.style1 {font-family: Verdana, Arial, Helvetica, sans-serif}
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #000000;
}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body>
<table width="770"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td align='center'><font face='Verdana' size='4'><b><?=$titulo;?></b></font></td>
      </tr>
    </table>
	<br>
	<table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
   <tr>
  <td><font face='Verdana' 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>
    <?
     $sql="select * from produtos order by COD ASC";
  $res= mysql_query($sql);
  $i=1;
  while($produto=mysql_fetch_array($res)){
 	 $i++;
 	 $produto[$i]['CODIGO']   =   $produto['cod'];
 	 $produto[$i]['DESC']     =   $produto['descricao'];
 	 $produto[$i]['LINHA']    =  $produto['linha'];
 	 $produto[$i]['PRECO']    =   $produto['preco'];
          $indice                =   $produto[$i];
      
     
           //VERIFICA
        if($total == $atual) {
        echo "</tr><tr>";
     $atual = 0;
     } ?> 
     
          <td width="14%" height="100"><div align="center"><img src="<? echo $thumb_index.$dir.$produto['foto']; ?>.jpg" border="1"></div></td>
          <td width="36%">
    
    <table width="94%"  border="0" align="center" cellpadding="0" cellspacing="0">
          
    <tr>
             <td><font face='Verdana' size='2'><? echo $produto['cod']; ?> - </font><font face='Verdana' size='1'><? echo $produto['descricao']; ?></font></td>
          </tr>
          
    <tr>
             <td><font face='Verdana' size='1'><strong>R$ <? echo $produto['preco']; ?></strong></font></td>
          </tr>
          
    <tr>
      <td><font face='Verdana' size='1'>Tamanhos:  <select name="txtprod[<? echo $indice;?>][TAM]" class="css">
     <?
      $sql_tamanho="select * from tamanhos where tam=".$produto['tam'];
      $res_tamanho= mysql_query($sql_tamanho);
      while($tamanhos=mysql_fetch_array($res_tamanho)){
          $tam = $tamanhos['numeracoes'];
        ?>
       <option value="<?=$tam;?>"><?=$tam;?></option>
             <?
     }
     ?></select></font>        </td>
      </tr>
    <tr>
             <td>
    <input type="hidden" name="txtprod[<? echo $indice;?>][CODIGO]"  value="<? echo $produto['cod']; ?>">
    <input type="hidden" name="txtprod[<? echo $indice;?>][DESC]"  value="<? echo $produto['descricao']; ?>">
    <input type="hidden" name="txtprod[<? echo $indice;?>][LINHA]"  value="<? echo $produto['linha']; ?>">
    <input type="hidden" name="txtprod[<? echo $indice;?>][PRECO]"  value="<? echo $produto['preco']; ?>">
    <input type="hidden" name="tamanho"  value="<? echo $produto['tam']; ?>">
    <span class="style1">Quantidade:</span>
    <input name="txtprod[<? echo $indice;?>][QTDE]" type="text" class="css"  size="3" maxlength="3"></td>
          </tr>
    <tr>
      <td><input name="image" type="image" onClick="javascript: document.forms[0].submit();" src="carrinho.gif" width="134" height="16" border="0"></td>
      </tr>
          </table></td>
       <?
       //SOMA 1 A VARIÁVEL CONTROLADORA
       $atual++;   
     }//FECHA WHILE ?>
       </tr>
       </table>   
    </form></td>
  </tr>
</table>
</body>
</html>


carrinho.php
<?
//INICIALIZA A SESSÃO
session_start();
require("connect.php");
//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]['DESC']  =    $_SESSION[cesta][$indice]['DESC'];
      $cesta[$indice]['LINHA']    =    $_SESSION[cesta][$indice]['LINHA'];
      $cesta[$indice]['PRECO']    =    $_SESSION[cesta][$indice]['PRECO'];
      $cesta[$indice]['QTDE']     =    $_SESSION[cesta][$indice]['QTDE'];
   $cesta[$indice]['TAM']     =    $_SESSION[cesta][$indice]['TAM'];
   }//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]['CODIGO']   =    $v_prod[$indice]['CODIGO'];
      $cesta[$indice]['DESC']     =    $v_prod[$indice]['DESC'];
      $cesta[$indice]['LINHA']    =    $v_prod[$indice]['LINHA'];
      $cesta[$indice]['PRECO']    =    $v_prod[$indice]['PRECO'];
      $cesta[$indice]['QTDE']     =    $v_prod[$indice]['QTDE'];
   $cesta[$indice]['TAM']      =    $v_prod[$indice]['TAM'];
      }//FECHA IF
   }//FECHA FOR
   
   //GRAVA NA SESSÃO
   $_SESSION[cesta]        =   $cesta;
}//FECHA ELSE
?>

<html>
<head>
<title><?=$titulo;?></title>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	background-color: #FFFFFF;
}
.style2 {
	color: #000000;
	font-weight: bold;
}
.style5 {color: #FFFFFF; font-weight: bold; }
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #000000;
}
-->
</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>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
<table width="773"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><table width="95%"  border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td align='center'><font face='Arial' size='4'><b><?=$titulo;?></b></font></td>
      </tr>
    </table>
    <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="3%">&nbsp;</td>
          <td width="4%"><span class="style2">Qtde</span></td>
          <td width="44%"><span class="style2">Produto</span></td>
          <td width="20%">Tamanho</td>
          <td width="12%"><span class="style2">Valor</span></td>
          <td width="17%"><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_compras   +=   $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]['DESC']; ?> - <? echo $_SESSION[cesta][$indice]['LINHA']; ?></font></td>
          <td><font face='Arial' size='2'><? echo $_SESSION[cesta][$indice]['TAM'];
 ?>
    
    
  </font></td>
          <td height="25"><font face='Arial' size='2'>R$ <? echo $_SESSION[cesta][$indice]['PRECO']; ?></font></td>
          <td width="17%" height="25"><font face='Arial' size='2'> R$ <? echo number_format($subtotal,2,',','.'); ?></font></td>
        </tr>
        <?
   }//FECHA FOR ?>
        <tr>
          <td height="25" colspan="4">
    <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_compras,2,',','.'); ?></b></td>
        </tr>
        <tr>
          <td height="25" colspan="4">&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>
	<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>
      <?
	}//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>
    </td>
  </tr>
</table>
</body>
</html>

Desde já agradeço pela atenção de todos que tiveram o trabalho de ler meu post.

#2 [TnV]SoM

[TnV]SoM

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado
  • Localidade:Brusque - SC

Posted 01/11/2005, 09:41

Bom, acabo de conseguir resolver esse problema que estava dando de nao adicionar todos os produtos listados no carrinho, ele só listava os 6 primeiros e alguns do final, então enquanto esperava a ajuda do fórum fui estudando o código para tentar resolver e não precisar encomodar vocês, e acabou que consegui resolver o problema era no while que eu estava dando para listar os produtos:


antigo
$i=1;
 while($produto=mysql_fetch_array($res)){
  $i++;
  $produto[$i]['CODIGO']   =   $produto['cod'];
  $produto[$i]['DESC']     =   $produto['descricao'];
  $produto[$i]['LINHA']    =  $produto['linha'];
  $produto[$i]['PRECO']    =   $produto['preco'];
  $indice                =   $produto[$i];

minha mudança que corrigiu o problema:
$i=0;
while($produto=mysql_fetch_array($res)){
     $indice                  =   $produto[$i];
     $produto[$i]['CODIGO']   =   $produto['cod'];
     $produto[$i]['DESC']     =   $produto['descricao'];
     $produto[$i]['LINHA']    =   $produto['linha'];
     $produto[$i]['PRECO']    =   $produto['preco'];

Bom agradeço ao pessoal que leu meu post.

ate +
abraços




1 user(s) are reading this topic

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

IPB Skin By Virteq