Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá pessoal eu estou com uma duvida que é simples para quem ja tem esperiencia em JQuery.
é o seguinte eu estou desenvolvendo um caixa de automação e nele eu tenho o campo ID que consulta o id do produto e me retorna a descrição usando o ID como filtro. porém eu queria que além de ele me retornar a descrição ele também atualizasse um campo com o Preço do produto e que eu pudesse printar este preço na tag que eu quiser pois como está eu contigo printar o preço mais ele vem junto com a descrição e eu queria separa-los. Segue abaixo o meu código:
JQuery neste codigo eu envio o id e retorno a descrição ali no final eu uso para printar o #resultado. Eu gostaria de além de ter o resultado eu tivesse um outro id com o preço assim eu poderia por resultado em um lugar e preço em outro
<script type="text/javascript" language="javascript" src="jquery-2.1.3.min.js"></script>
<script type="text/javascript" language="javascript">
$(function(){ // declaro o início do jquery
$("input[name='id_product']").blur( function(){//botão para disparar a ação
var id_product = $("input[name='id_product']").val();
//alert(nomeUsuario);
$.post('consult_produto.php',{id_product: id_product},function(data){
$('#resultado').html(data);//onde vou escrever o resultado
});
});
segue o docigo PHP:
<?php
//envio o charset para evitar problemas
header("Content-Type: text/html; charset=ISO-8859-1");
$con = @mysql_connect('localhost', 'root', '');//faço a conexão com o banco
mysql_select_db('saboreart', $con);//seleciono a tabela no banco
$sql = "SELECT * FROM `products`
WHERE `id` = '{$_POST['id_product']}' ";//monto a query
$q = mysql_query( $sql );//executo a query
if( mysql_num_rows( $q ) > 0 )://se retornar algum resultado
$collect_date = mysql_fetch_array($q);
$produto = $collect_date[2];
$precoProduto = $collect_date[4];
$precoFormat = number_format($precoProduto, 2, ',', ' ');
echo $produto;
echo '<br />'."Valor:"."<input type=\"text\" value=\"R$: $precoFormat\">";
else:
endif;
?>
e aqui segue o HTML:
<body>
<div id="corpo">
<form id="formulario" action="" method="post">
<label> Codigo do produto: <input type="text" id="idProduto" name="id_product"></label>
<label>Descricao: <span id="resultado"> AQUI EU PRINTO A DESCRIÇÃO</span></label><br />
<label>Valor: <span id="valor">AQUI EU GOSTARIA DE PRINTAR O VALOR </span></label><br />
<label> Quantidade: <input type="text" id="qtdProduto" name="qtdProduto" value="01"></label><br />
<input id="enviaPost" type="submit" name="Enviar" value="Inserir Produto">
</form>>
No PHP é só colocar o retorno em um array, e utilizar json_encode.
No retorno do $.post você manipula como quiser o seu json.
voce poderia me dar uma amostra de como seria? e que sou meio iniciante em php
Eu simulei no jsfiddle, para você entender melhor - http://jsfiddle.net/angelorubin/zuferd9j
No PHP é só utilizar o json_encode.
>
Eu simulei no jsfiddle, para você entender melhor - http://jsfiddle.net/angelorubin/zuferd9j
No PHP é só utilizar o json_encode.
reparei que no val_product voce definiu um valor porém o que eu pretendo é que atravéz do id inserido ele filtre e me de a descrição do produto e o valor do produto que es´ta cadastrado no banco de dados que está contino numa variavel
Eu entendi o que você precisa, mas como citei anteriormente, "Eu simulei no jsfiddle", porém o que você precisa fazer é enviar apenas o id e retornar o que precisa com o json_encode.
Seria algo assim:
Você recebe o $_POST com o id_product enviado pelo ajax no php.
$id = $_POST;
Utiliza [json_decode](http://php.net/manual/pt_BR/function.json-decode.php) para o id_product que esta no $_POST proveniente do ajax.
$id = json_decode(id);
Faça sua busca normalmente com php/mysql.
Transfrome o resultado em json com o json_encode e retorne a requisição ajax.
$resultado = json_encode($resultado_da_minha_busca_no_banco);
echo($resultado);
Com o $resultado de retorno e só colocar cada coisa em seu devido lugar com jquery.
>
Eu entendi o que você precisa, mas como citei anteriormente, "Eu simulei no jsfiddle", porém o que você precisa fazer é enviar apenas o id e retornar o que precisa com o json_encode.
Seria algo assim:
Você recebe o $_POST com o id_product enviado pelo ajax no php.
$id = $_POST;
Utiliza [json_decode](http://php.net/manual/pt_BR/function.json-decode.php) para o id_product que esta no $_POST proveniente do ajax.
$id = json_decode(id);
Faça sua busca normalmente com php/mysql.
Transfrome o resultado em json com o json_encode e retorne a requisição ajax.
$resultado = json_encode($resultado_da_minha_busca_no_banco);
echo($resultado);
Com o $resultado de retorno e só colocar cada coisa em seu devido lugar com jquery.
acho que entendi porém naoe stou cosneguindo. segue o Jquery que estou executando para pegar o resultado:
$(function(){ // declaro o início do jquery
$("input[name='id_product']").blur( function(){//botão para disparar a ação
var id_product = $("input[name='id_product']").val();
//alert(nomeUsuario);
$.post('consult_produto.php',{id_product: id_product},function(data){
$('span#resultado').append(data.produto);
$('span#valor').append(data.precoFormat);
});
});
e segue o php:
<?php
//envio o charset para evitar problemas
header("Content-Type: text/html; charset=ISO-8859-1");
$con = @mysql_connect('localhost', 'root', '');//faço a conexão com o banco
mysql_select_db('saboreart', $con);//seleciono a tabela no banco
$sql = "SELECT * FROM `products`
WHERE `id` = '{$_POST['id_product']}' ";//monto a query
$q = mysql_query( $sql );//executo a query
if( mysql_num_rows( $q ) > 0 )://se retornar algum resultado
$collect_date = mysql_fetch_array($q);
$produto = $collect_date[2];
$precoProduto = $collect_date[4];
$precoFormat = number_format($precoProduto, 2, ',', ' ');
echo json_encode($produto, $precoFormat);
else:
endif;
?>
se possível me explique aonde estyou errando?
Envia o $collect_date com tudo e manipula depois.
echo json_encode($collect_date);
Manipula dentro do success:
$("input[name='id_product']").on('blur', function(){//botão para disparar a ação
var id_product = $(this).val();
$.ajax({
type : "POST",
url : "/echo/json/",
data : {
json : JSON.stringify({
'id_product' : id_product
})
},
success : function(response){
console.log(response);
// manipula a resposta aqui
}
});
});
Faz o console.log(response) e veja no console do navegador como fica seu retorno, ai é só manipular.>
Envia o $collect_date com tudo e manipula depois.
echo json_encode($collect_date);
poderia me mostrar como manipularia pois e ai que me enrosco
Printa o resultado do console.log(response), para vermos como iremos manipula-lo.
Printa o resultado do console.log(response), para vermos como iremos manipula-lo.
ME RETORNA ISTO:
{"0":"12a","id":"12a","1":"Aleatoria","categoria":"Aleatoria","2":"Primeiro produto de testes","produto":"Primeiro produto de testes","3":"12","valor_custo":"12","4":"15","valor_venda":"15","5":"2015-01-30 14:30:48","data_cad":"2015-01-30 14:30:48"}
como eu manipulo isto?
Você recebe o json no response:
{
"0": "12a",
"id": "12a",
"1": "Aleatoria",
"categoria": "Aleatoria",
"2": "Primeiro produto de testes",
"produto": "Primeiro produto de testes",
"3": "12",
"valor_custo": "12",
"4": "15",
"valor_venda": "15",
"5": "2015-01-30 14:30:48",
"data_cad": "2015-01-30 14:30:48"
}
E pega o valor assim:
console.log(response.produto); // Primeiro produto de testes
console.log(response.valor_venda); // 15
E coloca no devido lugar.
$('#produto').empty().append(response.produto);
ainda nao consegui eis o codigo que fiz porém nao está funcionando
$("input[name='id_product']").blur( function(){//botão para disparar a ação
var id_product = $("input[name='id_product']").val();
$.ajax({
type : "POST",
url : "consult_produto.php",
data : {
json : JSON.stringify({
'id_product' : id_product
})
},
success : function(response){
console.log(response.produto); // Primeiro produto de testes
console.log(response.valor_venda); // 15
$('#produto').html(response.produto);
$('#valor').html(response.valor_venda);
}
});//
});//fim da função onblurUtilize ctrl+shift+j no firefox (por exemplo) e veja qual erro aparece no console.
https://www.dropbox.com/s/8yn3yuq2g1ae727/print_error.JPG?dl=0
Esta me dizendo undefined
nestas linhas:
console.log(response.produto);
console.log(response.produto); // Primeiro produto de testes
console.log(response.valor_venda); // 15
amigo depois de muito pesquisar na internet finalmente eu consegui fazer.
Eis o código para quem tiver interesse:
$("input[name='id_product']").blur( function(){//botão para disparar a ação var id_product = $("input[name='id_product']").val(); //alert(nomeUsuario); $.ajax({ type: 'POST', url: 'consult_produto.php', data: {id_product: id_product}, dataType: 'json', success: function(data) { $('#produto').html(data.produto); $('#valor').html(data.valor_venda); } }); });>
amigo depois de muito pesquisar na internet finalmente eu consegui fazer.
OK!!?
>
OK!!?
tudo certo agora e muito opbrigado pois foi atravéz de suas orientaçoes que eu consegui solucionar ewste problema
No PHP é só colocar o retorno em um array, e utilizar json_encode.
No retorno do $.post você manipula como quiser o seu json.