Ir para conteúdo
Fórum Script Brasil
  • 0

Filtro Com Combo


milka

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0

Com AJAX seria mais simples, pois atualizaria os dados do select2 sem precisar dar o refresh na página.

Estou tentando montar algo aqui, mas não está dando muito certo, pois estou tentando injetar código HTML dentro do campo select, só que o código que estou usando pra AJAX modifica o value dele.

Se não for incômodo, posso postar os arquivos aqui (em desenvolvimento) para ver se alguém mais consegue dar uma mão nisso.

Link para o comentário
Compartilhar em outros sites

  • 0

Para fazer isso, ao selecionar o select1 o mesmo deverá ser submetido para ser feita a busca e a partir dos resultados ser montado o select2...

Agora... para submeter você terá um refresh da página... a menos que use AJAX...

Poxa, eu não sei fazer isso !!

Sou iniciante no PHP. Consegui apenas trazer as informações da tabela para cada um, mas não consigo relaciona-los e fazer esse filtro..Não tenho muita idéia.. :(

Os meus dois combos estão assim..

<TR>

<TD align="right" valign="bottom" ><font face = "verdana" size="2"><b>PROJETO:</b></font></TD>

<TD valign="bottom"><select name="combo_projeto_andamento" lenght="50" >

<?php

$dados= pg_query($connect, "SELECT nm_projeto FROM tb_projeto ORDER BY id_projeto");

while($campo = pg_fetch_array($dados))

{

?>

<option value="<? echo $campo['id_projeto']?>"><? echo $campo['nm_projeto']?></option>

<? } ?>

</select>

</TD>

</TR>

<TR>

<TD align=right" valign="bottom" ><font face = "verdana" size="2"><b>TAREFA:</b></font></TD>

<TD valign="bottom"><select name="combo_tarefa_andamento" lenght="50" >

<?php

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=p.id_projeto ORDER BY id_tarefa");

while($campo = pg_fetch_array($dados))

{

?>

<option value="<? echo $campo['id_tarefa]?>"><? echo $campo['nm_tarefa']?></option>

<? } ?>

</select>

</TD>

</TR>

Tentei fazer um select mais elaborado, mas não deu em nada !! Acho que não tem nada haver...

Quanto a AJAX nunca trabalhei com ele, mas caso seja preciso não vejo obstáculos em ter que aprender tambem..

Link para o comentário
Compartilhar em outros sites

  • 0

(Att Moderação:

Será que isso está certo mesmo? )

Bom, acredito que irá resolver o seu problema, não testei ainda, portanto, podemos tentar resolver possíveis problemas juntos (ele funciona perfeitamente na outra aplicação que tenho aqui).

Primeiramente, no topo da página que você tem esses combos, coloque a seguinte linha:

<script src="ajax.js" language="javascript" type="text/javascript"></script>

Isso irá chamar as funções do AJAX.

Agora, você precisará do arquivo ajax.js, já que ele foi chamado.

Crie um arquivo com este nome e introduza o seguinte conteúdo:

function ajaxInit() {

var req;

try {

req = new ActiveXObject("Microsoft.XMLHTTP");

}

catch(e) {

try {

req = new ActiveXObject("Msxml2.XMLHTTP");

}

catch(ex) {

try {

req = new XMLHttpRequest();

}

catch(exc) {

alert("Esse browser não tem recursos para uso do Ajax");

req = null;

}

}

}

return req;

}

function Preenche(DADOS) {

ajax = ajaxInit();

if(ajax) {

ajax.open("GET", "ajax.php?Preenche=" + DADOS, true);

ajax.onreadystatechange = function() {

var dinamico = document.getElementById("combo_tarefa_andamento");

dinamico.innerHTML="<option value=''>Carregando...</option>";

if(ajax.readyState == 4) {

if(ajax.status == 200) {

var texto=ajax.responseText;

dinamico.innerHTML=texto;

}

else {

alert(ajax.statusText);

}

}

}

ajax.send(null);

}

}

O arquivo ajax.js busca o conteúdo e joga em seu campo combo_tarefa_andamento .

Se reparar bem, esse arquivo enviará as informações para um outro arquivo, ajax.php.

Esse também não tem segredo, é só a montagem do seu outro campo!

<?php

$Preenche = $_GET["Preenche"];

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=p.id_projeto ORDER BY id_tarefa");

while($campo = pg_fetch_array($dados))

{

?>

<option value=<? echo $campo['id_tarefa]?>"><? echo $campo['nm_tarefa']?></option>

<? } ?>

E agora, por último, a sua tabela com o primeiro campo.

<TR>

<TD align="right" valign="bottom" ><font face = "verdana" size="2"><b>PROJETO:</b></font></TD>

<TD valign="bottom"><select name="combo_projeto_andamento" lenght="50" >

<?php

$dados= pg_query($connect, "SELECT nm_projeto FROM tb_projeto ORDER BY id_projeto");

while($campo = pg_fetch_array($dados))

{

?>

<option value="<? echo $campo['id_projeto]?>" onClick=Preenche("<? echo $campo['id_projeto']?>")><? echo $campo['nm_projeto']?></option>

<? } ?>

</select>

</TD>

</TR>

<TR>

<TD align="right" valign="bottom" ><font face = "verdana" size="2"><b>TAREFA:</b></font></TD>

<TD valign="bottom"><select name="combo_tarefa_andamento" lenght="50" id="combo_tarefa_andamento">

</select>

</TD>

</TR>

Na verdade, você terá apenas que modificar o WHERE da linha:

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=p.id_projeto ORDER BY id_tarefa");

Para a variável criada pelo primeiro campo.

Editado por Lvcifer!
Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade, você terá apenas que modificar o WHERE da linha:

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=p.id_projeto ORDER BY id_tarefa");

Para a variável criada pelo primeiro campo.

Não entendi essa parte...

Mas a principio não deu nenhum erro, apenas não esta retornando nenhuma tarefa quando eu seleciono um projeto...

Meu código ficou assim:

andamento.php

<?

//Inicia a sessão

session_start();

include "conectar.php";

$login_colaborador = $_SESSION['login'];

?>

<script src=ajax.js" language="javascript" type="text/javascript"></script>

<HTML>

<HEAD>

<TITLE>ANDAMENTO DAS ATIVIDADES</TITLE>

</HEAD>

<BODY>

<table width="55%" align="center" border="0" height="210" >

<form method="POST" action="acao_andamento.php">

<TR>

<TD align="right" valign="bottom" ><font face = "verdana" size="2"><b>PROJETO:</b></font></TD>

<TD valign="bottom"><select name="combo_projeto_andamento" lenght="50" >

<?php

$dados= pg_query($connect, "SELECT nm_projeto, id_projeto FROM tb_projeto ORDER BY id_projeto");

while($campo = pg_fetch_array($dados))

{

?>

<option value="<? echo $campo['id_projeto]?>" onClick=Preenche("<? echo $campo['id_projeto']?>")><? echo $campo['nm_projeto']?></option>

<? } ?>

</select>

</TD>

</TR>

<TR>

<TD align=right" valign="bottom" ><font face = "verdana" size="2"><b>TAREFA:</b></font></TD>

<TD valign="bottom"><select name="combo_tarefa_andamento" lenght="50" id="combo_tarefa_andamento">

</select>

</TD>

</TR>

<TD align="right" valign="bottom" ><font face = "verdana" size="2"><b>COLABORADOR:</b></font></TD>

<TD valign="bottom"><select name="combo_colaborador_andamento" lenght="50" disabled="">

<?php

$dados= pg_query($connect, "SELECT nm_colaborador FROM tb_colaborador WHERE UPPER(login)= UPPER('$login_colaborador') ORDER BY id_colaborador");

while($campo = pg_fetch_array($dados))

{

?>

<option value="<?echo $campo['nm_colaborador]?>"><? echo $campo['nm_colaborador']?></option>

<? } ?>

</select>

</TD>

</TR>

<TR>

<TD align=right" valign="bottom"><font face = "verdana" size="2"><b>DATA:</b></TD>

<TD valign="bottom"><input type = "text" name="data_andamento" size="22" length="20" ></font></TD>

</TR>

<TR>

<TD align="right" valign="bottom"><font face = "verdana" size="2"><b>HORA INÍCIO:</b></TD>

<TD valign="bottom"><input type = "text" name="hora_inicio_andamento" size="22" length="20" ></font></TD>

</TR>

<TR>

<TD align="right" valign="bottom"><font face = "verdana" size="2"><b>HORA FIM:</b></TD>

<TD valign="bottom"><input type = "text" name="hora_fim_andamento" size="22" length="20" ></font></TD>

</TR>

<TR>

<TD align="right" valign="middle"><font face = "verdana" size="2"><b>COMENTÁRIO:</b></TD>

<TD><textarea cols="50" rows="" name="" wrap=""></textarea></TD>

</TR>

</table>

</form>

</BODY>

</HTML>

ajax.php

<?php

$Preenche = $_POST["Preenche];

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=p.id_projeto ORDER BY id_tarefa");

while($campo = pg_fetch_array($dados))

{

?>

<option value="<? echo $campo['id_tarefa']?>"><? echo $campo['nm_tarefa']?></option>

<? } ?>

valeu por estar me ajudando..

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui, o código ficaria assim:

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=$Preenche ORDER BY id_tarefa");

Assim ele selecionará somente as tarefas que pertencerem projeto, que foi o resultado do primeiro campo.

(Este seria no ajax.php)

Editado por Lvcifer!
Link para o comentário
Compartilhar em outros sites

  • 0

Aqui, o código ficaria assim:

$dados= pg_query($connect, "SELECT t.nm_tarefa, t.id_tarefa, t.id_projeto, p.id_projeto FROM tb_tarefa t, tb_projeto p WHERE t.id_projeto=$Preenche ORDER BY id_tarefa");

Assim ele selecionará somente as tarefas que pertencerem projeto, que foi o resultado do primeiro campo.

(Este seria no ajax.php)

Esta tudo correto, mas ainda não sei por que não aparece os dados das tarefas relacionadas com o projeto escolhido...O combo fica branco e nada ocorre quando seleciono o projeto...

A unica coisa que mudei foi de GET para POST, pois estou usando esse...tem algum sentido !?

Link para o comentário
Compartilhar em outros sites

  • 0

<TR>

<TD align="right" valign="bottom" ><font face = "verdana" size="2"><b>TAREFA:</b></font></TD>

<TD valign="bottom"><select name="combo_tarefa_andamento" lenght="50" id="combo_tarefa_andamento">

</select>

</TD>

</TR>

Eu acho que nessa parte deveria trazer alguma coisa, assim como no combo do projeto..

Nossa !! não sei mais... :blink:

Link para o comentário
Compartilhar em outros sites

  • 0

Estranho não funcionar, olhando os scripts aqui, está tudo certinho!

Não consigo achar o erro.

Bom, esta é a forma com AJAX, para não precisar dar o refresh na página ao clicar nos projetos (campo1).

Existe uma outra maneira também, que você clica no projeto, ele abre um outra página (ou até a mesma, com mais um campo) e permite que seja selecionada a tarefa do projeto.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...