Ir para conteúdo
Fórum Script Brasil
  • 0

[Ajuda Aqui] Carrinho de compras!


khayro

Pergunta

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 para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 .-. ;/

Editado por khayro
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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=%

Editado por khayro
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...