milka Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 Olá,Eu tenho dois combos(selects) e no primeiro ele me lista todos os projetos que eu tenho. No segundo eu quero que venha apenas as tarefas referentes aquele projeto selecionado no primeiro..Como faço !?[]s :unsure: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 milka Postado Fevereiro 15, 2007 Autor Denunciar Share Postado Fevereiro 15, 2007 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.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 (editado) (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 Fevereiro 15, 2007 por Lvcifer! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 milka Postado Fevereiro 15, 2007 Autor Denunciar Share Postado Fevereiro 15, 2007 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ãosession_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.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 (editado) 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 Fevereiro 15, 2007 por Lvcifer! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 milka Postado Fevereiro 15, 2007 Autor Denunciar Share Postado Fevereiro 15, 2007 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 !? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 Se for lá no ajax.js, tem sim, pois ele envia os dados para o ajax.php por método GET.A não ser que o JS seja modificado para criar os campos do form e enviá-los por POST, isso eu não sei como faria. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 milka Postado Fevereiro 15, 2007 Autor Denunciar Share Postado Fevereiro 15, 2007 <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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 milka Postado Fevereiro 15, 2007 Autor Denunciar Share Postado Fevereiro 15, 2007 :( Essa é a forma mais simples !? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MLeandroJr! Postado Fevereiro 15, 2007 Denunciar Share Postado Fevereiro 15, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
milka
Olá,
Eu tenho dois combos(selects) e no primeiro ele me lista todos os projetos que eu tenho. No segundo eu quero que venha apenas as tarefas referentes aquele projeto selecionado no primeiro..
Como faço !?
[]s :unsure:
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
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.