I can not get search results values from JSON and database after adding new dynamic product line with JavaScript.
HTML form, product is search by code:
<form id="adicionarformProdutos" method"post" action"" enctype="multipart/form-data">
<a href="#" id="adicionarProduto">Adicionar Faixa</a>
<fieldset class="fieldsetProduto">
<legend>Produto 1</legend>
<div class="produtos">
<label for="codProduto1">Código:</label><input type="text" id="codProduto1" size="5" name="codProduto[1]" />
<label for="nomeProduto1">Nome:</label> <input type="text" id="nomeProduto1" size="9" disabled name="nomeProduto[1]" />
<label for="qtProduto1">Qt.:</label> <input type="number" min="1" max="999" size="1" id="qtProduto1" name="qtProduto[1]" onblur="calcValor()" />
<label for="valorProduto1">Valor und. R$:</label> <input type="text" id="valorProduto1" disabled name="valorProduto[1]" size="6" onkeypress="mascara(this,float)" />
</div>
</fieldset>
</form>
JSON excerpt that searches the products and fills in the remaining variables:
//-----------------------------------------------------
//Funcao: functionjson
//Autor: Rafael Assmann <[email protected]>
//Sinopse: Json para capturar código do produto e reali
//zar a busca no banco de dados e preencher os demais campos deste produto
//Parametro:
// codProduto[] : código do produto digitado para pesquisa
//Retorno: nomeProduto[], qtProduto[] e valorProduto[] : informações do BD
//-----------------------------------------------------
$(document).ready(function(){
$("input[name='codProduto[1]']").blur(function(){
var nomeProduto = $("input[name='nomeProduto[1]']");
var qtProduto = $("input[name='qtProduto[1]']");
var valorProduto = $("input[name='valorProduto[1]']");
$( 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 where you add more products, where the JSON interaction does not work:
$(function () {
var i = 1;
$("#adicionarProduto").click(function () {
i++;
novoProduto = $(".fieldsetProduto:first").clone();
novoProduto.find("input").each(function () {
$(this).val("")
});
$("#adicionarformProdutos").append("
" + novoProduto.html().replace(/1/g, i) + "")
});
});
Insert into database, NOTE: Variables that are fed by JSON appear to be empty:
<?php
$Ficha = filter_input(INPUT_GET,'id');
?>
<div id="painelcadastro2" align="center">
<?php if (isset($_GET['cadastra']) && $_GET['cadastra'] == 'add') {
$datacompra = implode("-", array_reverse(explode("/",$_GET['datacompra'])));
$nomeProduto = filter_input(INPUT_GET, 'nomeProduto1');
$qtProduto = filter_input(INPUT_GET, 'qtProduto1');
$valorProduto = filter_input(INPUT_GET, 'valorProduto1');
$parcelas = filter_input(INPUT_GET, 'select_parcelas');
$entrada = filter_input(INPUT_GET, 'entrada');
$total = filter_input(INPUT_GET, 'total');
$pagamento = "CREDIARIO";
$cadastra = mysql_query("INSERT INTO t_cadcontratos (Ficha, DataContrato, QuantParcelas, ValorContrato, Entrada, Saldo, DescricaoProduto, QuantProdutos, FormaPagamento)
VALUES ('$Ficha', '$datacompra', '$parcelas', '$valorProduto', '$entrada', '$total', '$nomeProduto', '$qtProduto', '$pagamento')");
if($cadastra == '1') {
echo "Venda Crediário realizada com sucesso !";
}else{
echo "Erro ao realizar a venda Crediário, tente novamente !";
}
}
?>
Function.php
<?php
/**
* função que devolve em formato JSON os dados do cliente
*/
function retorna( $nome, $db )
{
$sql = "SELECT 'identProduto', 'codProduto', 'qtProduto', 'nomeProduto', 'valorProduto' FROM 't_estoque' WHERE 'codProduto' = '{$nome}' ";
$query = $db->query( $sql );
$arr = Array();
if( $query->num_rows )
{
while( $dados = $query->fetch_object() )
{
$arr['nomeProduto'] = $dados->nomeProduto;
$arr['qtProduto'] = $dados->qtProduto;
$arr['valorProduto'] = $dados->valorProduto;
}
}else{
$arr['nomeProduto'] = 'produto não encontrado';
}
if($arr['qtProduto'] == 0)
$arr['nomeProduto'] = 'sem estoque';
return json_encode( $arr );
}
/* só se for enviado o parâmetro, que devolve os dados */
if( isset($_GET['codProduto']) )
{
$db = new mysqli('localhost', 'root', '', 'buchm613_buchmann');
echo retorna( filter ( $_GET['codProduto'] ), $db );
}
function filter( $var ){
return $var;//a implementação desta, fica a cargo do leitor
}
How can I proceed to populate the fields dynamically added through the above JavaScript snippet?