Jump to content
Nova Ourora

Digita código de barras e aparece valor do produto

Recommended Posts

Olá estou criando um sistema aqui na loja, preciso que quando digite o código de barras ele pegue no banco de dados descrição do produto com seu preço, e apareça em uma lista.

 

(Quer dizer que  só  colocar o código do produto e que o preço do produto e o nome do produto devem aparecer automaticamente e  ir adicionando automaticamente o total gasto.)

 

 

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
      <meta name="mobile-web-app-capable" content="yes">
      <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
      <title>Caixa Loja</title>
      <!-- Bootstrap -->
	  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">      <link rel="stylesheet" href="assets/js/chosen/docsupport/prism.css">
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.css">
      <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!------ Include the above in your HEAD tag ---------->

<style>
     .delete {cursor: pointer;}
         .chosen-results li {font-size: 11px;}
         .table-produtos tbody tr td {font-size: 12px;}

</style>
      <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
      <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
      <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
      <![endif]-->
   </head>
   <body>
      <div class="container mt-3">
         <div class="row">
            <div class="col">
               <div class="card">
                 <div class="card-header">
                   Lançamento de Produtos
                 </div>
                 <div class="card-block">
                     <form class="form-inline">
                         <select class="form-control" id="nmProduto" style="max-width: 300px;">
                           <option value="">Entre com o Codigo de Barras</option>
                          
                         </select>

                         <label class="sr-only" for="inlineFormInput">Quantidade</label>
                         <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0 ml-sm-2" id="qtProduto" placeholder="Quant" style="width:70px">
                         <label class="sr-only" for="inlineFormInput">Valor</label>                       
                         <input type="text" class="form-control mb-2 mr-sm-2 mb-sm-0" id="vlProduto" placeholder="Valor (R$)" style="width:98px">
                         <button type="submit" class="btn btn-primary" id="btnAdicionarProduto">+</button>
                         <p class="text-danger ml-3 pt-2 invisible" id="msgValidaForm">Favor preencher <strong>todos os campos</strong> do produto!</p>
                     </form>
                     <table class="table table-sm table-striped mt-3 table-produtos">
                       <thead>
                         <tr>
                           <th style="max-width: 600px;">Produto</th>
                           <th>Quantidade</th>
                           <th class="text-right pr-5">Valor (R$)</th>
                           <th class="text-right pr-5 vlTotalProduto">Total</th>
                           <th>Ação</th>
                         </tr>
                       </thead>
                       <tbody>
                       </tbody>
                       <tfoot class="invisible">
                         <tr>
                           <th></th>
                           <th></th>
                           <th class="text-right">SubTotal ❯</th>
                           <th class="text-right pr-5" id="vlTotalPedido"></th>
                           <th></th>
                         </tr>
                       </tfoot>
                     </table>
                 </div>
               </div>
            </div>
         </div>   
      </div>
      <script>
         $("document").ready(function(){
         /* Produto recebe o foco ao chamar o sistema */
         $("#nmProduto").chosen().trigger('chosen:activate');
         
         /* Quando o produto for selecionado, a quantidade recebe o foco */
         $("#nmProduto").change(function(){
            $("#qtProduto").focus();
         })
         
         /* Adiciona a máscara ao input do valor do produto ( plugin mask utilizado ) */
         $('#vlProduto').mask("00000.00",{reverse: true});

         /* Adiciona a máscara ao input de quantidade do produto ( plugin mask utilizado ) */
         $('#qtProduto').mask("00000",{reverse: true});

         $("#btnAdicionarProduto").on('click', function($e){
            /* Evita que o evento ocorra */
            $e.preventDefault();

            /* Adiciona os produtos somente se o formulário for preenchido */
            if(validaForm())
            {
               /* Declarando a variável tb */
               var tb;

               /* preenchendo informações na variável tb para inserção no tbody da tabela */
               tb = "<tr><td>" + $("#nmProduto").val() + "</td>" +
                    "<td>" + $("#qtProduto").val() + "</td>" +
                    "<td class=\"text-right pr-5\">" + ($("#vlProduto").val() * 1).toFixed(2) + "</td>" +
                    "<td class=\"text-right pr-5\">" + ( $("#vlProduto").val() * $("#qtProduto").val() ).toFixed(2) + "</td>" +
                    "<td><button class=\"btn btn-light btn-sm delete text-danger\">✖</button></td></tr>";
               
               /* Adiciona a variável tb acima que contém os dados do produto no tbody da tabela.
                  Estas informações são inseridas no final do tbody */
               $("tbody").append(tb);

               /* Após inserção da linha do produto, os valores do pedido são atualizados */
               atualizaVlPedido();

               /* Se existir mais que 1 item no pedido, é removido a classe 
                  invisible do foot da tabela, mostrando assim o valor total do pedido */
               if($(".table-produtos tbody tr").length > 0)
                  $(".table-produtos tfoot").removeClass("invisible");
              
               /* As 3 linhas abaixo redefinem os campos de entrada do produto para deixando-os vazios*/
               $("#nmProduto").val('').trigger("chosen:updated");
               $("#vlProduto").val('');
               $("#qtProduto").val('');
              
               /* Define o foco para a seleção de produtos */
               $("#nmProduto").chosen().trigger('chosen:activate');
            }
         })

         /* Ao clicar na ação delete remove a linha dinamicamente da tabela */
         $(document).on("click",".delete",function() {
            /* Remove a linha referente ao produto clicado */
            $(this).parent().parent().remove();
            
            /* Se existir somente um produto no pedido, e for removido, o foot da tabela fica invisível
               O foot é usado para mostrar o valor total do pedido */               
            if($(".table-produtos tbody tr").length === 0)
               $(".table-produtos tfoot").addClass("invisible");
            
            /* Após exclusão da linha, os valores do pedido são atualizados */
            atualizaVlPedido();
         })

         /* Validação do Formulário */
         function validaForm()
         {     
            var formValid = true;
            if($("#nmProduto").val() === "")
               formValid = false;
            if($("#vlProduto").val() === "")
               formValid = false;
            if($("#qtProduto").val() === "")
               formValid = false;

            if(!formValid)
            {
               /* Remove a classe invisible do elemento msgValidaForm */
               $("#msgValidaForm").removeClass("invisible")
               /* Após 4 segundo a mensagem desaparece com a classe invisible sendo novamente adicionada */
               setTimeout(function(){
                  $("#msgValidaForm").addClass("invisible")
               }, 4000);

               return false;
            } else 
               return true;
         }

         /* Atualiza Valor Total do Pedido */
         function atualizaVlPedido()
         {
            /* Define o valor do pedido */
            var vlTotalPedido = 0;

            /* Varre todos os valores dos produtos da tabela */
            $(".table-produtos tbody tr td:nth-child(4)").each(function() {
               vlTotalPedido += parseFloat($(this).text());
            })
            /* Atualiza o valor do pedido na tabela */
            $("#vlTotalPedido").text(vlTotalPedido.toFixed(2));
         }

      })     
      </script>
      <script src="assets/jquery/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>

      <script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.2/chosen.jquery.js" type="text/javascript"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.11/jquery.mask.js" type="text/javascript"></script>
   </body>
   <a href="index.html" button type="button" class="btn btn-success">Voltar</button></a><br>
</html>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Bobrinha
      Olá, estou com um probleminha e não estou achando uma solução amigável e agradeço desde de já qualquer ajuda.
       
      Bom ao usar o php com o file_get_contents e buscar a URL https://www.udemy.com/api-2.0/courses/2064455?fields[course]=title,headline,price ela me retorna o price ou seja o preço em dolar, no entanto se eu jogar essa URL no navegador diretamente ela retorna o valor em real.
       
      O mesmo acontece se eu jogar no jquery com ajax e puxar a url no meu pc e no servidor web o preço fica em dolar mais se jogar diretamente no navegador fica em real o valor 
       
      Alguém saberia por que? 
    • By Loconarrativo
      Bom, no meu form, eu peço para o cliente digitar um valor (esse valor em reais), mas para continuar eu preciso me certificar que a variável que contem o valor, tenha 16 dígitos ao total, então se a pessoa digita uma 1000.00, eu preciso completar com 9 zeros a esquerda (fica assim 0000000001000.00), para eu saber quantos dígitos tem na variável, eu faço
      $i = strlen( $_POST['valor']);   ai eu faço
      $u = 8 - $i ; eu tenho o numero de zeros que preciso colocar a esquerda, mas como eu transformo isso em vários zeros? 
    • By ment0r
      Boa tarde amigos, tudo bem? Mais uma vez venho pedir o auxilio de vocês.
       
      Bom, estou desenvolvendo um sistema intranet pra uma empresa (php + firebird) e nele haverá uma página de cadastro de pedido; nela, o usuário digita a data da compra, a data de vencimento e vai listando os produtos - bem simples.
       
      Minha dúvida é a seguinte: como eu faço pra pra inserir vários produtos na mesma página e depois cadastrar tudo de uma vez? Peguei como exemplo uma tela do sistema de um amigo (não pode ser copiado, pois foi desenvolvido em Delphi).
       

       
      O usuário escolhe um produto e insere na lista, escolhe outro e insere na lista e assim por diante. No final ele cadastra todos. Minha dúvida não é nos procedimentos de cadastros (funções de banco e etc) é em como fazer a aparecer essa lista de produtos.
       
      Será que é com Jquey, Javascript... enfim... me deêm uma luz rsrs
       
      Muito obrigado desde já.
       
    • By ammorei
      Oi Pessoal, blz?!?!?
       
      Estou precisando da ajuda de vocês novamente.
      Alguém poderia analisar meu código e verificar o que estou fazendo errado. O código abaixo só me retorna 0, sendo que se eu der o mesmo comando no MySQL ele me mostra os valores.
       
      <?php $con=mysqli_connect("localhost","root","root1","retencao_alunos"); mysqli_set_charset($con, 'utf8'); // Check connection if (mysqli_connect_errno()) { echo "Falha na Conexão com o BD: " . mysqli_connect_error(); } echo "<h2>WHILE</h2>"; $m = 1; while($m<=12) { $sel = "SELECT count(*) AS quant FROM retencao WHERE ano=2018 AND month(data)='.$m.'"; $sql = mysqli_query($con,$sel); $row = mysqli_fetch_array($sql); $tot = $row['quant']; echo $tot; echo ", <br>"; $m++; } mysqli_close($con); ?> Lembrando que sou iniciante, então fiquem a vontade para sugerir melhorias.
      Fico no aguardo... Obrigado!!
    • By Pedro Tavares
      Olá.
       Me formei recentemente em Design Gráfico e tive matérias de desenvolvimento web e desenvolvi meu próprio site portfólio. Me sinto minimamente preparado para desenvolver um site. Fui solicitado para fazer um hotsite, front e Backend e não faço a menor ideia de qual valor cobrar. Podem me ajudar dizendo qual valor vocês cobram para um hotsite, one Page?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.