How to receive JSON values and soon after inserting them into the database in PHP

-2

I'm having difficulty getting the JSON values I check out of my stock, after consulting it and filling my inputs I filled out a few more fields manually and right after registering all this set in another bank. The problem is when I register these inputs that it fills with JSON, as they appear to be empty in PHP, but in the input preview it is OK.

$(document).ready(function(){
$("input[name='codProduto[]']").blur(function(){
     var nomeProduto = $("input[name='nomeProduto[]']");
     var qtProduto = $("input[name='qtProduto[]']");
     var valorProduto = $("input[name='valorProduto[]']");

     $( nomeProduto ).val('Carregando...');
     $( qtProduto ).val('Carregando...');
     $( valorProduto ).val('Carregando...');

         $.getJSON(
             'function.php',
             { codProduto: $( this ).val() },
             function( json ) 
             {
                  $( nomeProduto ).val( json.nomeProduto );
                  $( qtProduto ).val("1");
                  $( valorProduto ).val( json.valorProduto);
             }


         );
 });
 });

Excerpt with inputs

     <form id="form1" name"form1" method"post" action"" enctype="multipart/form-data">
        <div class="produtos">
          <p class="campoProduto">
          <label>Cód Produto: <input type="text" name="codProduto[]" id="codProduto[]" size="5"/></label>
          <label>Produto: <input name="nomeProduto[]" type="text" size="10" value="" /></label> 
          <label>Qt.:  <input type="number" min="1" max="999" size="1" name="qtProduto[]" id="qtProduto[]" onblur="calcValor()" /></label>
          <label>Valor R$: <input type="text" name="valorProduto[]" id="valorProduto[]" size="6" onkeypress="mascara(this,float)"/></label>
          <a href="#" class="removerProduto">Remover Produto</a> 
               </p>
             </div>
             <p>
              <a href="#" class="adicionarProduto">Adicionar Produto</a>
            </p>
            <br>
          <label>Data da Compra <input name="datacompra" type="text" id="datacompra" size="6" maxlength="10" value="<?php echo date('d/m/Y')?>" onKeyUp="javascript:somente_numero(this);" onkeypress="formatar_mascara(this,'##/##/####')"/></label>
   <label>Desconto (%)<span style="display:none" id="sp_vdesconto"></span><input type="hidden"  name="vdesconto" id="vdesconto" />:<input type="text" name="desconto" size="6" value="0"id="desconto" onblur="calcValor()" /></label>   
   <label>Entrada R$<span style="display:none" id="sp_vdentrada"></span><input type="hidden" size="6" name="vdentrada" id="vdentrada" />:<input type="text" name="entrada" size="6" value="0"id="entrada" onblur="calcValor()" /></label> 
   <label>Pacelas:  <input type="number" min="1" max="6" size="1" value="1" name="parcelas" maxlength="2" size="2" id="parcelas"/></label>  
   <label>Valor Total: <input type="text" name="total" size="6" id="total" /></label> 
               <input type="reset">
             <input type="hidden" name="cadastra" value="add" />
             <input type="submit" name="add" id="add" value="  Cadastrar  " />  
       </form>

and the time of insertion into the database:

<?php   if (isset($_GET['cadastra']) && $_GET['cadastra'] == 'add') {
  $datacompra = implode("-", array_reverse(explode("/",$_GET['datacompra'])));
  $nomeProduto = $_GET['nomeProduto[]'];
  $qtProduto = $_GET['qtProduto[]'];
  $valorProduto = $_GET['valorProduto[]'];
  $pagamento = "CREDIARIO";
  $ficha = $_GET['cadastro'];
        $cadastra = mysql_query("INSERT INTO t_cadcontratos (Ficha, NumContrato,DataContrato, QuantParcelas, ValorContrato, Entrada, Saldo, DescricaoProduto, QuantProdutos, FormaPagamento) 
                            VALUES ('$ficha', '$datacompra', ('$_GET[parcelas]'), '$valorProduto', ('$_GET[entrada]'), ('$_GET[total]'),
                            UPPER('$nomeProduto'), ('$qtProduto'), '$pagamento')");
    if($cadastra == '1') {
        echo "Venda CREDIARIO realizada com sucesso !";
    }else{
        echo "Erro ao realizar a venda CREDIARIO, tente novamente !";
}
}
?>

Here is an excerpt from the .js file that I use to add and remove inputs for new products:

$(function () {
    function removeProduto() {
        $(".removerProduto").unbind("click");
        $(".removerProduto").bind("click", function () {
            i=0;
            $(".produtos p.campoProduto").each(function () {
                i++;
            });
            if (i>1) {
                $(this).parent().remove();
            }
        });
    }
    removeProduto();
    $(".adicionarProduto").click(function () {
        novoCampo = $(".produtos p.campoProduto:first").clone();
        novoCampo.find("input").val("");
        novoCampo.insertAfter(".produtos p.campoProduto:last");
        removeProduto();
    });
});

The error:

Can you help me?

    
asked by anonymous 30.09.2014 / 22:01

2 answers

1

When trying to understand your code snippet, I note that the error you have is due to the form HTML using the POST method and then you want to get those variables in $_GET what can not be of being in $_POST .

I have to say that I find your code a little confusing, but especially in the link that makes php in html and Jquery anyway to collect form information in JQUERY do it this way:

var fld = JSON.stringify(array_de_campos);

$array_de_campos = json_decode(filter_input(INPUT_POST, $string_em_transito), true);

I remember that you should filter all the input ... so I put an explanatory example for the JSON theme.

    
02.10.2014 / 20:43
0

You are receiving data with $_GET , but your form is set to method"post" (although it is wrong, so I do not know if it is). Get the data with $_POST and set the method="POST" attribute.

The fields with [] (keys at the end of the name) are interpreted as array , so receive them as follows:

$nomeProduto = $_POST['nomeProduto'][0];

You can also remove the [] (keys) if there is only one element with this name, or if there are several, it can interpret as a normal array .

    
02.10.2014 / 20:53