Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tiago j.a

[Resolvido] Verificação em banco com Jquery

Recommended Posts

Bom dia pessoal!

Estou tentando fazer com que no momento que o usuário selecionar uma determinada opção no select, seja enviado a outra página o value dessa opção selecionada, e com isso fazer uma consulta no banco com esse dado, para que em outro formulario da pagina que enviou a opção alguns dados sejam modificados.

Para enviar este dado estou utilizando essa função:

 

<script type="text/javascript">	  $(function() {$.post("request.php", $("select[name=fornecedor]").serialize());											   });		});</script>
Gostaria que enviasse para a pagina request.php, a opção desse select, pelo que andei pesquisando, esta função realizaria o que preciso.

Dai, vi no firebug, que ele passa os parametros certinhos, mas como resposta ele não me da nada.

Alguém poderia me ajudar?

DEsde já agradeço a coloboração de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz.. você não fesz a function de callback.. ai não vai trazer nada mesmo...

veja corretamente a API:

 

http://api.jquery.com/jQuery.post/

 

Fiz isso uma vez, dá uma olhada:

Funcionando:

http://www.wbruno.com.br/scripts/combo-preenche-input.php

 

Código:

http://www.wbruno.com.br/blog/?p=12

 

(leia os comentários)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá ok, a função que envia a opção selecionada seria essa:

       [code] <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
        $(document).ready(function(){
                $("select[name='nome']").change(function(){
                        $("input[name='endereco']").val('Carregando...');
                        $("input[name='telefone']").val('Carregando...');

                        $.getJSON(
                                'function.php',
                                {idCliente: $(this).val()},
                                function(data){
                                        $.each(data, function(i, obj){
                                                $("input[name='endereco']").val(obj.endereco);
                                                $("input[name='telefone']").val(obj.telefone);
                                        })
                                });
                });
        });
        </script>[/code]
Mas eu só gostaria de enviar a opção, não necessito que ela preencha nada no momento que foi selecionada. Meu problema é o seguinte.
Tenho o select dos fornecedores, e abaixo tenho outros campos de preço de produtos, e tem alguns fornecedores que tem alguns previlegios, tipo descontos e tal, e tenho isso no banco.
Dai enviaria para a pagina que mostra os preços o id desse fornecedor, e partindo disso, enviaria os preços quando o produto fosse selecionado, entende?
Aquela função anterior não enviaria isso para a outra página?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá...acho que entendi como você está pensando..

 

se você apenas enviar, sem configurar uma function para o estado sucess, não adianta de nada.

Pois você terá perdido oque foi enviado, pois este parâmetro não poderá ser resgatado numa nova requisição, já que ele só existirá no retorno da requisição em que foi enviado.

 

Monte um 'script'(roteiro), do que precisa.

 

-> Selecionar um fornecedor num combo(até aqui nada acontece)

-> Selecionar um produto, e ai então, ver se o fornecedor possui desconto ou não.

 

Certo?

Os descontos são para cada produto individualmente ? ou se um fornecedor possuir desconto, ele possui para todos os produtos ?

você pode trabalhar então com uma variável global em js, guardando o valor do desconto nela, para depois qndo trazer o valor do produto, ver com javascript simples, qnto é o valor para o fornecedor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o seguinte:

Tenho um select no topo, onde é selcionado o fornecedor, e com aquela sua função inicial, é preenchido seus dados.

Até ai nada de novo, tdo funcionando.

Logo abaixo, tenho outro formulario, onde mostro todos os produtos, e seus respectivos preços, aqui também, tdo funcionando.

Só que lá no banco tenho o seguinte.

Uma tabela lista, onde tenho, lista 1, 2 e 3.

E na fornecedores, tenhos seus dados, e a qual tabela ele pertence.

E na de produtos, tenho 3 preços para cada produto.

Dai na pagina que busco os preços, que é esta:

<?php
include "Config/config_sistema.php"; 
$id = $_POST['id_cliente'];
$consulta2 = mysql_query("select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = 2")or die(mysql_error());;
$j=1;
while ($linha2 = mysql_fetch_array($consulta2)){
$data[$j] = $linha2['custo_unitario'];
$lista_cliente = $linha2['lista_cliente'];
$j++;
}
echo $data[$_POST['id']];
Onde naquela consulta ali, só o que teria que pegar ao inves de id_cliente = 2, teria que ser id_cliente igual ao id do fornecedor que foi selecionado, e partindo disso faria um if.

if($lista_cliente == 1)
$data[$j] = $linha2['custo_unitario1'];
else if($lista_cliente == 2)
$data[$j] = $linha2['custo_unitario2'];
else
$data[$j] = $linha2['custo_unitario3'];
Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

?

oque é esta linha?

echo $data[$_POST['id']];
ainda não peguei a dúvida então...

$consulta2 = mysql_query("select l.*, f.* 
from lista_instrumentos l, fornecedores f 
where id_cliente = {$id}")or die(mysql_error());;
seria isso ?

 

A lista de produtos é preenchida ao carregar a página ? ou em selecionar o fornecedor ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta linha

echo $data[$_POST['id']];
Envia para a página o custo do produto selecionado.

A consulta seria essa mesma,

$consulta2 = mysql_query("select l.*, f.* 
from lista_instrumentos l, fornecedores f 
where id_cliente = {$id}")or die(mysql_error());;
só não sei como enviar para a pagina request, o cliente que foi selecionado.

Na lista de produtos, tenho um select, onde são impressos todos os produtos, a partir do momento que seleciono o produto, ele preenche seu respectivo preço, buscando os dados daquela página que te passei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia os comentários do código:

<script type="text/javascript">
$(document).ready(function(){
    $("select[name='fornecedor']").change(function(){//chamando a função no onchage do select
          var id_fornecedor = $( this ).val();
          alert( id_fornecedor );//variavel com valor selecionado no combo fornecedor
          
          $.post("request.php", 
          {id_fornecedor: id_fornecedor },//enviando variavel $_POST['id_fornecedor'] para o arquivo request.php
          function( data ){
               alert( data );//alert da resposta do servidor
          });
    });
});
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O 1º alert, ele imprimiu o id do fornecedor corretamente, mas este aqui:

alert( data );//alert da resposta do servidor
Ele imprimiu em branco, mostra a janela mas com nada impresso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai mostrar oque você der de echo na página request.php

 

Qual é a dúvida ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ser impresso o segundo alert, na pagina request faria o seguinte então né?

$id = $_POST['fornecedor'];
echo $id;
Naquele segundo alert ele teria que imprimir a variavel $id, que foi enviada por ela mesma, isto?

 

Resposta do servidor já está vindo corretamente, coloquei desta forma, e ele imprime os dois select´s perfeitamente:

$id = $_POST['id_fornecedor'];
echo $id;

Só que a consulta que faço para imprimir o preço posteriormente, partindo do id do fornecedor que foi selecionado, ela não mostra, fiz assim:

$consulta2 = mysql_query("select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = '$id'")or die(mysql_error());;

Desta maneira ele não mostra, mas se coloco "manualmente" algum valor lá, exemplo

where id_cliente = 2
, ele imprime o valor.

O que que pode estar acontecendo aqui?

 

Alguma sugestão?

$id = $_POST['id_fornecedor'];
echo $id;
$consulta2 = mysql_query("select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = '$id'")or die(mysql_error());;
$j=1;
while ($linha2 = mysql_fetch_array($consulta2)){
$lista_preco = $linha2['lista_preco'];
if ($lista_preco == 'A')
{
	$data[$j] = $linha2['custo_unitario1'];	
}
else if ($lista_preco == 'B')
{
	$data[$j] = $linha2['custo_unitario'];		
}
else if ($lista_preco == 'C')
{
	$data[$j] = $linha2['custo_unitario3'];		
}
$j++;
}
echo $data[$_POST['id']];
A página que enviaria os preços ficaria assim, fiz os teste já colocando o id lá, mostrou certinho os preços, apenas ele não aparece nada quando comparo o id_cliente do banco, com a variavel $id, mas ele está me dando a resposta do servidor corretamente

 

Caras, tentei de todas as formas, atribui um valor a uma variavel, tipo

$id = 2, ele funciona, colocando direto na consulta um valor ele funciona, mas recebendo via post, ele não aceita na consulta.

No alert lá na pagina, ele mostra certinho, verifiquei no firebug também, ele mostra a resposta corretamente, mas na verificação no banco não adianta, não mostra.

Existe alguma possibilidade de alguns recursos do php ñ funcionarem no ajax, ou vice-versa?

Eu tenho desta forma:

$id = $_POST['id_fornecedor']);
e a consulta:

$consulta2 = mysql_query("select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = '$id'")or die(mysql_error());;
Se fizer desta forma, ele não funciona, por isso acredito que seja algo que ñ esteja funfando entre o php e o ajax, posso estar enganado.

Fazendo assim, ele já funciona!

$id = 2;
e a consulta:

$consulta2 = mysql_query("select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = '$id'")or die(mysql_error());;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem vários erros de sintaxe no teu código, e nos trechos que você postou, além de algumas 'brechas de lógica' também.

Descarte a possibilidade de ser erro nas linguagens.. o erro está no teu código !

 

faça assim, para debug:

request.php

$id = $_GET['id_fornecedor'];//depois troque por $_POST

$sql = "select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = {$id}";
$consulta2 = mysql_query( $sql )or die( mysql_error() );

$linha2 = mysql_fetch_assoc($consulta2);

if ($linha2['lista_preco'] == 'A')
        $data = $linha2['custo_unitario1']; 
else if ($linha2['lista_preco'] == 'B')
        $data = $linha2['custo_unitario'];          
else if ($linha2['lista_preco'] == 'C')
        $data = $linha2['custo_unitario3'];

echo $data;

e então acesse diretamente o arquivo:

 

localhost/request.php?id_fornecedor=2

 

Se aparecer exatamente o echo, troque o $_GET por $_POST, e então volte a testar usando o jQuery para disparar o AJAX

onde está a conexão com o banco ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa do echo do id !

coloca lá:

$id = $_POST['id_fornecedor'];//depois troque por $_POST

$sql = "select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = {$id}";
que tem que funcionar.

 

Apenas para desencargo:

alert( id_fornecedor );//variavel com valor selecionado no combo fornecedor
este alert, é numérico, certo ? aparece um INT ..

 

o

alert( data );//alert da resposta do servidor
agora deve retornar o preço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay... conseguiu resolver então ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não parceiro, porque do modo como está agora, o preço do produto não varia quando seleciono um produto, e sim quando seleciono um fornecedor.

Do jeito que está, todos produtos ficaram com o mesmo valor quando seleciono.

Porque como ele iria imprimir o preço do produto se ainda não o selecionei, entende?

Tenho o select do fornecedor primeiro, e depois o do protudo, por isso teria que enviar o id do fornecedor, manda-lo para a página request, e fazer a consulta com esse id, e ai sim, quando selecionar o produto mostrar o seu preço.

Acho que não tinha me expressado corretamente, fazendo com que você ñ entedesse corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade, eu sabia que não resolveria ainda.. mas você já entendeu como fazer ?

 

troca lá:

$sql = "select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = {$id}";
por algo como:

$sql = "select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = {$id_fornecedor} AND id_produto = {$id_produto}";

E então:

$(document).ready(function(){
    $("select[name='produto']").change(function(){//aplicando a chamada no select de produto
          var id_produto = $( this ).val();
          var id_fornecedor =  $("select[name='fornecedor']").val();
          
          $.post("request.php", 
          {id_fornecedor: id_fornecedor, id_produto: id_produto },//enviando 2 variáveis

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me pescou então?

hehehe

A função ficaria assim então?

<script type="text/javascript">
$(document).ready(function(){
    $("select[name='instrumento[]']").change(function(){//aplicando a chamada no select de produto
          var id_produto = $( this ).val();
          var id_fornecedor =  $("select[name='fornecedor']").val();
          
           $.post("request.php", 
          {id_fornecedor: id_fornecedor, id_produto: id_produto },//enviando 2 variáveis
          function( data ){
               alert( data );//alert da resposta do servidor
          });
    });
});


</script>
No alert, ele está me dando o preço corretamente, apenas não está enviando ele para o meu formulário, no campo preço!

Na página de consulta, coloquei assim:

include 'Config/config_sistema.php';
$id_produto = $_POST['id_produto'];
$id = $_POST['id_fornecedor'];//depois troque por $_POST
$sql = "select l.*, f.* from lista_instrumentos l, fornecedores f where id_cliente = '$id' and id = '$id_produto'";
$consulta2 = mysql_query( $sql )or die( mysql_error() );
$linha2 = mysql_fetch_assoc($consulta2);
if ($linha2['lista_preco'] == 'A')
        $data = $linha2['custo_unitario1']; 
else if ($linha2['lista_preco'] == 'B')
        $data = $linha2['custo_unitario'];          
else if ($linha2['lista_preco'] == 'C')
        $data = $linha2['custo_unitario3'];
echo $data;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.