Jump to content


Photo

Selects Dinamicos


  • Faça o login para participar
7 replies to this topic

#1 milka

milka

    Novato no fórum

  • Usuários
  • 16 posts
  • Sexo:Não informado

Posted 20/02/2007, 13:56

Olá pessoal,

tenho o seguinte código abaixo e quero tirar as barras e a virgula, mas não sei como faço pois não entendo muito de Ajax e JavaScript..
Quero apenas que mostre as duas informações uma embaixo da outra como um combo normal. O código já esta fazendo com que ao selecionar um projeto seja filtradas apenas tarefas relacionadas a esse projeto..mas como disse não quero barras, quero apenas os nomes retornados no combo..

O que posso modificar para fica do jeito que preciso ?


<HTML>
<HEAD>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language="javascript">

function pesquisar_dados(valor)
 {
  http.open("GET", "consultar_tarefas.php?id=" + valor, true);
   http.onreadystatechange = handleHttpResponse;
   http.send(null);
 }

function handleHttpResponse()
  {
	campo_select = document.forms[0].combo_tarefa_andamento;
	if (http.readyState == 4)
	 {
		campo_select.options.length = 0;
		results = http.responseText.split(",");
		 for(i=0; i < results.length;i++)
		 {
			string = results[i].split("|");
			campo_select.options[i] = new Option(string[0],string[1]);
		 }
	 }
  }

  function getHTTPObject()
  {
   var xmlhttp;
   /*@cc_on  @if (@_jscript_version >= 5)
	try {
		 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		  } catch (e) {
			 try {
			 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			   } catch (e) {
				 xmlhttp = false;
				   }
			   }  @else
			   xmlhttp = false;
			   @end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
	try {
	  xmlhttp = new XMLHttpRequest();
		} catch (e) {
		  xmlhttp = false;
			 }
		 }
	   return xmlhttp;
	   }
	  var http = getHTTPObject();
  </script>

</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" onchange="pesquisar_dados(this.value)">

<option></option>

<?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']?>"><? 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" ></select></TD>


</TR>
.
.
.


consultar_tarefas.php



<?php

include "conectar.php";

$combo_projeto_andamento = addslashes(trim($_GET["id"]));



$dados_combo_tarefa = pg_query($connect, "SELECT * FROM tb_tarefa  WHERE id_projeto = '$combo_projeto_andamento' ORDER BY id_tarefa");

while( $campo_tarefa = pg_fetch_assoc($dados_combo_tarefa))
{

echo $campo_tarefa["nm_tarefa"] . "|" . $campo_tarefa["id_tarefa"] . ",";

 }

?>



Alguem me ajuda !! :(

#2 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 20/02/2007, 16:56

Olá, aparentemente não era pra ter vírgulas e barras pois o handle response está 'eliminando' isso.
Tem como você postar o resultado (tipo um screenshot), pois eu não entendi direito e não tem como eu testar aqui.


<HTML>
<HEAD>
function handleHttpResponse()
  {
	campo_select = document.forms[0].combo_tarefa_andamento;
	if (http.readyState == 4)
	 {
		campo_select.options.length = 0;
		results = http.responseText.split(",");
		 for(i=0; i < results.length;i++)
		 {
			string = results[i].split("|");
			campo_select.options[i] = new Option(string[0],string[1]);
		 }
	 }
  }

Alguem me ajuda !! :(


WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#3 milka

milka

    Novato no fórum

  • Usuários
  • 16 posts
  • Sexo:Não informado

Posted 21/02/2007, 07:47

Tem como você postar o resultado


Segue em anexo o que esta acontecendo na prática...

Espero que consiga me ajudar!

Attached Files



#4 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 21/02/2007, 08:22

Olá,

ainda não entendi o que seriam essas barras cinzas :/

Mas eu sei porque está aparecendo uma opção a mais: porque você está imprimindo uma vŕgula no final do arquivo.
Isso dá pra resolver fazendo isso:
function handleHttpResponse()
  {
	campo_select = document.forms[0].combo_tarefa_andamento;
	if (http.readyState == 4)
	 {
		campo_select.options.length = 0;
	   resposta = http.responseTex;
		resposta = resposta.substr(0,resposta.length)
		results = resposta.split(",");
		 for(i=0; i < results.length;i++)
		 {
			string = results[i].split("|");
			campo_select.options[i] = new Option(string[0],string[1]);
		 }
	 }
  }


WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#5 milka

milka

    Novato no fórum

  • Usuários
  • 16 posts
  • Sexo:Não informado

Posted 21/02/2007, 08:30

Mas eu quero mesmo que apareça quantas tarefas estiverem cadastradas para tal projeto..
Quero que fique uma embaixo da outra como se fossem as opçoes comuns de um select só que ao inves de pre-definidas elas estarao sendo trazidas da tabela tarefa que tem o id_projeto. entendeu ?

Testei o código que voce me mandou, mas ele não retornou nada....tá muito sinistro isso..

#6 matt.cavotta

matt.cavotta

    Ativo

  • Usuários
  • 347 posts
  • Sexo:Masculino
  • Localidade:Campinas
  • Interesses:Desenvolvimento Web &amp; Programação

Posted 21/02/2007, 08:32

Ops, é que eu esqueci um letra. Tenta agora.

Olá,

ainda não entendi o que seriam essas barras cinzas :/

Mas eu sei porque está aparecendo uma opção a mais: porque você está imprimindo uma vŕgula no final do arquivo.
Isso dá pra resolver fazendo isso:

function handleHttpResponse()
  {
	campo_select = document.forms[0].combo_tarefa_andamento;
	if (http.readyState == 4)
	 {
		campo_select.options.length = 0;
	   resposta = http.responseText;
		resposta = resposta.substr(0,resposta.length)
		results = resposta.split(",");
		 for(i=0; i < results.length;i++)
		 {
			string = results[i].split("|");
			campo_select.options[i] = new Option(string[0],string[1]);
		 }
	 }
  }


WebFórum - Equipe de Desenvolvimento - Estagiario

I'm back!
Posted Image Edgy Eft 7.04

#7 milka

milka

    Novato no fórum

  • Usuários
  • 16 posts
  • Sexo:Não informado

Posted 21/02/2007, 08:46

Esta me trazendo da mesma forma que te mostrei anteriormente, será que se a gente modificar o código e tirar essas barras dele elas não saem...voce pode então me explicar o código que talvez eu entendendo possa pensar melhor numa forma de deixar como eu quero...ninguem consegue me ajudar..
Peguei esse código aqui do forum..de um membro chamado balala(acho que é assim...)
Nunca pensei que fosse tão dificil, vejo tantos sites feitos com isso...
É dificil ? talvez seja por que eu não conheço tambem..
Espero que a gente consiga.. :huh:

#8 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 22/02/2007, 10:06

Abre direto a página de consulta em php pra gente ver o que printa, exemplo:

http://localhost/con...efas.php?id=001

Onde o id você coloca um de algum projeto existente pra ver o retorno, acho que pode ser alguma coisa no php e não no js.

E volto a repetir, o AJAX têm suporte a XML, então o retorno poderia ser feito com o mesmo. Muito mais prático do que ficar dando slipt no valor retornado.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq