Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal estou com um formulaário que tem 6 campos apenas:
Nº Prontuario:
Nº do atendimento
Nome:
CPF:
Nome da Mãe
Documento:
Gostaria de fazer a seguinte tarefa, após digitar os dois primeiros campos, os outros fossem completados, já tenho a view no banco e o sql que retorna esses dados preciso mesmo saber qual função js faria isso, achei algumas mas com tabelas, utilizando pesquisas em tabelas. Precisaria de uma que preenchesse após digitar os dois códigos e dessa uma mensagem caso fossem inválidos.
Espero que tenham entendido minha dúvida, caso precisem de mais informações, como código fonte, disponibilizo sem problemas.
Andei dando uma olhada no ajax live seach, neste caso seria a melhor função ?
Por exemplo, isso aqui:
http://wbruno.com.br/ajax/input-preenche-formulario-ajax/
fiz com apenas um campo, mas é simples adaptar para dois.
Ajudou muito, brigadaçooo, fiz da seguinte forma o js,
{% block javascript %}<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script><script type="text/javascript">$(document).ready(function(){ $("input[name='num-atendimento']").blur(function(){ var prontuario = $("input[name='prontuario']"); var atendimento = $("input[name='atendimento']"); var nome = $("input[name='nome']"); var cpf = $("input[name='cpf']"); var nomeMae = $("input[name='nome-mae']"); $( nome ).val('Carregando...'); $( cpf ).val('Carregando...'); $( nomeMae ).val('Carregando...'); $.getJSON('function.php', { prontuario: $( this ).val(), atendimento: $( this ).val() }, function( json ){ $( nome ).val( json.endereco ); $( cpf ).val( json.telefone ); $( nomeMae ).val( json.telefone ); } ); });});</script>{% endblock %}Passando dois parametros para a function.php, porém... não tenho um arquivo function php o que faz a consulta é uma classe DAO
abaixo:
<?phpnamespace GerenciadorDeDocumentos\DAO;class Documento { private $entityManager = null; public function setEntityManager(\Doctrine\ORM\EntityManager $entityManager) { $this->entityManager = $entityManager; } public function consultaProntAtendimento($prontuario, $atendimento){ $query = $this->entityManager->createQuery('select d from GerenciadorDeDocumentos\Entity\Documento d where d.prontuario = :prontuario and d.atendimento = :atendimento'); $query->setParameter('prontuario', $prontuario); $query->setParameter('atendimento', $atendimento); return $query->getSingleResult(); }} Seguinte, meu sistema é feito com base em OO e MVC, as tarefas de banco são passadas para um controller e o controller passa para as classes DAO ( acho que é isso mesmo , rsrsrs, iniciantes), eu consigo colocar no "$.getJSON('function.php'," uma chamada pro método que fará isso ?no js não.
vc precisa de um controler php q te devolva o jSON.
>
no js não.
vc precisa de um controler php q te devolva o jSON.
Beleza, fiz assim meu php :
public function completarCampos() {
echo "<pre>";
$prontuario = $_GET['prontuario'];
$atendimento = $_GET['atendimento'];
try {
$daoProntuario = new DAOProntuario();
$daoProntuario->setEntityManager ( $this->entityManager );
$prontuario= $daoProntuario->consultaProntAtendimento($prontuario,$atendimento);
json_encode($prontuario);
var_dump($prontuario);
exit; // até aqui funciona beleza não sei como transformar a parte abaixo pra enviar o json pro js de novo rs
$arr = Array();
if( $query->num_rows ){
$arr['nome'] = $dados->endereco;
$arr['telefone'] = $dados->telefone;
}else{
$arr['endereco'] = 'não encontrado';
}
echo json_encode( $arr );
}catch ( Exception $e ) {
var_dump ( $e );
}
}
aí vou ter que tirar o
$arr['nome'] = $dados->endereco;
$arr['telefone'] = $dados->telefone;
e colocar
$arr['nome'] = $prontuario->nome;
$arr['cpf'] = $prontuario->cpf;
$arr['nomeMae'] = $prontuario->nomeMae;json_encode($prontuario);
var_dump($prontuario);
exit; // até aqui funciona beleza não sei como transformar a parte abaixo pra enviar o json pro js de novo rstroque por: echo json_encode($prontuario);
exit; // até aqui funciona beleza não sei como transformar a parte abaixo pra enviar o json pro js de novo rs
entendeu ?
só que há vários problemas de arquitetura ai, um método de uma classe nunca deve ter "echos" dentro dele.
>
entendeu ?
só que há vários problemas de arquitetura ai, um método de uma classe nunca deve ter "echos" dentro dele.
Beleza entendi, coloquei mais para "debugar" rs.
ficou assim
$(document).ready(function(){
$("#num-atendimento").blur(function(){
var prontuario = $("#num-prontuario");
var atendimento = $("#num-atendimento");
var nome = $("input[name='nome']");
var cpf = $("input[name='cpf']");
var nomeMae = $("input[name='nome-mae']");
$( nome ).val('Carregando...');
$( cpf ).val('Carregando...');
$( nomeMae ).val('Carregando...');
$.getJSON('index.php?rota=acao-consulta-prontuario&prontuario=' + $( prontuario ).val() + '&atendimento=' + $( atendimento ).val(),
function( data ){
$( nome ).val('');
$( cpf ).val('');
$( nomeMae ).val('');
if (data ) {
$( nome ).val( data.nomePaciente );
$( cpf ).val( data.cpfPaciente );
$( nomeMae ).val( data.nomeMaePaciente );
}
}
);
});
});
Funcionando lindamente com suas dicas obrigado william, agora a duvida é tratar a Exception caso não retornar valor, mas daí acho que é assunto de outro tópico certo?
Desde já agradeço!
uma forma de fazer isso, é enviar um ajax para o seu php que vai fazer a pesquisa no banco e retornar um json.
tendo o json na resposta do ajax, basta preencher os campos.