Jump to content
Fórum Script Brasil
  • 0

[Ajuda Aqui] Carrinho de compras!


khayro

Question

Bom.. não tenho muita experiencia em php, e estou tentando criar um carrinho de compras simples, com sql, to usando o Easyphp, e estou com um problema, a parte de enviar os produtos que estão no carrinho, junto com o formulário que fica os dados do comprador.

alguém poderia me ajudar ? me dizendo como fazer ? dando algum exemplo ? mostrando oque eu precisaria do código do carrinho pra montar o envio, não faço ideia de como submeter a lista de produtos pra poder enviar.

olha o código aí em baixo.

<?php
      session_start();

      if(!isset($_SESSION['carrinho'])){
         $_SESSION['carrinho'] = array();
      }

      //adiciona produto

      if(isset($_GET['acao'])){

         //ADICIONAR CARRINHO
         if($_GET['acao'] == 'add'){
            $id = intval($_GET['id']);
            if(!isset($_SESSION['carrinho'][$id])){
               $_SESSION['carrinho'][$id] = 1;
            }else{
               $_SESSION['carrinho'][$id] += 1;
            }
         }

         //REMOVER CARRINHO
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['carrinho'][$id])){
               unset($_SESSION['carrinho'][$id]);
            }
         }

         //ALTERAR QUANTIDADE
         if($_GET['acao'] == 'up'){
            if(is_array($_POST['prod'])){
               foreach($_POST['prod'] as $id => $qtd){
                  $id  = intval($id);
                  $qtd = intval($qtd);
                  if(!empty($qtd) || $qtd <> 0){
                     $_SESSION['carrinho'][$id] = $qtd;
                  }else{
                     unset($_SESSION['carrinho'][$id]);
                  }
               }
            }
         }

      }


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Carrinho</title>
</head>

<body>
<table>
    <caption>Carrinho de Compras</caption>
    <thead>
          <tr>
            <th width="244">Produto</th>
            <th width="79">Quantidade</th>
            <th width="64">Remover</th>
          </tr>
    </thead>
            <form action="?acao=up" method="post">
    <tfoot>
           <tr>
            <td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
            <tr>
            <td colspan="5"><a href="index.php">Continuar Comprando</a></td>
            <tr>
            <tr>
            <td colspan="5"><a href="finalizar.php">Finalizar Pedido</a></td>
    </tfoot>

    <tbody>
               <?php
                     if(count($_SESSION['carrinho']) == 0){
                        echo '<tr><td colspan="5">Não há produto no carrinho</td></tr>';
                     }else{
                        require("conexao.php");
                                                               $total = 0;
                        foreach($_SESSION['carrinho'] as $id => $qtd){
                              $sql   = "SELECT *  FROM produtos WHERE id= '$id'";
                              $qr    = mysql_query($sql) or die(mysql_error());
                              $ln    = mysql_fetch_assoc($qr);

                              $nome  = $ln['nome'];

                           echo '<tr>
                                 <td>'.$nome.'</td>
                                 <td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
                                 <td><a href="?acao=del&id='.$id.'">Remove</a></td>
                              </tr>';
                        }
                           $total = number_format($total, 2, ',', '.');
                           echo '<tr>
                              </tr>';
                     }
               ?>


     </tbody>
        </form>
</table>

</body>
</html>

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

o problema é que nenhum dos tutoriais, artigos e video-aulas, mostram realmente como fazer o fim do carrinho, gerando a nota, ou tabela, ou apenas como importar os produtos escolhidos pra um email .. tenso ;//

alguém tem alguma ideia de como a gente faz pra mandar os produtos que foram escolhidos por email ?

Link to comment
Share on other sites

  • 0

hm, vi um cara com um problema parecido e ele recebeu essa resposta

"Mano, você terá de fazer isso com array, assim você fará um

loop no Form que vem antes trazendo os dados, e esse Loop

chegará nessa página dependedo de quantos produtos tenha no

carrinho, então você simplesmente pega os dados que vier seleciona

tudo em um e faz o loop do dados dentro do e-mail para exibir a

quantidade de produtos, ou se preferir pode fazer um SUM no calcular

a quantidade produtos e enviar o numero de pedido juntando tudo com o GROUP BY, simples! "

aqui meu arquivo carrinho.php

<?php
      session_start();

      if(!isset($_SESSION['carrinho'])){
         $_SESSION['carrinho'] = array();
      }

      //adiciona produto

      if(isset($_GET['acao'])){

         //ADICIONAR CARRINHO
         if($_GET['acao'] == 'add'){
            $id = intval($_GET['id']);
            if(!isset($_SESSION['carrinho'][$id])){
               $_SESSION['carrinho'][$id] = 1;
            }else{
               $_SESSION['carrinho'][$id] += 1;
            }
         }

         //REMOVER CARRINHO
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['carrinho'][$id])){
               unset($_SESSION['carrinho'][$id]);
            }
         }

         //ALTERAR QUANTIDADE
         if($_GET['acao'] == 'up'){
            if(is_array($_POST['prod'])){
               foreach($_POST['prod'] as $id => $qtd){
                  $id  = intval($id);
                  $qtd = intval($qtd);
                  if(!empty($qtd) || $qtd <> 0){
                     $_SESSION['carrinho'][$id] = $qtd;
                  }else{
                     unset($_SESSION['carrinho'][$id]);
                  }
               }
            }
         }

      }


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Carrinho</title>
</head>

<body>
<table>
    <caption>Carrinho de Compras</caption>
    <thead>
          <tr>
            <th width="244">Produto</th>
            <th width="79">Quantidade</th>
            <th width="64">Remover</th>
          </tr>
    </thead>
            <form action="?acao=up" method="post">
    <tfoot>
           <tr>
            <td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
            <tr>
            <td colspan="5"><a href="index.php">Continuar Comprando</a></td>
            <tr>
            <tr>
            <td colspan="5"><a href="finalizar.php">Finalizar Pedido</a></td>
    </tfoot>

    <tbody>
               <?php
                     if(count($_SESSION['carrinho']) == 0){
                        echo '<tr><td colspan="5">Não há produto no carrinho</td></tr>';
                     }else{
                        require("conexao.php");
                                                               $total = 0;
                        foreach($_SESSION['carrinho'] as $id => $qtd){
                              $sql   = "SELECT *  FROM produtos WHERE id= '$id'";
                              $qr    = mysql_query($sql) or die(mysql_error());
                              $ln    = mysql_fetch_assoc($qr);

                              $nome  = $ln['nome'];

                           echo '<tr>
                                 <td>'.$nome.'</td>
                                 <td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
                                 <td><a href="?acao=del&id='.$id.'">Remove</a></td>
                              </tr>';
                        }
                           $total = number_format($total, 2, ',', '.');
                           echo '<tr>
                              </tr>';
                     }
               ?>


     </tbody>
        </form>
</table>

</body>
</html>
aqui meu arquivo finalizar.php
<?php

//INICIALIZA A SESSÃO
session_start();

//VERIFICA SE FOI ESCOLHIDA A OPÇÃO PARA FECHA O PEDIDO
if($_POST[opc_enviar]) {

//RECEBE OS DADOS DO FORMULÁRIO
$v_nome = $_POST[txtNome];
$v_end = $_POST[txtEndereco];
$v_email = $_POST[txtEmail];
$v_produtos = $_POST[v_produtos];
$v_total = number_format($_POST[v_total],2,',','.');

//EMAIL DO ADMINISTRADOR QUE VAI RECEBER O PEDIDO
$email_dest = "khayro@gmail.com";

//PREPARA O PEDIDO
$mensagem = "<center><table width='500' border='0' cellspacing='1' cellpadding='4' bgcolor='#4a66a3'>
<tr>
    <td bgcolor='white' valign='top'>
       <link rel='important stylesheet' href='chrome://messenger/skin/messageBody.css'>
       <style type='text/css' media='screen'>
       <!-- td { color: #069; font-size: 8pt; font-family: Arial, Verdana, Arial, Helvetica, sans-serif } --></style><br>
        <p align='justify'>Prezado Administrador,<br><br>
          Recebemos através do site o pedido de compra abaixo descrito:<br><br>

          <b>DADOS DA COMPRA:</b><BR>


          <b>Produto:</b> $v_produtos<br>
          <b>Quantidade:</b> <?php echo $_SESSION[cesta][$indice][QTDE]<br>
          <b>Total a Pagar:</b> $v_total<br><br>

          <b>DADOS PARA ENTREGA:</b><BR>
          <b>Nome:</b> $v_nome<br>
          <b>Endereço:</b> $v_end<br>
          <b>Email:</b> $v_email<br>

          <p> <font color='#076DB8'>Atenciosamente,<br>

        <br>

        <b>Departamento Comercial</b><br>
        Nome do Seu site</font>
      <br>
      <b><font color='#7694CB' size='1' face='Verdana, Arial, Helvetica, sans-serif'>:: Politica de Privacidade::<br></font></b>
      <font color='#7694CB' size='1' face='Verdana, Arial, Helvetica, sans-serif'>O envio e recebimento de nossas mensagens procura estar alinhado com o Código de Ética Anti-SPAM que objetiva reger e orientar a comunicação institucional, comercial e publicitária enviada sob a forma de mensagens eletrônicas.</font>
      <br>
      <hr size='1'>
       <font size='1' face='Verdana, Arial, Helvetica, sans-serif'>
       Temos a forte convicção de que a relação entre cliente e empresa deve ser marcada pelo conceito de parceria, fortalecendo o vínculo estabelecido em bases de
       confiança e apoio mútuo.</font></td>
       </tr></table></center>";

    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";// More headers
    $headers .= "From: $v_email" . "\r\n"; // 'From: $email_dest' . "\r\n";

mail("$email_dest", "Pedido: Nome do Seu Site", "$mensagem", "$headers");



if (mail){

       //ELIMINA TODAS AS VARIÁVEIS DA SESSÃO
       $_SESSION = array();

       //DESTRÓI A SESSÃO PARA GARANTIR
       @session_destroy();

?>




&lt;script language="JavaScript">
<!--
alert("PARABÉNS!!\n\nO seu pedido foi enviado com sucesso.");
window.location.href = "index.php";
//-->
</script>
<?php
}//FECHA IF(envia)
else {?>
&lt;script language="JavaScript">
<!--
alert("ERRO!!\n\nAconteceu algum problema.\n\nPor favor, tente novamente...");
window.location.href = "index.php";
//-->
</script>
<?php
}//FECHA ELSE (envia)
}//FECHA IF

?>


<html>
<head>
<title>.:: WebMaster.PT :: Carrinho de Compras Personalizado ::.</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>

&lt;script language="JavaScript">
<!--
function finaliza() {
if(confirm('Deseja mesmo efetivar esse pedido ?'))
return true;
else return false;
}//FECHA FUNCTION
//-->
</script>

</head>

<body>
<table width="773" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><br><br>

<br><br>

<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><font size="2" face="Arial">Fechamento do pedido de compras: </font></td>
</tr>
</table>

<br>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#0099CC">
<td width="10%"><span class="style2">Qtde</span></td>
<td width="53%"><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>

<?php
//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];

//ATRIBUI CONTEUDO A VAR QUE VAI SER USADO NO EMAIL
$v_produtos .= $_SESSION[cesta][$indice][QTDE]." - ".$_SESSION[cesta][$indice][ARTISTA]." ".$_SESSION[cesta][$indice][ALBUM]." - ".$_SESSION[cesta][$indice][preço]."\n";

//SUBTOTAIS DE CADA PRODUTO
$subtotal = $_SESSION[cesta][$indice][QTDE] * $_SESSION[cesta][$indice][preço];

//TOTAL GERAL
$total += $subtotal;
?>
<tr>
<td height="25"><font face='Arial' size='2'><?php echo $_SESSION[cesta][$indice][QTDE]; ?></font></td>
<td height="25"><font face='Arial' size='2'><?php echo $_SESSION[cesta][$indice][ARTISTA]; ?> - <?php echo $_SESSION[cesta][$indice][ALBUM]; ?></font></td>
<td height="25"><font face='Arial' size='2'>R$ <?php echo $_SESSION[cesta][$indice][preço]; ?></font></td>
<td width="18%" height="25"><font face='Arial' size='2'> R$ <?php echo number_format($subtotal,2,',','.'); ?></font></td>
</tr>
<?php
}//FECHA FOR ?>
<tr>
<td height="25" colspan="2"> </td>
<td height="25" bgcolor="#FF0000"><span class="style5"> Total à pagar: </span></td>
<td height="25" bgcolor="#FFF0F0" class="style2"> R$ <b><?php echo number_format($total,2,',','.'); ?></b></td>
</tr>
</table>

<form name="frmFinalizar" method="post" onSubmit="return finaliza();">
<input type="hidden" name="opc_enviar" value="1">
<input type="hidden" name="v_produtos" value="<?php echo $v_produtos; ?>">
<input type="hidden" name="v_total" value="<?php echo $total; ?>">
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#FFCC99" class="style2"><div align="center">Dados Pessoais</div></td>
</tr>
</table>

<br>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="11%" height="25"><font face="Arial" size="2">Nome:</font></td>
<td height="25" colspan="3"><font face="Arial" size="2">
<input name="txtNome" type="text" size="50" maxlength="50"></font></td>
</tr>

<tr>
<td height="25"><font face="Arial" size="2">Endereço:</font></td>
<td width="45%" height="25"><font face="Arial" size="2">
<input name="txtEndereco" type="text" size="40" maxlength="80"></font></td>
<td width="8%" height="25"><font face="Arial" size="2">Email:</font></td>
<td width="36%" height="25"><input name="txtEmail" type="text" size="40" maxlength="45"></td>
</tr>

<tr valign="bottom">
<td height="50" colspan="4"><div align="center">
<input name="btnEnviar" type="submit" value="Confirmar o pedido de compras >>"></div></td>
</tr>
</table>
</form>

<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="47%" align='center'><font face='Arial' size='2'><a href="index.php"><< Página inicial </a></font></td>
<td width="53%" align='center'><font face='Arial' size='2'><a href="carrinho.php"><< Carrinho de compras</a></font> </td>
</tr>
</table><br></td>
</tr>

</table>
</body>
</html>
lá no
//RECEBE OS DADOS DO FORMULÁRIO
$v_nome = $_POST[txtNome];
$v_end = $_POST[txtEndereco];
$v_email = $_POST[txtEmail];
$v_produtos = $_POST[v_produtos];
$v_total = number_format($_POST[v_total],2,',','.');

não consigo fazer ele enviar os dados do carrinho, e nem sei como trazer os dados do carrinho pra mandar por email.

poderiam dar um exemplo ? ajudaria mais .-. ;/

Edited by khayro
Link to comment
Share on other sites

  • 0

Ueh, pega os dados do carrinho daonde estão. Se são guardados na sessão, puxe-os da sessão. Se são guardados no banco de dados, puxe-os do banco de dados.

Crie a string que será enviada, crie os headers e use a função mail(). Não há mais nada a ser feito.

Link to comment
Share on other sites

  • 0

então amigo, olhe aqui, puxei da session.. mas não ta pegando .

<?

/************************************************************************

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();

if(!isset($_SESSION['carrinho])){

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

}

//VERIFICA SE FOI ESCOLHIDA A OPÇÃO PARA FECHA O PEDIDO

if($_POST[opc_enviar]) {

//RECEBE OS DADOS DO FORMULÁRIO

$v_nome = $_POST[txtNome];

$v_end = $_POST[txtEndereco];

$v_email = $_POST[txtEmail];

$v_cc = $_POST[v_cc];

$v_produtos = $_POST[carrinho];

$v_cond = $_POST[v_cond];

//EMAIL DO ADMINISTRADOR QUE VAI RECEBER O PEDIDO

$email_dest = "xxxxxxxxxxxxxxxxxxxxxxx";

//PREPARA O PEDIDO

$mens = "---------------------------------------------------------------------\n";

$mens .= " xxxxxxxxxxxxxx \n";

$mens .= " Pedido de Produtos \n";

$mens .= "---------------------------------------------------------------------\n\n";

$mens .= "Qtde Descrição \n";

$mens .= "---------------------------------------------------------------------";

$mens .= "\n".$v_produtos." \n";

$mens .= "DADOS PARA ENTREGA: \n";

$mens .= "Nome: ".$v_nome." \n";

$mens .= "Cod.Cliente: ".$v_cc." \n";

$mens .= "Endereço: ".$v_end." \n";

$mens .= "Condicoes: ".$v_cond." \n\n";

$mens .= "Email: ".$v_email." \n\n";

$mens .= "Obrigado!! \n";

$mens .= "Prolab Vitan ";

//DISPARA O EMAIL

$envia = mail($email_dest, "xxxxxxxxxxxx", $mens,"From:".$v_email."\r\nBcc:".$v_email);

//VERIFICA SE O EMAIL FOI ENVIADO COM SUCESSO

if($envia) {

//ELIMINA TODAS AS VARIÁVEIS DA SESSÃO

$_SESSION = array();

//DESTRÓI A SESSÃO PARA GARANTIR

@session_destroy(); ?>

<?

}//FECHA IF(envia)

else {?>

<?

}//FECHA ELSE (envia)

}//FECHA IF

?>

<html>

<head>

<title>Enviar</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 finaliza() {

if(confirm('Deseja mesmo efetivar esse pedido ?'))

return true;

else return false;

}//FECHA FUNCTION

//-->

</script>

</head>

<body>

<table width="773" border="0" cellspacing="0" cellpadding="0">

<tr>

</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</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">Fechamento do pedido de compras: </font></td>

</tr>

</table>

<br>

<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr bgcolor="#0099CC">

<td width="10%"><span class="style2">Qtde</span></td>

<td width="53%"><span class="style2">Produto</span></td>

<td width="19%"><span class="style2"></span></td>

<td width="18%"><span class="style2"></span></td>

</tr>

<?

//PEGA A CHAVE

$chave_cesta = array_keys($_SESSION['carrinho]);

//EXIBE OS PRODUTOS DA CESTA

for($i=0; $i<sizeof($chave_cesta); $i++) {

$indice = $chave_cesta[$i];

//ATRIBUI CONTEUDO A VAR QUE VAI SER USADO NO EMAIL

$v_produtos .= $_SESSION['carrinho'][$indice][QTD]."&nbsp;-&nbsp;".$_SESSION['carrinho'][$indice][ARTISTA]."&nbsp;&nbsp;&nbsp;".$_SESSION['carrinho'][$indice][ALBUM]."&nbsp;-&nbsp;".$_SESSION['carrinho'][$indice][preço]."\n";

?>

<tr>

<td height=25"><font face='Arial' size='2'><? echo $_SESSION['carrinho][$indice][QTDE]; ?></font></td>

<td height=25"><font face='Arial' size='2'><? echo $_SESSION['carrinho][$indice][ARTISTA]; ?> - <? echo $_SESSION['carrinho'][$indice][ALBUM]; ?></font></td>

</tr>

<?

}//FECHA FOR ?>

<tr>

<td height="25" colspan="2">&nbsp;&nbsp;</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>

</table>

<form name="frmFinalizar" method="post" onSubmit="return finaliza();">

<input type="hidden" name="opc_enviar" value="1">

<input type="hidden" name="v_produtos" value="<? echo $v_produtos; ?>">

<input type="hidden" name="v_total" value="<? echo $total; ?>">

<table width=%

Edited by khayro
Link to comment
Share on other sites

  • 0

Alí você não tá pegando da Session não, tá pegando via POST. Vê se é isso.

E ao usar arrays associativos, sempre coloque aspas simples no índice.

Exemplo:

$variavel['variavel'] ao invés de $variavel[variavel]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...