[Resolvido] Processamento AJAX, ordem de execução

Pessoal,

Num form tenho 2 campos select: serie_id e aluno_id

No campo serie_id, marquei a opção de recarregar outro select, no caso o campo aluno_id.
Até ai, perfeito.

Acontece que para carregar o select do campo aluno_id, dependo de um campo da tabela series (chamado idade_aluno)
Então pensei em criar um evento ajax, para fazer o lookup da tabela series, carregar uma variavel global e utiliza-la no lookup do campo aluno_id.
A idéia inicial era boa, mas a recarga do campo ocorre antes da execução do evento ajax. Que aparentemente são a mesma coisa. hehehe

Alguém sabe como mudar essa ordem, ou tem alguma idéia de como solucionar esse problema?

[]s
Jorge

Só vejo uma solução:

Fazer com Jquery, ‘na mão’, no evento ajax.

Ou seja, recarregar o select aluno_id via Jquery.

Pois é Wennys.
Boa solução. Mas tem um grande problema: Não sei fazer isso. hehehehehe

Se puder me dar uma luz, tenho vontade de aprender. :slight_smile:

Amigos,

Não interferindo na resposta do Wennys, mas jorge teria como disponibilizar o select que desejaria atualizar.
Não entendi muito bem, o lookup é tipo assim:

//lookup campo {aluno_id}
SELECT 
 aluno_id, nome
FROM tabela_aluno
WHERE serie_id = '{seride_id} AND idade_aluno = '{seride_idade_aluno}'

O campo serie_id tem um ajax para alterar o select do campo {aluno_id}, mas esse campo tambem depende de um mesmo campo do formulário,
no caso o {idade_aluno} da tabela série?

Jorge, acho que a solução que o Almeida quer propor seja menos dolorosa…rs

Tentar fazer tudo no lookup do select aluno_id, ou seja, fazendo um JOIN pra carregar os alunos utilizando algum campo da tabela series.

Se der pra fazer esse select, resolve o problema.

Almeida,

É mais ou menos o seguinte (resumindo os campos):
Tabela Séries:
serie_id
descricao
idade_minima
idade_maxima

Tabela Alunos:
aluno_id
nome
idade

No formulário:
Campo {serie}: uso “lookup de edição” para popular
SELECT serie_id, descricao FROM esc_serie WHERE curso_id = {curso_id} ORDER BY descricao

Campo {aluno}: uso “lookup de edição” para popular
SELECT aluno_id, nome FROM vw_alunos WHERE (prefeitura_id = [v_codPrefeitura]) ORDER BY nome

Nesse select do campo {aluno}, teria que colocar algo como:
SELECT aluno_id, nome FROM vw_alunos
WHERE (prefeitura_id = [v_codPrefeitura]) and (idade between idade_minima and idade_maxima)
ORDER BY nome

Tentando resolver, testei com:

  • criei um evento ajax_onChange do {serie} com:
    [v_idade_minima] = 20;
    [v_idade_maxima] = 25;
  • ajustei o select do campo {aluno} para:
    SELECT aluno_id, nome FROM vw_alunos
    WHERE (prefeitura_id = [v_codPrefeitura]) and (idade between [v_idade_minima] and [v_idade_maxima])
    ORDER BY nome
  • coloquei um “refresh” do select {aluno} no campo {serie}

Mas não dá certo.

Essa é a história.

Acho que compreendi mais ou menos.

Essa [idade_minima] e [idade_maxima] tu faria um select no evento AJAX buscando-o à corresponde a série selecionada, tipo:

Código Evento AJAX {serie}

$sql = select idade_maxima, idade_minima from tabela_serie where serie_id = " . {serie_id};
sc_lookup(rs, $sql);

[idade_minima] = {rs[0][1]};
[idade_maxima] = {rs[0][0]};

Ou as idades não são as que contém na série?

Se for assim mesmo, tente esse lookup no campo {aluno}

SELECT aluno_id, nome 
FROM vw_alunos 
WHERE (prefeitura_id = [v_codPrefeitura])  and (
   idade between (select b.idade_minima from series b where b.serie_id = '{serie_id}')  and 
         (select c.idade_maxima from series c where c.serie_id = '{serie_id}')
   )
ORDER BY nome

Grande Almeida!

Se compreendendo mais ou menos resolveu o problema, imagina se compreendesse tudo. hehhehehe

Funcionou.
Obrigado!

Wennys,

Quando eu crescer, eu quero ser como vocês.

Obrigado e um abração.

Quando vierem para o RS avisem, de repente vamos tomar um chimarrão juntos. :slight_smile:

Jorge

Fico feliz por ter dado certo!

Avisarei sim, e vou querer provar essa comida de passarinho também… rsrsrs

Abraço.