• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

REVISTAPHP

[PHP] Carrinho de Compras

18 mensagens neste tópico

O objetivo desse artigo é mostrar como criar um carrinho de compras de forma muito fácil. Muitos criam códigos difíceis e bagunçado, e para quem deseja aprender fica mais complicado, então procurei utilizar uma sintaxe mais tranquila para facilitar seu aprendizado.

Bom, vamos começar criando nossas tabelas que utilizaremos no decorrer do artigo.

Iniciamos a criação da tabela de produtos, eu optei por apenas alguns campos mais por questões de exemplo para esse artigo, mas você poderá incrementar com os campos que achar melhor, exemplos comum encontrados: peso, quantidade e outros.

O campo peso é muito usado para calcular preço de transporte e quando se quer colocar um preço com frete grátis, podemos colocar o peso como zero.

OBS: No campo preço eu optei por um tipo double (10,2) precisão de 2 casas decimais, creio que não precisa ser modificado pois esse valor atente bem as necessidades atuais.

Criando a tabela tbl_produtos

CREATE TABLE `tbl_produtos` (
      `cod` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      `nome` VARCHAR( 150 ) NOT NULL ,
      `img` VARCHAR( 36 ) NOT NULL ,
      `preco` DOUBLE( 10, 2 ) NOT NULL
) ENGINE = MYISAM ;

OBS: Caso você opte por incluir mais campos, não se esqueça de modificar mais adiante as opções de insert e update.

Depois de criada nossa tabela, vamos popular com alguns produtos, no código abaixo mostro somente a inclusão de 2 produtos, porem faça inclusão de no mínimo 4 para ficar um visual melhor ao listar nossos produtos.

Populando a tabela tbl_produtos

INSERT INTO `tbl_produtos` ( `cod` , `nome` , `img` , `preco` )
      VALUES (
            NULL , 'Notebook HP 2160br', '001.jpg', '5450'
      ), (
           NULL , 'Computador HP', '002.jpg', '1400'
      );

Nosso próximo passo é criarmos a tabela de carrinho de compras, que será responsável em armazenar os produtos selecionados pelo visitante.

Repare ainda o campo chamado sessao. Esse campo será o responsável por identificar cada pessoa no ato de carregar seu carrinho, e você pergunta:

Como isso é feito ?

Resposta: Cada visitante recebe uma sessão atual ao visitar o site, e para recuperar essa sessão atual utilizamos session_id(). Experimente pegar um arquivo e colocar um echo session_id() que deverá aparecer uma sequência de caracteres que é no caso a nossa sessão atual.

session_id(): Retorna o id de sessão para a sessão atual ou uma string vazia ("") se não houver sessão atual (não existe um id de sessão atual).

Criando a tabela tbl_carrinho

CREATE TABLE `tbl_carrinho` (
      `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      `cod` INT( 11 ) NOT NULL ,
      `nome` VARCHAR( 150 ) NOT NULL ,
      `preco` DOUBLE( 10, 2 ) NOT NULL ,
      `qtd` INT( 11 ) NOT NULL ,
      `sessao` TEXT NOT NULL
) ENGINE = MYISAM ;

Agora chegou a hora de criarmos nossos arquivos .php e vamos começar com nosso arquivo de conexão com banco de dados.

No início apenas definimos os valores usados para conectarmos a nossa base de dados MySQL.

mysql_connect: Abre ou reutiliza uma conexão com um servidor MySQL.

O servidor MySQL. Também pode incluir um número de porta (exemplo "servidor:porta"), ou um caminho para um socket local (exemplo ":/caminho/para/socket"), para o servidor local (localhost).

Se a diretiva do PHP mysql.default_host não estiver definida (padrão), então o valor padrão é 'localhost:3306'.

No meu caso como já está definido por padrão, não precisei definir a porta.

Criando o arquivo conn.php

<?php
// Arquivo responsável por conectar a nossa base de dados
$hostname_conn = "127.0.0.1";
$database_conn = "artigos";
$username_conn = "username";
$password_conn = "senha";

// Conectamos ao nosso servidor MySQL
if(!($conn = mysql_connect($hostname_conn,$username_conn,$password_conn))) 
{
   echo "Erro ao conectar ao MySQL.";
   exit;
}
// Selecionamos nossa base de dados MySQL
if(!($con = mysql_select_db($database_conn,$conn))) 
{
   echo "Erro ao selecionar ao MySQL.";
   exit;
}
?>

Agora chegou a parte legal que é a listagem dos produtos na qual vamos selecionar para incluirmos no carrinho de compras.

Logo no início eu estou definindo o charset que nosso tipo de codificação:

charset=iso-8859-1

Na linha fazemos nosso include que será usado para conectarmos a nossa base de dados.

include "Connections/conn.php";

Nas linhas abaixo fazemos nosso select a qual defini selecionar somente 4 registros e chamo a função GeraColunas passando por parâmetro o número de 2 colunas e nosso SQL.

$sql = "SELECT * FROM tbl_produtos ORDER BY RAND() LIMIT 0,4";
GeraColunas(2, $sql)

Após as linhas acima fazemos nosso for para listar nossos registros e armazenamos nas variáveis onde na variável $preco eu faço a formatação usando number_format().

number_format() retorna uma versão formatada de number. Esta função aceita um, dois ou quatro parâmetros (não três).

Agora montamos nosso HTML dinâmico para listar os produtos já com as variáveis já nos devidos lugares. E para um melhor entendimento algumas linhas estão comentadas.

Criando o arquivo produtos.php

<!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 de Compras</title>
</head>

<body>
<div align="center">
<?php
include "Connections/conn.php";
//*********************************************************************
// CONFIGURAÇÃO DE BANCO DE DADOS
//*********************************************************************
$con = mysql_connect($hostname_conn,$username_conn,$password_conn);
$bd  = mysql_select_db($database_conn);
?>
<table cellSpacing=1 cellPadding=0 width="50%" align=center border=0>
<tr>
<td>
     <?
//*********************************************************************
// GERA A INSTRUÇÃO SQL E CHAMA A FUNÇÃO PARA GERAR AS COLUNAS
//*********************************************************************
$sql = "SELECT * FROM tbl_produtos ORDER BY RAND() LIMIT 0,4";
GeraColunas(2, $sql)
?>
</td>
</tr>
</table>
<?
//*********************************************************************
// FUNÇÃO: GERACOLUNAS
// Parametros:
//  $pNumColunas (int)   > Quant. de colunas para distribuição
//  $pQuery    (string) > Query de registros
//*********************************************************************
function GeraColunas($pNumColunas, $pQuery) {
$resultado = mysql_query($pQuery);
echo ("<table width='100%' border='0'>\n");
for($i = 0; $i <= mysql_num_rows($resultado); ++$i) {

for ($intCont = 0; $intCont < $pNumColunas; $intCont++) {
  $linha = mysql_fetch_array($resultado);
  if ($i > $linha) {
   if ( $intCont < $pNumColunas-1) echo "</tr>\n";
   break;
  }

  $cod = $linha[0];
  $nome = $linha[1];
  $img = $linha[2];
  $preco = number_format($linha[3],2,",",".");

  if ( $intCont == 0 ) echo "<tr>\n";
  echo "<td>";
  // Aqui você inclui o conteudo
  echo "<table width='266' border='0' cellspacing='0' cellpadding='0'>";
  echo "<tr>";
  echo "<td width='250' height='141' valign='middle'><div align='center'><img src='produtos/".$img."' border='0' width='189' height='141' /></div></td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td>";
  echo "<table width='92%' border='0' align='center' cellpadding='0' cellspacing='0'>";
  echo "<tr>";
  echo "<td><div align='center' style='font-size:10px;font-family:Verdana'><strong><a href='carrinho.php?cod=".$cod."&acao=incluir'>".$nome."</a></strong></div><strong><div align='center'><font color='#FF0000' size='4px'> R$ ".$preco." </font></strong></div></td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td><div align='center' style='font-size:10px;font-family:Verdana'><a href='carrinho.php?cod=".$cod."&acao=incluir'><img src='imgs/add_carrinho.jpg' border='0'/></a></div><br></td>";
  echo "</tr>";
  echo "</table>";
  echo "</td>";
  echo "</tr>";
  echo "</table>";
  
   // Aqui é o final do conteudo
  echo "</td>";

  if ( $intCont == $pNumColunas-1 ) {
   echo "</tr>\n";
  } else { $i++; }
}

}
echo ('</table>');
}

?>
</div>
</body>
</html>

Após algumas linhas de código, o resultado do arquivo produtos.php é a imagem abaixo, isso é porque eu defini apenas 2 colunas a serem listadas e de forma aleatória que foi definido no nosso SQL usando  RAND().

http://www.revistaphp.com.br/arquivos/Image/carlosjr/carrinho_001.jpg

carrinho_001.jpg

Esse arquivo principal do nosso sistema e que é nosso objetivo principal, e como no decorrer do artigo vamos usar muita session_id(), vamos relembrar mais uma vez.

session_id(): Retorna o id de sessão para a sessão atual ou uma string vazia ("") se não houver sessão atual (não existe um id de sessão atual).

Logo no início iniciamos nossa sessão que será de fundamental importância no carrinho, sem isso nosso carrinho não irá funcionar.

Repare que nas linhas abaixo, recuperamos os parâmetros código do produto e a ação usada.

$acao = $_GET['acao'];
$cod =  $_GET['cod'];

A variável $acao indicará ao nosso código o que fazer, que poderá ser incluir, excluir ou modificar os dados do carrinho.

Ação incluir

Logo no começo verificamos se a $acao é igual a incluir se for incluir temos que verificar se veio algum produto para incluirmos no nosso carrinho, caso tenha algum produto, verificamos se o conteúdo da variável é numérica.

OBS: Temos que lembrar que mesmo atendendo os dois quesitos ainda temos que verificar se esse produto já não está no carrinho e assim evitarmos incluir produtos repetidos no carrinho, porém repare que usamos a condição abaixo.

AND tbl_carrinho.sessao = '".session_id()."'

Essa condição é para garantir que não terá um produto repetido no carrinho para uma determinada pessoa que é nosso session_id().

Podemos observar ainda que mesmo atendendo os 3 quesitos, ainda verifico se o produto que a pessoa deseja incluir existe em nossa base de dados, isso evita a pessoa mudar manualmente um código do produto na URL e se atender esse último quesito, aí sim fazemos nosso insert na base de dados.

Ação excluir

Nos 3 primeiros IF eu verifico se a ação é excluir, se for passo para verificar se existe algum conteúdo na variável $cod que é a variável do nosso produto e verificamos se é do tipo numérico.

Após fazermos as 2 verificações acima, devemos ver se o produto a ser excluído existe mesmo no nosso carrinho para a session_id() atual.

Se a variável $totalRows_rs_car for maior do que zero, é porque existe o produto a ser excluído, então excluímos o produto com o código e session_id() definido.

Ação modificar

Antes de entrar em mais detalhes devemos reparar no código HTML a linha abaixo, pois se reparar definimos um nome igual a qtd que é um array com os valores das quantidades dos produtos que iremos modificar e como esse campo  é comum a todos os produtos  então  usamos um array com os campos  chave dos produtos.

<input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['cod']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" />

Armazenamos o conteúdo na variável $quant e verificamos se é um array e iniciamos a linha abaixo para percorrer nosso array para modificarmos as quantidades dos produtos caso os valores forem numéricos.

foreach($quant as $cod => $qtd)

Após a ação modificar simplesmente listamos os produtos do carrinho de compras referente a session_id() atual e dentro do while temos a linha abaixo que pega o preço do produto e multiplica pela quantidade desejada

$soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']);

Criando o arquivo carrinho.php

session_id(): Retorna o id de sessão para a sessão atual ou uma string vazia ("") se não houver sessão atual (não existe um id de sessão atual).

<?php
// Iniciamos nossa sessão que vai indicar o usuário pela session_id
session_start();
include "Connections/conn.php";
// Recuperamos os valores passados por parametros
$acao = $_GET['acao'];
$cod =  $_GET['cod'];


// Verificamos se a acao é igual a incluir
if ($acao == "incluir")
{    
   // Verificamos se cod do produto é diferente de vazio
   if ($cod != '')
   {
       // Se for diferente de vazio verificamos se é numérico
       if (is_numeric($cod))
       {    
           // Tratamos a variavel de caracteres indevidos
           $cod = addslashes(htmlentities($cod));

           // Verificamos se o produto referente ao $cod já está no carrinho para o session id correnpondente
           $query_rs_carrinho = "SELECT * FROM tbl_carrinho WHERE tbl_carrinho.cod = '".$cod."'  AND tbl_carrinho.sessao = '".session_id()."'";
           $rs_carrinho = mysql_query($query_rs_carrinho, $conn) or die(mysql_error());
           $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho);
           $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho);

           // Se o total for igual a zero é sinal que o produto ainda não está no carrinho
           if ($totalRows_rs_carrinho == 0)
           {
               // Aqui pegamos os dados do produto a ser incluido no carrinho
               $query_rs_produto = "select * from tbl_produtos where cod = '".$cod."'";
               $rs_produto = mysql_query($query_rs_produto, $conn) or die(mysql_error());
               $row_rs_produto = mysql_fetch_assoc($rs_produto);
               $totalRows_rs_produto = mysql_num_rows($rs_produto);

               // Se total for maior que zero esse produto existe e então podemos incluir no carrinho
               if ($totalRows_rs_produto > 0)
               {
                   $registro_produto = mysql_fetch_assoc($rs_produto);
                   // Incluimos o produto selecionado no carrinho de compras
                   $add_sql = "INSERT INTO tbl_carrinho (id, cod, nome, preco, qtd, sessao) 
                   VALUES
                   ('','".$row_rs_produto['cod']."','".$row_rs_produto['nome']."','".$row_rs_produto['preco']."','1','".session_id()."')";
                   $rs_produto_add = mysql_query($add_sql, $conn) or die(mysql_error());
               }
           }        
       }
   }
}    

// Verificamos se a acao é igual a excluir
if ($acao == "excluir")
{
   // Verificamos se cod do produto é diferente de vazio
   if ($cod != '')
   {
       // Se for diferente de vazio verificamos se é numérico
       if (is_numeric($cod))
       {    
           // Tratamos a variavel de caracteres indevidos
           $cod = addslashes(htmlentities($cod));
           // Verificamos se o produto referente ao $cod  está no carrinho para o session id correnpondente
           $query_rs_car = "SELECT * FROM tbl_carrinho WHERE cod = '".$cod."'  AND sessao = '".session_id()."'";
           $rs_car = mysql_query($query_rs_car, $conn) or die(mysql_error());
           $row_rs_carrinho = mysql_fetch_assoc($rs_car);
           $totalRows_rs_car = mysql_num_rows($rs_car);

           // Se encontrarmos o registro, excluimos do carrinho
           if ($totalRows_rs_car > 0)
           {
               $sql_carrinho_excluir = "DELETE FROM tbl_carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'";    
               $exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conn) or die(mysql_error());
           }
       }
   }
}

// Verificamos se a ação é de modificar a quantidade do produto
if ($acao == "modifica")
{
   $quant = $_POST['qtd'];
       // Se for diferente de vazio verificamos se é numérico
       if (is_array($quant))
       {    
           // Aqui percorremos o nosso array
           foreach($quant as $cod => $qtd)
           {
               // Verificamos se os valores são do tipo numeric
               if(is_numeric($cod) && is_numeric($qtd))
               {
                   // Fazemos nosso update nas quantidades dos produtos
                   $sql_modifica = "UPDATE tbl_carrinho SET qtd =     '$qtd' WHERE  cod = '$cod' AND sessao = '".session_id()."'";
                   $rs_modifica = mysql_query($sql_modifica, $conn) or die(mysql_error());
               }
           }
       }

}
?>
<!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 de Compras</title>
<style type="text/css">
<!--
.style3 {font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; }
.style4 {
   color: #FF0000;
   font-weight: bold;
}
-->
</style>
</head>

<body>
<div align="center"><img src="imgs/carrinho.jpg" width="589" height="102" />
</div>
<form action="carrinho.php?acao=modifica" method="post">
<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <th width="36%" scope="col"><div align="left">PRODUTO</div></th>
    <th width="22%" scope="col">PREÇO</th>
    <th width="13%" scope="col">QUANTIDADE</th>
    <th width="14%" scope="col">SUBTOTAL</th>
    <th width="15%" scope="col"> </th>
  </tr>

  <?
  $sql_meu_carrinho = "SELECT * FROM tbl_carrinho WHERE  sessao = '".session_id()."' ORDER BY nome ASC";
  $exec_meu_carrinho =  mysql_query($sql_meu_carrinho, $conn) or die(mysql_error());
  $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho);
  
  if ($qtd_meu_carrinho > 0)
  {
      $soma_carrinho = 0;
      while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho))
   {
       $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']);
  ?>
    <tr>
  
    <td><span class="style3">
      <?=$row_rs_produto_carrinho['nome']?>
    </span></td>
    <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['preco'],2,",","."); ?></div></td>
    <td><div align="center" class="style3"><input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['cod']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /></div></td>
    <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?></div></td>
    <td><div align="center"><a href="carrinho.php?cod=<?=$row_rs_produto_carrinho['cod']?>&acao=excluir"><img src="imgs/del_carrinho.jpg" width="110" height="21" border="0" /></a></div></td>
  </tr>
    <?
  }
}
  ?>
    <tr>
      <td colspan="3"><div align="right"><strong>TOTAL:</strong>  </div>        <div align="right"></div>        <div align="right"></div></td>
      <td><div align="center" class="style3 style4">
      <?= number_format($soma_carrinho,2,",","."); ?></div></td>
      <td> </td>
    </tr>
    <tr>
      <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <th width="33%" height="60" scope="col"><span class="style3"><a href="produtos.php"><img src="imgs/comprando.jpg" width="287" height="40" border="0" /></a></span></th>
          <th width="33%" scope="col"> </th>
          <th width="34%" scope="col"><label>
            <input type="image" name="imageField" src="imgs/atualizar.jpg" />
          </label></th>
        </tr>
      </table></td>
    </tr>
</table>
</form>
</body>
</html>

Resultado do Carrinho após incluir 2 produtos e modificar a quantidade de um deles

http://www.revistaphp.com.br/arquivos/Image/carlosjr/carrinho_002.gif

carrinho_002.gif

Bom pessoal, espero que tenham gostado, aguardo comentários.

Abs

Carlos Silva Jr

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mega post... Julgo que existem formas mais fáceis, mas gostei muito, sim senhor! ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho uma duvida!!

onde coloco o codigo

Populando a tabela tbl_produtos

Código

	  INSERT INTO `tbl_produtos` ( `cod` , `nome` , `img` , `preco` )
  VALUES (
  NULL , 'Notebook HP 2160br', '001.jpg', '5450'
  ), (
  NULL , 'Computador HP', '002.jpg', '1400'
  );

?obrigada pela ajuda

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho uma duvida!!

onde coloco o codigo

Populando a tabela tbl_produtos

Código

	  INSERT INTO `tbl_produtos` ( `cod` , `nome` , `img` , `preco` )
  VALUES (
  NULL , 'Notebook HP 2160br', '001.jpg', '5450'
  ), (
  NULL , 'Computador HP', '002.jpg', '1400'
  );

?obrigada pela ajuda

É código para executar no MySql usando o PhpMyAdmin ou algo semelhante na base de dados do teu servidor, para criar as bases de dados onde serão armazenadas as informações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ola! tenho outra duvida :thumbsup:

da-me este erro:

Fatal error: Call to undefined function GeraColunas() in C:\wamp\www\tdw\produtos.php on line 38

nao sei como resolber

onrgada :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Importei o ficheiro para a base de dados, e corri o Wamp, ao executar a pagina produto.php da-me o seguinte erro:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\wamp\www\artigos\Connections\conn.php on line 8

Erro ao conectar ao MySQL.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Importei o ficheiro para a base de dados, e corri o Wamp, ao executar a pagina produto.php da-me o seguinte erro:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\wamp\www\artigos\Connections\conn.php on line 8

Erro ao conectar ao MySQL.

Username/password erradas, ou até pode ser o servidor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alguém já experimentou este tutorial utilizando o wamp server e dreamweaver cs3 / cs4?

surge-me este erro na página produtos.php, alguém sabe o que poderei fazer para resolver isto?

é importante dizer que fiz a connection à base de dados tal como indica no tutorial

obrigado desde já

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estás a aceder directamente ao ficheiro PHP sem que o mesmo seja processado pelo processador de PHP e servido pelo apache. Não podes abrir o ficheiro com o browser tens de aceder ao url do site que estás a usar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas! Sou iniciante em php, e ao tentar seguir este tutorial surge-me o seguinte problema ao adicionar um produto ao carrinho de compras:

uma pagina em branco com este texto

Incorrect integer value: '' for column 'id' at row 1

no error_log surge-me isto:

[18-Jan-2009 21:21:10] PHP Notice:  Undefined index:  cod in C:\Apache\htdocs\carrinho.php on line 44

[18-Jan-2009 21:21:10] PHP Notice:  Undefined index:  nome in C:\Apache\htdocs\carrinho.php on line 44

não sei se estará relacionado... se puderem ajudar, agradecia  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este manual para o meu projecto actual estava a dar-me jeito o problema é que não está a funcionar... :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

este esta +/- mas ja que copias-te podias melhorar um bocadinho... tags iniciadas de forma "<?" da erros como http://img150.imageshack.us/img150/4392/screen1eq2.png

nao custa muito corrigir para "<?php"

ha uma questão que ultrapassa os meus conhecimentos que é "<?=" isto faz o que? isto existe as minhas variáveis nao estão a receber qualquer valor!!

alguém podia me esclarecer esta duvida.

comp

Daniel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

este esta +/- mas ja que copias-te podias melhorar um bocadinho... tags iniciadas de forma "<?" da erros como http://img150.imageshack.us/img150/4392/screen1eq2.png

nao custa muito corrigir para "<?php"

ha uma questão que ultrapassa os meus conhecimentos que é "<?=" isto faz o que? isto existe as minhas variáveis nao estão a receber qualquer valor!!

alguém podia me esclarecer esta duvida.

comp

Daniel

<? são short tags, e funcionam desde que tenhas isso activo no PHP. A imagem que puseste também não ajuda, não é assim que se acede aos ficheiros.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá, gostei do carrinho mas tenho um problema, não me esta a mostrar a tabela com os dados, apenas aparece o botão de continar a compra e o botão de atualizar compra.

<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="projeto_teste_css.css">
</head>
<body>
<div id="header">
<h1>
<style type="text/css">
img#f1 {width:3cm; height:3cm;}
</style>
<a href="index.php"><img id="f1" src="logo1.png"></a>
</h1>

</div>
<div id="navigation">
<ul>
<li><a href="login.php">Voltar</a></li>
<li><a href="logout.php">Sair</a></li>
</ul>
</div>

<div id="content-container">
<div id="content">





<?php
if(isset($_GET['id_produto']))
{
session_start();

$link=mysqli_connect ("localhost","root","") or die ("Não consegue ligar à base dados" . mysqli_error());
mysqli_select_db($link,"mercearia");

$acao=$_GET['acao'];
$id_produto=$_GET['id_produto'];

if ($acao == "incluir")
{    
$id_produto = addslashes(htmlentities($id_produto));

$query_rs_carrinho = "SELECT * FROM vendas WHERE id_produto = '".$id_produto."'  AND sessao = '".session_id()."'";
           $rs_carrinho = mysql_query($query_rs_carrinho, $conn) or die(mysql_error());
           $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho);
           $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho);

            if ($totalRows_rs_carrinho == 0)
            {
              // Aqui pegamos os dados do produto a ser incluido no carrinho
              $query_rs_produto = "select * from produtos where id_produto = '".$id_produto."'";
              $rs_produto = mysql_query($query_rs_produto, $conn) or die(mysql_error());
              $row_rs_produto = mysql_fetch_assoc($rs_produto);
              $totalRows_rs_produto = mysql_num_rows($rs_produto);

               // Se total for maior que zero esse produto existe e então podemos incluir no carrinho
              if ($totalRows_rs_produto > 0)
              {
                  $registro_produto = mysql_fetch_assoc($rs_produto);
                  // Incluimos o produto selecionado no carrinho de compras
                  $add_sql = "INSERT INTO vendas (id_produto, nome, preco, quantidade, sessao)
                 VALUES
                 ('','".$row_rs_produto['id_produto']."','".$row_rs_produto['nome']."','".$row_rs_produto['preco']."','1','".session_id()."')";
                  $rs_produto_add = mysql_query($add_sql, $conn) or die(mysql_error());

              }
            }        
        }


        if ($acao == "excluir")
{
$cod = addslashes(htmlentities($cod));

$query_rs_car = "SELECT * FROM vendas WHERE id_produto = '".$id_produto."'  AND sessao = '".session_id()."'";
            $rs_car = mysql_query($query_rs_car, $conn) or die(mysql_error());
            $row_rs_carrinho = mysql_fetch_assoc($rs_car);
            $totalRows_rs_car = mysql_num_rows($rs_car);

             if ($totalRows_rs_car > 0)
            {
              $sql_carrinho_excluir = "DELETE FROM vendas WHERE id_produto = '".$id_produto."' AND sessao = '".session_id()."'";    
              $exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conn) or die(mysql_error());

          }
        }


        if ($acao == "modifica")
{
  $quant = $_POST['quantidade'];
      // Se for diferente de vazio verificamos se é numérico
      if (is_array($quant))
      {    
          // Aqui percorremos o nosso array
          foreach($quant as $id_produto => $quantidade)
          {
              // Verificamos se os valores são do tipo numeric
              if(is_numeric($id_produto) && is_numeric($quantidade))
              {
                  // Fazemos nosso update nas quantidades dos produtos
                  $sql_modifica = "UPDATE vendas SET quantidade =     '$quantidade' WHERE  id_produto = '$id_produto' AND sessao = '".session_id()."'";
                  $rs_modifica = mysql_query($sql_modifica, $conn) or die(mysql_error());
              }
          }
      }

}

?>
<form action="carrinho.php?acao=modifica" method="post">
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
  <th width="36%" scope="col"><div align="left">PRODUTO</div></th>
  <th width="22%" scope="col">PREÇO</th>
  <th width="13%" scope="col">QUANTIDADE</th>
  <th width="14%" scope="col">SUBTOTAL</th>
  <th width="15%" scope="col"> </th>
</tr>

<?php
 $sql_meu_carrinho = "SELECT * FROM vendas WHERE  sessao = '".session_id()."' ORDER BY nome ASC";
 $exec_meu_carrinho =  mysql_query($sql_meu_carrinho, $conn) or die(mysql_error());
 $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho);

 if ($qtd_meu_carrinho > 0)
 {
     $soma_carrinho = 0;
     while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho))
   {
       $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['quantidade']);
 ?>


 <tr>


     <?=$row_rs_produto_carrinho['nome']?>

   <td><div align="center"><?= number_format($row_rs_produto_carrinho['preco']); ?></div></td>
   <td><div align="center"><input type"text" size="2" name="quantidade[<?=$row_rs_produto_carrinho['id_produto']?>]" value="<?=$row_rs_produto_carrinho['quantidade']?>" /></div></td>
   <td><div align="center"><?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['quantidade']); ?></div></td>
   <td><div align="center"><a href="carrinho.php?id_produto=<?=$row_rs_produto_carrinho['id_produto']?>&acao=excluir"><img src="imagens/excluir.jpg" width="110" height="21" border="0" /></a></div></td>
 </tr>

  <?php
 }
}

 ?>
  <tr>
     <td colspan="3"><div align="right"><strong>TOTAL:</strong>  </div>        <div align="right"></div>        <div align="right"></div></td>
     <td><div align="center">
     <?= number_format($soma_carrinho,2,",","."); }?></div></td>
     <td> </td>
   </tr>
   <tr>
     <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0">
       <tr>
         <th width="33%" height="60" ><a href="produtos.php"><img src="imagens/continuar.png" width="100" height="20" border="0" /></a></span></th>
         <th width="33%"> </th>
         <th width="34%"><label>
           <input type="image" name="imageField" src="imagens/refresh.png" width="100" height="20" />
         </label></th>
       </tr>
     </table></td>
   </tr>
</table>
</form>

</div>
</div>

<div id="Categorias ">
<ul>
<li><a href="index.php?id_categoria=1">Farinhas</a></li>
<li><a href="index.php?id_categoria=2">Sobremesas</a></li>
<li><a href="index.php?id_categoria=3">Especiarias</a></li>
<li><a href="index.php?id_categoria=4">Massas</a></li>
<li><a href="index.php?id_categoria=5">Molhos</a></li>
</ul>
</div>

<p>
</p>
</div>
<div id="footer">
Copyright © Green Market, 2015
</div>
</div>
</div>

</body>
</html>

Editado por thoga31
Tags code + GeSHi
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora