Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Peixoto

botao de tamanhos

Recommended Posts

pq parece ser um problema simples, oque está acontecendo é que todos produtos do carrinho está com o mesmo tamanho do ultimo item postado e não cada um com seu tamanho escolhido.

Exatamente por isso, eu não entendo como funciona seu sistema de carrinho, seu código está bem bagunçado, eu vejo pelos comentários

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

Não entendo que você faz aí, você grava o id do produto, e adiciona o valor de '1' por que ? isso seria a quantidade ?

Se for, você pode solucionar seu problema assim.

     if($_GET['acao'] == 'add'){
           $id = intval($_GET['id']);
           if(!isset($_SESSION['carrinho'][$id])){
              $_SESSION['carrinho'][$id] = 1;
              $_SESSION[ 'carrinho' ][ $id ][ 'numero' ] = isset( $_REQUEST[ 'numero' ] ) ? ( integer ) $_REQUEST[ 'numero' ] : 1; 
           }else{
              $_SESSION['carrinho'][$id] += 1;
           }
        }

Depois na hora de exibir, você faz assim.

foreach($_SESSION['carrinho'] as $id => $qtd){
                             $sql   = "SELECT *  FROM novidades WHERE id= '$id'";
                             $qr    = mysql_query($sql) or die(mysql_error());
                             $ln    = mysql_fetch_assoc($qr);

                             $nome  = $ln['nome'];
                             $preco = $ln['preco'];
                             $sub   = number_format($ln['preco'] * $qtd, 2, ',', '.');

                             $total += $ln['preco'] * $qtd; 

                           $tamanho = $_SESSION[ 'carrinho' ][ $id ][ 'numero' ];
                          echo '<tr align="center">        
                                                  <td>'.$nome.' '.$tamanho.'</td>
                                                  <td><input type="hidden" name="numero" value="'.$tamanho.'" />
                                                          <input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
                                                  <td>R$ '.$preco.'</td>
                                                  <td>R$ '.$sub.'</td>
                                                  <td><a href="carrinho&acao=add&id='.$ln['id'].'&acao=del&id='.$id.'">Remove</a></td>
                                                </tr>';
                       }
                          $total = number_format($total, 2, ',', '.');
                          echo '<tr align="right" bgcolor="#CCCCCC">
                                   <td colspan="4">Total</td>
                                   <td width="100">R$ '.$total.'</td>
                             </tr>';
                    }

Sabe quando tudo está quase pronto e uma coisinha só te deixa louco? então esse é meu caso ;/

Acontece muito comigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey, para você entender como funciona esse carrinho, os créditos dele é do David CHC nessa vídeo aula Clique aqui

 

Se possível você der uma olhada ai, da para entender melhor.

 

É os desafios né cara na vida eles sempre vão aparecer, e não podemos desistir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz sim, deu erro

 

Warning: Cannot use a scalar value as an array in C:\EasyPHP-5.3.6.0\www\DE-PAULA\CALCADOS\carrinho.php on line 34

 

na linha

               $_SESSION[ 'carrinho' ][ $id ][ 'numero' ] = isset( $_REQUEST[ 'numero' ] ) ? ( integer ) $_REQUEST[ 'numero' ] : 1; 

 

e o tamanho continua para todos produtos do carrinho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opz, atualiza aí.

$_SESSION[ 'carrinho' ][ 'numero' ][ $id ] = isset( $_REQUEST[ 'numero' ] ) ? ( integer ) $_REQUEST[ 'numero' ] : 1; 

 

A Variável $tamanho do foreach também

$tamanho = $_SESSION[ 'carrinho' ][ 'numero' ][ $id ];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey, só que no começo do código do carrinho do carrinho já estou atribuindo a variavel $tamanho

<?php    
                          //esse $tamanho está puxando da página anterior para mostrar o nº escolhido.
                                       $tamanho = isset($_POST['numero']) ? $_POST['numero'] : false;


      if( isset( $_POST[ 'submitForm' ] ) == 0){
                  echo '<script>alert("Escolha um tamanho")</script>';

          }else
                      echo 'Número escolhido: ' , $tamanho ;
?>

 

Devo trocar por

$tamanho = $_SESSION[ 'carrinho' ][ 'numero' ][ $id ];

ou desprezo?

 

eu testei aqui, tirei essa parte

 

<?php    
                          //esse $tamanho está puxando da página anterior para mostrar o nº escolhido.
                                       $tamanho = isset($_POST['numero']) ? $_POST['numero'] : false;


      if( isset( $_POST[ 'submitForm' ] ) == 0){
                  echo '<script>alert("Escolha um tamanho")</script>';

          }else
                      echo 'Número escolhido: ' , $tamanho ;
?>

 

e atualizei como você disse, só que começou a dar erro lá no

                                $sub   	= number_format($ln['preco'] * $qtd, 2, ',', '.');

 

se você achar melhor me adc no msn, ai te mando todos os arquivos com o BD, pq quanto mais meche pior fica ;/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara já me deparei com problemas assim.

 

Quer resolver de vez seu problema? Pega linha por linha e vai interpretando, quando tiver algum termo q você desconhece você dá uma pesquisada focada neste termo. Assim você vai resolver o problema e vai ser bem vantajoso pra você =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara já me deparei com problemas assim.

 

Quer resolver de vez seu problema? Pega linha por linha e vai interpretando, quando tiver algum termo q você desconhece você dá uma pesquisada focada neste termo. Assim você vai resolver o problema e vai ser bem vantajoso pra você =)

 

Rodrigo, o problema não é não saber oque está acontecendo no código, é não conseguir fazer oque eu quero dentro desse código entende ;/

Mais acho sim que você está correto, e é desse jeito que aprende, más tem uns pipinos que Deus me livre...

 

Olha só, fiz as alterações igual o Andrey falou, só que começou esse erro

 

Fatal error: Unsupported operand types in C:\EasyPHP-5.3.6.0\www\DE-PAULA\CALCADOS\carrinho.php on line 86

 

                                $sub   	= number_format($ln['preco'] * $qtd, 2, ',', '.');

Pesquisei pelo erro e não achei nada satisfatório, pelo menos em português ;/

 

Pelo oque eu entendi esse erro está acontecendo por causa da variavel $qtd, agora o motivo do erro nao sei

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.