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

Carrinho de Compras com opção de adicionar quantidade e data


Manoel Vitor Alegre Silva

Pergunta

Olá Pessoal.

Estou trabalhando em um projeto para empresa que trabalho para solicitaçoes de materiais que nada mais é um carrinho de compras 

a minha dificuldade é que a apos adicionar os itens ao carrinho eu preciso adicionar a quantidade manualmente e a data requerida para entrega. 

mas não sei como fazer isso adicionar eu consigo gerar a compra com as informações que vem da loja mas não consigo add esses dois itens para finalizar.

Arquivo da loja.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<!-- Última versão CSS compilada e minificada -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Tema opcional -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

<!-- Última versão JavaScript compilada e minificada -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    
<title>Suprimentos</title>
</head>

<body>
<?php
    session_start();
    if (empty($_SESSION['id'])){
        
        header('location:formLogon.php');
        
    }
    include 'conexao.php';
    include 'nav.php';
    include 'cabecalho.html';
    
    $consulta = $conexao->query('SELECT * FROM tbl_itens');
    
?>    
<div class="container-fluid">
    <div class="row">
    
<table class="table" width="200" >
    <tbody>
    <tr>
      <td>Apelido</td>
      <td>Item</td>
      <td>Unidade</td>
      <td>&nbsp;</td>
    </tr>    
    <?php
        while ($exibir=$consulta->fetch(PDO::FETCH_ASSOC)){    
    ?>  
    <tr>
        <td><?php echo $exibir['apelido'];?></td>
          <td><?php echo $exibir['item'];?></td>
          <td><?php echo $exibir['unidade'];?></td>
          <td>        
        <div class="text center">            
            <button  type="button" class="btn btn-info"><span class="glyphicon glyphicon-zoom-in"></span></button>        
        </td>
        <td>        
        <div class="text center">
            <a href="carrinho.php?id=<?php echo $exibir['id'];?>">
            <button  type="button" class="btn btn-success"><span class="glyphicon glyphicon-ok"></span></button>        
            </a>
        </td>    
    </tr>
    <?php
        }
    ?>        
    </tbody>
</table>

    
    </div>
    </div>
<?php include 'rodape.html' ?>    
</body>
    
</html>

 

carrinho.php

<!doctype html>

<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Suprimentos</title>
    
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <!-- jQuery library -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

    <!-- Latest compiled JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <style>
    
    .navbar{
        margin-bottom: 0;
    }
    
    
    </style>
    
    
    
</head>

<body>    
    
    <?php
    
    session_start();
    
    if (empty($_SESSION['id'])){
        
        header('location:formLogon.php');
        
    }

    
    include 'conexao.php';    
    include 'nav.php';
    include 'cabecalho.html';
    
    
    if (!empty($_GET['id'])) {
    
    $id_prod=$_GET['id'];
    
    
    if (!isset($_SESSION['carrinho'])) {
          $_SESSION['carrinho'] = array();
    }


    

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

        $_SESSION['carrinho'][$id_prod]=1;
    }
    
    else {
          $_SESSION['carrinho'][$id_prod]+=1;

    }
        
        include 'mostraCarrinho.php';
        
    } else {
        
        
        
        include 'mostraCarrinho.php';
        
        
    }    
    
    ?>
    
    
    
    
    
    <div class="row text-center" style="margin-top: 15px;">
        <a href="novaSmo.php"><button class="btn btn-lg btn-primary">Continuar solicitando</button></a>
        <a href="finalizarCompra.php"><button class="btn btn-lg btn-success">Finalizar SMO</button></a>
    </div>

    
</div>
    
    
    <?php
    
    include 'rodape.html';
    
    ?>
    
</body>
</html>

mostra carrinho.php

<div class="container-fluid">
    
    <div class="row text-center" style="margin-top: 15px;">
        <h1>Nova SMO</h1>
    </div>
    
    
    <?php
    
    $total = null;
    foreach ($_SESSION['carrinho'] as $id => $qnt)  {
    $consulta = $conexao->query("SELECT * FROM tbl_itens WHERE id='$id'");
    $exibe = $consulta->fetch(PDO::FETCH_ASSOC);
    $apelido = $exibe['apelido'];
    $item = $exibe['item'];
    $unidade = $exibe['unidade'];
        
        
    
    
    ?>
    
    <table class="table" >
  <tbody>
    <form method="post" action="finalizarCompra.php">    
    <tr>
      <div class="col-sm-1"        
      <td><?php echo $apelido; ?></td>
      </div>
      <div class="col-sm-3"    
      <td><?php echo $item; ?></td>
      </div>
      <div class="col-sm-1"
      <td><input type="text" class="form-control" name="qnt" value="<?php echo $qnt; ?> "></td>  
      </div>
      <div class="col-sm-1"
      <td><?php echo $unidade; ?></td>
      </div>
     <form method="post">
      <div class="col-sm-2"
           <td><input type="text" class="form-control" name="data_obra" placeholder="dd/mm/aaaa"> </td>
      </div>
</form>
      <div class="col-sm-3"
      <td><input type="text" class="form-control" name="atividade" placeholder="Serviço/Tarefa"></td>  
      </div>
      <div class="col-sm-1"
      <td><a href="removeCarrinho.php?id=<?php echo $id;?>">    
        <button class="btn btn-lg btn-block btn-danger">
        <span class="glyphicon glyphicon-remove"></span>        
        </button>
        </a></td>
      </div>
    </tr>
</form>
  </tbody>
</table>
    <?php } ?>

finaliza.php

<?php

session_start();

include 'conexao.php';


$data = date('Y-m-d');
$ticket = uniqid();
$id_user = $_SESSION['id'];
$dataObra = $_SESSION['dataObra'];


foreach ($_SESSION['carrinho'] as $id => $qnt)  {
    $consulta = $conexao->query("SELECT * FROM tbl_itens WHERE id='$id'");
    $exibe = $consulta->fetch(PDO::FETCH_ASSOC);
    $unidade = $exibe['unidade'];
    
    
    
    $inserir = $conexao->query("INSERT INTO tbl_smo (ticket, id_solicitante, id_item, quantidade, unidade, data_obra, data) VALUES
    ('$ticket','$id_user','$id', '$qnt', '$unidade', '$dataObra', '$data')");
    
}

include 'fim.php';


?>

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

beleza tá correto.

Agora dá um var_dump no SQL que você gera pra fazer o insert.

$sql

$sql = 'INSERT...'.$ticket.'...';
var_dump($sql);
$inserir = $conexao->query($sql);

Depois testa a query gerada manualmente no banco pra ver se retorna algum erro.

Editado por Leonardo Persan
Link para o comentário
Compartilhar em outros sites

  • 0

Não era pra dar false, mas esse Notice eu imaginava rsrrs

Você não está atribuindo valor à $_SESSION['dataObra'] em lugar nenhum do seu código.

Isso será definido pelo usuário? Se sim tem que ter um campo para ele preencher.

Vai ser definido pelo sistema? Tipo 5 dias a partir da data atual?...

Sobre o false, posta o código do finaliza.php de novo fazendo favor

Link para o comentário
Compartilhar em outros sites

  • 0

pois é ai é que é minha duvida.

Eu gostaria que o usuário digitasse tanto a data quanto a quantidade pois para cada item é um prazo de entrega diferente então se ele pude-se digitar seria melhor e ai a quantidade que ele precisa pois tem itens que ele solicita 1000 ai não vira ele clica 1000X ate add a quantidade que ele quer.

Aonde coloco essas entradas e como as faço receber os dados? está é a minha grande duvida.

Desde já agradeço a atenção.

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi, tem várias formas de fazer isso.

Coloca inputs em motracarrinho.php pra cada item

<?php
foreach ($_SESSION['carrinho'] as $id $qtd) {
	//Faz a consulta do produto
?>
<tr>
  <td>
    <?php echo $produto['nome']; ?>
  </td>
  <td>
    <input type="number" name="produtos[<?php echo $id; ?>][quantidade]">
  </td>
  <td>
    <input type="date" name="produtos[<?php echo $id; ?>][data]">
  </td>
  <!-- Continua os campos... -->
</tr>
<?php } ?>

Em finaliza.php você recebe esses dados em $_POST e trata como tem que ser

Link para o comentário
Compartilhar em outros sites

  • 0

Boa Tarde Leonardo.

Não consegui cara sei que meu erro provavelmente é infantil mas é que é meu primeiro projeto que não utilizo o Dreamweaver pois quero aprender fazendo da forma limpa sem códigos sujos e coisas que não usa .

meu mostracarrinho.php ficou assim

<div class="container-fluid">
    
    <div class="row text-center" style="margin-top: 15px;">
        <h1>Nova SMO</h1>
    </div>
    
    
    <?php
    
    $total = null;
    foreach ($_SESSION['carrinho'] as $id=>$qnt)  {
    $consulta = $conexao->query("SELECT * FROM tbl_itens WHERE id='$id'");
    $exibe = $consulta->fetch(PDO::FETCH_ASSOC);
    $apelido = $exibe['apelido'];
    $item = $exibe['item'];
    $unidade = $exibe['unidade'];
        
        
    
    
    ?>
    
    <table class="table" >
  <tbody>   
    <tr>
      <div class="col-sm-1"        
      <td><?php echo $apelido; ?></td>
      </div>
      <div class="col-sm-3"    
      <td><?php echo $item; ?></td>
      </div>
      <div class="col-sm-1"
      <td><input type="number" class="form-control" name="qnt[<?php echo $id; ?>][quantidade]"></td>  
      </div>
      <div class="col-sm-1"
      <td><?php echo $unidade; ?></td>
      </div>
     <form method="post">
      <div class="col-sm-2"
           <td><input type="date" class="form-control" name="itens[<?php echo $id; ?>][data_obra]"> </td>
      </div>
      <div class="col-sm-3"
      <td><input type="text" class="form-control" name="itens[<?php echo $id; ?>][atividade]"></td>  
      </div>
      <div class="col-sm-1"
      <td><a href="removeCarrinho.php?id=<?php echo $id;?>">    
        <button class="btn btn-lg btn-block btn-danger">
        <span class="glyphicon glyphicon-remove"></span>        
        </button>
        </a></td>
      </div>
    </tr>
</form>
  </tbody>
</table>
    <?php } ?>

e o finalizar assim

 

<?php

session_start();

include 'conexao.php';


$data = date('Y-m-d');
$ticket = uniqid();
$id_user = $_SESSION['id'];
$quantidade = $_POST["qnt"];
$dataObra = $_POST['data_obra'];
$atividade = $_POST['atividade'];

foreach ($_SESSION['carrinho'] as $id => $qnt)  {
    $consulta = $conexao->query("SELECT * FROM tbl_itens WHERE id='$id'");
    $exibe = $consulta->fetch(PDO::FETCH_ASSOC);
    $unidade = $exibe['unidade'];
    
    
    
    $inserir = $conexao->query("INSERT INTO tbl_smo (ticket, id_solicitante, id_item, quantidade, unidade, data_obra, atividade, data) VALUES
    ('$ticket','$id_user','$id', '$quantidade', '$unidade', '$dataObra', '$atividade', '$data')");
    
    var_dump($inserir);
}

include 'fim.php';


?>

ele ve retorna os seguintes erros e o vardump assim.

Notice: Undefined index: qnt in C:\xampp\htdocs\supri\finalizarCompra.php on line 11

Notice: Undefined index: data_obra in C:\xampp\htdocs\supri\finalizarCompra.php on line 12

Notice: Undefined index: atividade in C:\xampp\htdocs\supri\finalizarCompra.php on line 13
object(PDOStatement)#3 (1) { ["queryString"]=> string(170) "INSERT INTO tbl_smo (ticket, id_solicitante, id_item, quantidade, unidade, data_obra, atividade, data) VALUES ('5bbe4a875fcf8','1','1', '', 'UND', '', '', '2018-10-10')" }

Editado por Manoel Vitor Alegre Silva
Link para o comentário
Compartilhar em outros sites

  • 0
Em 10/10/2018 em 15:57, Manoel Vitor Alegre Silva disse:

Não consegui cara sei que meu erro provavelmente é infantil mas é que é meu primeiro projeto que não utilizo o Dreamweaver pois quero aprender fazendo da forma limpa sem códigos sujos e coisas que não usa .

Tranquilo sem problema.

No mostrarcarrinho.php o problema é que a tag <form> esta dentro do foreach, mas a página deve conter apenas um formulário com todos os inputs de todos os dados, então a tag form deve ficar fora para não ser repetida várias vezes. beleza?

E uma dica sempre leia/traduza os erros do PHP eles são seus amigos e guias rsrrs

Notice: Undefined ...

Significa que uma variável ou índice dentro de uma array não foi definida, faça um var_dump de $_POST para ter certeza de como está recebendo os dados do FORM e vá adaptando o finaliza.php

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...