Jump to content
malliotti

Preencher inputs conforme input código informado

Recommended Posts

Prezados,

tenho um form (abaixo), que ao informar o código no input Código, o mesmo faz uma consulta no banco (ajax->php->mysql) e retornar um json (deveria) com os dados nome do produto, valor unitário. Na verdade, deveria fazer. 

 

image.thumb.png.ac1cad0dd6722a02448cab3a915dc3a8.png

 

Na verdade, estou utilizando a casca de um recurso que já está funcionando, ou seja, tenho um form que ao informar o CEP, existindo na Base de Dados, preenche os demais inputs.

O problema, eu acredito que seja isso, como o form acima cria vários inputs com o "mesmo" nome, por exemplo name="produto[]" id="produto[]" o código está se perdendo.

 

trecho que cria o form acima, apenas a primeiro linha. as demais são criadas ao clicar no botão Adicionar Produto, ação realizada no próximo trecho de código.

                <div id="dynamic_field">
                    <div class="row">
                        <div class="col-md-1">
                            <div class="form-group">
                                <input type="text" class="form-control input-sm" name="codProd[]" id="codProd[]" placeholder="Codigo" required="required" />
                            </div>
                        </div>
                        
                        <div class="col-md-4">
                            <div class="form-group">
                                <input type="text" class="form-control input-sm" name="nmProd[]" id="nmProd[]" readonly="readonly"  />
                            </div>
                        </div>
                        <div class="col-md-2">
                            <div class="form-group">
                                <input type="text" class="form-control input-sm" name="vlrUni[]" id="vlrUni[]" readonly="readonly"  />
                            </div>
                        </div>
                        <div class="col-md-1">
                            <div class="form-group">
                                <input type="text" class="form-control input-sm" name="qtd[]" id="qtd[]" required="required"  />
                            </div>
                        </div>
                        <div class="col-md-2">
                            <div class="form-group">
                                <input type="text" class="form-control input-sm" name="vlrTotal[]" id="vlrTotal[]" readonly="readonly"  />
                            </div>
                        </div>    
                    </div>
                </div>

O script abaixo, está no arquivo que cria o formulário acima.

<script type="text/javascript">
          $(document).ready(function(){      
            var postURL = "gravarprodutos.php";
            var i=1;
            
            $('#add').click(function(){  
                 i++;  
                 $('#dynamic_field').append('<div id="row'+i+'" class="row"><div class="col-md-1"><div class="form-group"><input type="text" class="form-control input-sm" name="codProd'+i+'" id="codProd'+i+'" placeholder="Codigo" required="required" /></div></div><div class="col-md-4"><div class="form-group"><input type="text" class="form-control input-sm" name="nmProd'+i+'" id="nmProd'+i+'" readonly="readonly"  /></div></div><div class="col-md-2"><div class="form-group"><input type="text" class="form-control input-sm" name="vlrUni'+i+'" id="vlrUni'+i+'" readonly="readonly"  /></div></div><div class="col-md-1"><div class="form-group"><input type="text" class="form-control input-sm" name="qtd'+i+'" id="qtd'+i+'" required="required"  /></div></div><div class="col-md-2"><div class="form-group"><input type="text" class="form-control input-sm" name="vlrTotal'+i+'" id="vlrTotal'+i+'" readonly="readonly"  /></div></div><div class="col-md-2"><div class="form-group"><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove btn-sm"><i class="fa fa-trash"></i></span> Apagar</button></div></div>')
            });
            
            $(document).on('click', '.btn_remove', function(){  
                 var button_id = $(this).attr("id");   
                 $('#row'+button_id+'').remove();  
            });

            $('#submit').click(function(){            
                $.ajax({  
                      url:postURL,  
                      method:"POST",  
                      data:$('#add_name').serialize(),
                      type:'json',
                      success:function(data)  
                      {
                        i=1;
                        $('.dynamic-added').remove();
                        $('#add_name')[0].reset();
                  alert('Registros inserido com sucesso.');
                      }  
                 });  
            });    
          });  
      </script>

 

Este arquivo produtoAvulso.js é o que recebe ou deveria receber o valor informado no input código e realizado um POST no arquivo consultaprodutoavulso.php 

$(document).ready( function() {
    /* Executa a requisição quando o campo CODIGO perder o foco */
    $('#codProd').blur(function(){
            /* Configura a requisição AJAX */
            $.ajax({
                 url : 'consultaprodutoavulso.php', /* URL que será chamada */ 
                 type : 'POST', /* Tipo da requisição */ 
                 data: 'produto=' + $('#codProd').val(), /* dado que será enviado via POST */
                 dataType: 'json', /* Tipo de transmissão */
                 success: function(data){
                     if(data.sucesso == 1){
                         $('#nmProd').val(data.nomeproduto);
                         $('#vlrUni').val(data.valorproduto);
                         $('#qtd').focus();
                     }else{
                        alert( "Produto Não encontrado" );
                        $('#codProd').val("");
                        $('#qtd').focus();
                     }
                 }
            });   
    return false;    
    })
 });

consultaprodutoavulso.php

<?php
 ini_set('default_charset','UTF-8');
 require 'conexao.php';
$produto = $_POST['produto'];

$consultaProduto = mysqli_query($conn,"select * from produto where codProdutoPersonalizado = '".$produto."' ");
if(mysqli_num_rows($consultaProduto) > 0){
    foreach ($consultaProduto as $consultaProduto_view)
    $dados['sucesso'] = "1";
    $dados['nomeproduto']     = (string) $consultaProduto_view['nomeProduto'] ;
    $dados['valorproduto']     = (string) $consultaProduto_view['valorProduto'] ;
    echo json_encode($dados);   
}else{
    echo "2";
}
?>

Em resumo, gostaria, conforme o input código, seja preenchido os dados ao lado, respeitando cada "linha".

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 TheRonaldoStar
      Oii, fala ae pessoal!!
      Alguém pode me ajudar com uma coisa por favor?;
      Seguinte!, eu anteriormente fiz uma pergunta aqui no fórum recorrente a isso, mas eu conseguir uma solução parcial.
      Que era, fazer uma listagem de todos os cadastros e fazer a junção dos cadastros com uma coluna igual, Ou seja existem duas colunas [DE e Para], que recebem o id de quem está recebendo ou que está enviando a mensagem, eu conseguir fazer a tal listagem por grupo mas o problema que estou tendo é: que so faz o agrupamento de as colunas contiver o id por ex: [De = "1" e Para ="2"].
      Atualmente estou usando a codificação deste Jeito:
       
      $sql_2 = $db -> prepare("SELECT * FROM privado WHERE (Para = '$Meu_id') Or (De = '$Meu_id') GROUP BY Para, De DESC"); $sql_2 -> execute(); Esta consulta como pode ver ele busca todos os cadastros que tenha o meu ID ou seja do usuário online!, Após a consulta ele vei obter em um "while" somente o [ Id_De eo Id_Para ] desta forma:
      while($dados_2 = $sql_2 -> fetch(PDO::FETCH_OBJ)){ $Id_De = ($dados_2 -> De); $Id_Para = ($dados_2 -> Para); } Mas em fim eu gostaria de saber como mostrar somente um resultado ou seja o ultimo resultado que tiver o meu ID em ambas colunas [ Id_De ou Id_Para ].
      Antes de vocês me recomendar a função DESC LIMIT 'valor' saiba eu quero que liste todos os usuários que enviou ou recebeu minha mensagem não somente 1 ou seja se eu mandar um mensagem para o usuário 2 e ele me retornar uma mensagem vai mostrar somente o ultimo registro que tenha o meu ID e o id dele.
       
      Atenciosamente,
      ~Ronaldo
       
    • By TheRonaldoStar
      Oi, mais cedo eu fiz um post aqui no site mas um pouco longo creio eu que e mais fácio eu fazer uma pergunta mais direta.
      A pergunta é:
      Como posso fazer agrupamentos de uma tabela através de dois campos cujo os valores são =, mesmo que esteja invertidos?
      EX: [DE = "1"], [PARA = "2"].
      E fazer o agrupamento ou só mostrar o ultimo cadastro mesmo que eles estejam invertidos desta forma?
      EX: [DE = "2"], [PARA = "1"].
       
      Acho que agora com este post fui mais claro, Alguém pode me ajudar por favor??.
      Atenciosamente,
      ~Ronaldo
    • By HigorCrds
      Bom, o que eu consegui até agora foi fazer com que, ao usuário clicar em algum dos botões de paginação (1, 2, 3...) o PHP guarde uma SESSION com o número da página correspondente.
      Segue o código:
       
      <!-- BOTÃO COM O NÚMERO DA PÁGINA --> <button onclick="mudaVar(<?php echo $i; ?>);"> <?php echo $i; ?> </button> <!-- FUNÇÃO PARA GUARDAR SESSION PG --> function mudaVar(valor) { $.ajax({ url:'sessions.php?valor='+valor }); } // GUARDA SESSION PG if(isset($_GET['valor'])){ $_SESSION['pg'] = $_GET['valor']; } Até aí tudo bem, só que o problema é que a SESSION não é alterada naquele momento, só quando eu atualizo a página.
      Como corrigir isso?
    • By Carcleo
      A ideia:
       
      toda e entrada no site, seja com link direto do tipo:
       
      www.site.com.br/pasta1/pasta2/arquivo.php  
      ou normal url amigável
       
      www.site.com.br/categoria/tipo  
      tudo queria que redirecionasse para o index.php da raiz do site.
       
      E que, caso o arquivo ou pasta NÃO existisse, abrisse normalmente a pagina 404.php
       
       
      Tentei de tres formas mas nenhuma dá certo.
       
      Primeira forma
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1 Segunda forma:
      Options +FollowSymLinks DirectorySlash On RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_FILENAME} \.php$ RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?request=$1 [L] Terceira forma:
      RewriteEngine On ErrorDocument 400 http://www.sortecard.com.br/index.php ErrorDocument 401 http://www.sortecard.com.br/401.php ErrorDocument 403 http://www.sortecard.com.br/403.php ErrorDocument 404 http://www.sortecard.com.br/404.php ErrorDocument 500 http://www.sortecard.com.br/500.php php_value allow_url_fopen on php_value allow_url_include on php_flag mail_filter 0 RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^(.*)$ index.php?page=$1 Problemas:
       
      A) Quando acesso a url diretamente não está redirecionando para o index.
      B) Quando falo que é para redirecionar todos os arquivos ele não me dá os parêmetros. 
    • By Pellegrini3834
      Ola galera do IMasters!!!!!!
       
      Estou com uma duvida eu tenho um CRUD em php MVC e queria saber em que camada fica as mensagens depois de uma realização de um evento por exemplo:
      Cadastro de Pessoa, depois de cadastrada quero que ele emita uma mensagem dizendo que a "PESSOA FOI CADASTRADA COM SUCESSO!!!!" e eu queria saber  em que parte ela fica se é no Controle ou na View porque sabemos que no modelo fica a parte referente a manipulação de dados.
      Obrigado.
×

Important Information

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