Ir para conteúdo

Arquivado

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

Nyl Guedes

Carrinho de Compras

Recommended Posts

Olá! algum filho de Deus poderia me dar uma luz!? estou com o código abaixo onde clico em atualizar, onde atualizar a quantidade de produtos alterados no form. No entanto, quando clicado ele me leva para a pagina home, onde ele deveria atualizar na própria pagina carrinho.php. O que acontece? Tenho duvidas, acho que o sistema de rotas possa atrapalhar, ele me retorna isso: http://localhost:8080/carrinho?acao=up mais não atualiza.

<?php 
    session_start();
    include "functions/product.php";
    include "functions/cart.php";


    $pdoConnection = include "connection.php";

    if(isset($_GET['acao']) && in_array($_GET['acao'], array('add', 'del', 'up'))) {
        
        if($_GET['acao'] == 'add' && isset($_GET['id']) && preg_match("/^[0-9]+$/", $_GET['id'])){ 
            addCart($_GET['id'], 1);            
        }

        if($_GET['acao'] == 'del' && isset($_GET['id']) && preg_match("/^[0-9]+$/", $_GET['id'])){ 
            deleteCart($_GET['id']);
        }

        if($_GET['acao'] == 'up'){ 
            if(isset($_POST['prod']) && is_array($_POST['prod'])){ 
                foreach($_POST['prod'] as $id => $qtd){
                        updateCart($id, $qtd);
                }
            }
        } 
        header('location: /carrinho');
    }

    $resultsCarts = getContentCart($pdoConnection);
    $totalCarts  = getTotalCart($pdoConnection);


?>

<!DOCTYPE html>
<html lang="en">
<head>
    
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css", >

</head>
<body>
    <div class="container">
        <div class="card mt-5">
             <div class="card-body">
                <h4 class="card-title">ORÇAMENTO</h4>
                <div></div>
            </div>
        </div>
<br>

        <!--INICIO TOTAL DE PRODUTOS SELECIONADOS-->
<?php
if(!empty($_SESSION['carrinho'])){
$total = 0;
print "<div class='btn-group' style='float:left'>
<button  class='btn btn-secondary-light btn-sm' disabled><span class='fa fa-shopping-basket'></span></button>
<button class='btn btn-secondary-light btn-sm' disabled> Total de itens selecionados: </button>
<button  class='btn btn-secondary-light btn-sm' disabled><b>(" . count($_SESSION['carrinho']) . ")</b></button>
</div>";
foreach($_SESSION['carrinho'] as $item => $detalhes){
//print $result['name'] . " x " . $result['quantity'] . $result['descricao'] ."<br>";
//$total += $result['quantity'] * $result['price'];
}
//print "<strong>total: </strong>" . number_format($totalCarts, 2);
} else {

print " <center><br> <div class='alert alert-danger' role='alert' style='padding-bottom:0px;padding-top:0px;width:600px'> Orçamento ainda não tem produtos adicionados! <br> 
Adicione produtos clicando <a href='/home'> Aqui</a> </div> </center>";

}
?>
<!--FIM TOTAL DE PRODUTOS SELECIONADOS-->


        <?php if($resultsCarts) : ?>

            

            <table class="table table-sm table-strip">

                <thead>
                    <tr>
                        <th>Imagem</th>
                        <th>Produto</th>
                        <th>Quantidade</th>
                        <th>Preço</th>
                        <th>Subtotal</th>
                        <th>Ação</th>

                    </tr>                
                </thead>
                <tbody>
                 <form action="/carrinho?acao=up" name="up" id="up" method="post">
                  <?php foreach($resultsCarts as $result) : ?>
                    <tr>
                        
                        <td><img class="img-thumbnail" src="/img/<?php echo $result['imagem']?>" style="width: 40px;height: 40px"></td>
                        <td><?php echo $result['nome']?></td>
                        <td>
                            <input type="text" class="form-control form-control-sm col-6" name="prod[<?php echo $result['id']?>]" value="<?php echo $result['quantity']?>" size="1" />
                                                
                        </td>
                        <td>R$<?php echo number_format($result['valor'], 2, ',', '.')?></td>
                        <td>R$<?php echo number_format($result['subtotal'], 2, ',', '.')?></td>
                        
                        <td>
                        <div class="btn-group" role="group" aria-label="Basic example" style="float: right;">
                        <button type="button" class="btn btn-secondary btn-sm" disabled="disabled"><span class="fa fa-trash"></span></button>
                        <button type="button" class="btn btn-danger btn-sm" style="float: right;"><a href="carrinho.php?acao=del&id=<?php echo $result['id']?>" style="color:white"> Remover</a></button>
                        </div> 
                        </td>

                    </tr>
                <?php endforeach;?>
                 <tr>
                     <td></td>
                     <td colspan="3" class="text-right"><b>Total: </b></td>
                     <td>R$<?php echo number_format($totalCarts, 2, ',', '.')?></td>


                     <td></td>
                 </tr>
                </tbody>
                
            </table>
            <div class="bg-danger " style="width: 100%;height: 1px; background-color: red"></div><br>
            <a class="btn btn-info btn-sm" href="/home">Continuar Adicionando</a>
            <button class="btn btn-primary btn-sm" type="submit">Atualizar</button>

            </form>
    <?php endif?>
        
    </div>
    
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, Nyl Guedes disse:

<form action="/carrinho?acao=up" name="up" id="up" method="post">

 

coloca seu action assim: 

action"<?php htmlspecialchars($_SERVER['PHP_SELF']) ?>"

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Carlos Antoliv
      Senhores, tudo bem?
       
      Tô numa dúvida aqui... tá matando.
      Estou tentando contar a quantidade de itens do carrinho de compras.
       
      Este aqui é o input que aparece a quantidade de itens:
      <td><input type="text" name="prod[<?php echo $result['id']?>]" value="<?php echo $qtdProd = $result['quantity']?>" size="1"  />                          </td>  
      Aparece normalmente a quantidade de itens. Ex: arroz   2  <<< este 2 fica dentro do input, onde posso alterá-lo.
      Minha ideia é mostrar na tela a quantidade total de itens que estão no carrinho.
       
      To usando esse código aqui pra aparecer o número total.... e até funciona:
       
                         <?php                                     if(isset($_SESSION['carrinho'])){                                     $amount = 0;                                     $count = 0;                                     $size = count($_SESSION['carrinho']);                                                                         foreach($_SESSION['carrinho'] as $data){                                     $count++;                                     $amount += $data['quantity'];                                     if($size == $count){                                     echo "TOTAL = $amount";                                     }                                 }                             }                                 ?>  
      O problema é que está exibindo o seguinte erro:
      Warning: Illegal string offset 'quantity' in C:\...\www\sistema\carrinho-de-compra\carrinho.php on line 90
       
      Erro na linha 90, no caso, neste linha aqui: 
          $amount += $data['quantity'];
       
      Daí travei um pouco.
       
      Alguém que poderia dar força ? Tá osso aqui.
      tmj
       
       
    • Por Sapinn
      Opa galera tudo beleza? Estou desenvolvendo um pequeno e-commerce de camisas. Enquanto fazia o carrinho de compras topei com um problema como posso mostrar os produtos no carrinho e como mostrar assim que for inserirdo um novo produto ? Fiz algumas buscas mas nenhuma me ajudou realmente. 
       
      Carrinho de compras:

       
      <!-- ==================================== CARRINHO DE COMPRAS =================================== -->     <div class="offcanvas offcanvas-end areaShoppingCart" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">       <div class="offcanvas-header">         <h4 class="offcanvas-title fw-bold" id="offcanvasNavbarLabel"><i class="bi bi-cart4"></i> Carrinho de Compras         </h4>         <button type="button" class="text-reset closeAreaShoppingCart" data-bs-dismiss="offcanvas" aria-label="Close"><i class="bi bi-x"></i></button>       </div>       <span data-bs-toggle="modal" data-bs-target="#leiaimportante" class="link_text">Leia Importante <i class="bi bi-info-circle"></i></span>       <hr />       <div class="offcanvas-body cart_body">     <!--     <div class="product_content">           <div class="trash_icon"><a href="#" class="link_text"><i class='bx bx-trash ' title="Excluir do carrinho"></i></a></div>           <a href="" class="container_card_product">             <div class="d-flex">               <div class="cart_img_product">                 <img src="../assets/images/camisas/257139328_126851229744515_2923407250030929456_n.webp.jpg" alt="">               </div>               <div class="cart_info_product">                 <div class="cart_name_product">Camisa do Paris San-German Branca</div>                 <div class="cart_price_product">Preço: 120,00</div>               </div>             </div>           </a>           <hr />         </div> -->       </div>     </div>  
      JS:
      let cartShirt = []; let btn = document.querySelector(".btnShoppingCart"); let idShirt = btn.getAttribute('data-product-id') let nameShirt = document.querySelector(".name_shirt").innerText; let priceShirt = document.querySelector(".price_shirt").innerText; let symbol_shirt = document.querySelector(".symbol_shirt").getAttribute('src'); let urlShirt = window.location.href; let infoShirts = {    "id": idShirt,    "name": nameShirt,    "price": priceShirt,    "img": symbol_shirt,    "url": urlShirt, } jsonShirt = JSON.stringify(infoShirts); let productsInCart = JSON.stringify(localStorage.getItem("futprime_cart")); btn.addEventListener('click', () => {    if (productsInCart == '') {       cartShirt.push(jsonShirt);       localStorage.setItem('futprime_cart', cartShirt)    }else{       let obj = productsInCart.concat(jsonShirt);       cartShirt.push(obj.replace(/[\\"]/g, ''))       /* console.log(cartShirt); */       localStorage.setItem('futprime_cart', cartShirt);       /* console.log(localStorage.getItem('futprime_cart')); */    }    insertInCartHTML(); }); console.log(localStorage.getItem('futprime_cart')); /* localStorage.clear(); */ function insertInCartHTML(){     }  
    • Por Caio Vargas
      Olá pessoa tudo beleza
      Estou criando um ecommerce porém estou com uma dúvida de como posso calcular o frete altura largura e comprimento de vários produtos no carrinho fiz a comparação do site dos correios e está dando diferença mínima de 4 reais alguém pode me ajudar ?
    • Por mbolzanes
      Olá.
       
      Preciso alterar o nome do meu tema na tray de MINHA SACOLA para MEU CARRINHO
      Alguém que possa ajudar?

    • Por dutopfave
      Boa Tarde, estou criando uma loja virtual, e a questão é voltado para o carrinho de compras, ate agora ta tudo certo, funcionando normal, porém tem produtos que tem vários tamanho, exemplo eu tenho um tênis, e eu posso escolhe se quero tamanho 41 ou 42, blz ate ai ele registra certinho no banco, porém, se por a caso eu também queira compra o do tamanho 41, e dps volto la e compro o 42, invés de cria 2 produto no carrinho ele acaba atualizando o mesmo, pegando o ultimo tamanho q escolhi e na quantidade aumentando pra 2, vou manda o código aki, pq o ideal seria aparece 2 produto no carrinho, pq são 2 tamanho diferente, e isso ta quebrando a cabeça:
      Código:
      if($_GET['acao'] == 'adds'){ $qtds = $_POST['qtds']; $cart_tamanho = $_POST['cart_tamanho']; if(!isset($_SESSION['carrinho'][$id]) && $_SESSION['carrinho'][$id] < $Verifica_qtd_row2){ $_SESSION['carrinho'][$id] = $qtds; $_SESSION['cart_tamanho'][$id] = $cart_tamanho; }elseif($_SESSION['carrinho'][$id] < $Verifica_qtd_row2){ $_SESSION['carrinho'][$id] += $qtds; $_SESSION['cart_tamanho'][$id] = $cart_tamanho; }else{ $_SESSION['carrinho'][$id] = 1; $_SESSION['cart_tamanho'][$id] = $cart_tamanho; } }  
×

Informação importante

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