Jump to content


Photo

Como Ligar Duas List Box's


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

#1 mad16v

mad16v

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado
  • Localidade:Portugal - Setubal

Posted 13/12/2004, 08:04

Olá pessoal......

É o meu primeiro tópico aqui. Sou de Portugal e estou-me a iniciar no mundo o PHP.

Já andei a pesquisar no fórum e encontrei muita coisa útil, mas no entanto não encontrei o que precisava para me ajudar.


Tou a realizar um projecto em PHP e queria fazer um página que tivesse:

- 1 List box para as Categorias
- 1 List box para as Sub-Categorias
- 1 Tabela para mostrar os respectivos dados


O objectivo seria carregar a primeira list box com dados vindos de uma tabela em MySQL.
A segunda List box seria carregada com a opção seleccionada na primeira List box.
E a tabela mostrava os dados após a selecção da segunda tabela.

No entanto queria que as list box's mantivessem as opções seleccionadas anteriormente.

Conheçem algum script que me possa ajudar ???

Obrigadão a todos :)

#2 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 13/12/2004, 08:21

O que você tem a fazer são os 2 select, de acordo com a opção escolhida no primeira, a lista do segundo se altera, depois de selecionar o último você envia o formulário passando o valor da subcategoria selecionada. Vamos começar:

<script language="javascript">
var arrayData = new Array();

<?php
$a = 0;
$consulta2 = @mysql_query("SELECT * FROM `tabela_subcategorias` ORDER BY categoria ASC");
while ( $l = @mysql_fetch_array($consulta2) ) {
echo 'arrayData[' . $a ."] = '" . $l['categoria'] . '|' . $l['nome'] . '|' . $l['codigo']. "';" . chr(10);
$a++;
}
?>

function populateData( name ) {

select = window.document.forms[0].subcategoria;
string = "";

count = 0;

select.options.length = count;

for( i = 0; i < arrayData.length; i++ ) {
  string = arrayData[i].split( "|" );
  if( string[0] == name ) {
  select.options[count++] = new Option( string[1], string[2] );
  }
}
}
</script>


Acima é um java script para criar o segundo select. A consulta busca na tabela de subcategorias. E gera um javascript da seguinte maneira:

arrayData[0] = '1|Subnome|1';
arrayData[1] = '1|Subnome|2';
arrayData[2] = '1|Subnome|3';
arrayData[3] = '2|Subnome|4';
arrayData[4] = '2|Subnome|5';


Dessa forma, vamos poder dividi-lo por categoria depois. Agora nosso primeiro select (categorias) fica da seguinte forma:

<select name="categoria" onChange='java script:populateData( this.options[selectedIndex].value )'>
<?php
$consulta = mysql_query("SELECT * FROM `categorias` ORDER BY nome ASC");
while( $row = mysql_fetch_array($consulta) ) {
?>
<option value="<?php echo $row['codigo']; ?>"><?php echo $row['nome']; ?></option>
<?php
}
?>
      </select>


Essa simplesmente gera um select com a lista de campos de acordo com o conteudo da tabela, mas repare que ele tem uma função onChange, ou seja, ao mudar o valor do select ele executa essa função, alterando os dados do segundo select.

Por fim, o segundo select ficará dessa forma:

<select name="subcategoria"></select>


O que irá acontecer com tudo isso? Lembra da forma que montamos o javascript?

arrayData[0] = '1|Subnome|1';

Isso é: 1= Código da categoria, Subnome = nome que vai ser apresentado dentro do select de subcategorias, 1= código da subcategoria. Ao selecionar o primeiro select, ele apresenta somente aqueles que tiverem essa primeira parte (1) igual ao valor do select escolhido. Depois é só enviar o formulário pegando o valor da subcategoria pelo $_POST['subcategoria'].

Deve ter ficado um pouco complicado a primeira vista, qualquer dúvida, só reclamar :D
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#3 Hernando

Hernando

    12 Horas

  • Usuários
  • 129 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:Muié, Dinheiro, Cerveja, Whisky, 51, Internet e carro!!!

Posted 14/12/2004, 12:15

Salve Xplayer muito bom esse script... mas...

não entendi direito o segundo select... pode esclarecer um pouco mais!!!

valeu

[]´s
"Coletar dados é só o primeiro passo em direção a sabedoria,
Mas compartilhar dados é o primeiro passo em direção a comunidade"

#4 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 14/12/2004, 12:31

O segundo select, na verdade é só um "container" onde vai apresentar as opções criadas pelo javascript.

O primeiro filtra eles, e o segundo somente mostra as opções filtradas. Desse segundo e que você utiliza a variavel para fazer as querys ou o que for utilizar com as opções
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#5 Hernando

Hernando

    12 Horas

  • Usuários
  • 129 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:Muié, Dinheiro, Cerveja, Whisky, 51, Internet e carro!!!

Posted 14/12/2004, 14:56

Valeu mais uma vez brody atraves de tua mp consegui fazer funfa direitin... tavo vacilano naum me perdi no javascript naum hauhaua... acabei me perdendo foi no form... mas valeu pela dica... se tu quiser ver como ficou entra no link...

http://200.158.124.180/busca/teste.php

[]´s

só corrigindo o link é

http://teste.linuxbrasil.cjb.net

esqueci que blockiei o acesso atraves do ip e tive que configurar o apache para este endereço mais ta valendo...

Editado! Se quiser adicionar/alterar alguma informação em seu último post basta editá-los e não postar seguidamente!

Edição feita por: fly2k, 14/12/2004, 15:12.

"Coletar dados é só o primeiro passo em direção a sabedoria,
Mas compartilhar dados é o primeiro passo em direção a comunidade"

#6 danilodepolli

danilodepolli

    Doutor

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

Posted 28/12/2004, 16:41

Manow, to tentando fazer isso aqui a tempos e não tinha encontrado esse topico... usei iframe, mas tive um problema, na pagina produtos.php onde faço o cadastro... não vai o nome da categoria e nem da subcategoria, mas enfim.

Usando esse codigo, fiz as alterações para a minha tabela, mas não gerou a 2º listagem.. o ue pode estar errado?

1 codigo:
<script language="javascript">
var arrayData = new Array(); 

<?
include ("conexao.php");
$a = 0;
$consulta2 = @mysql_query("SELECT * FROM subcategoria ORDER BY subcategoria ASC");
while ( $l = @mysql_fetch_array($consulta2) ) {
echo 'arrayData[' . $a ."] = '" . $l['id_cat'] . '|' . $l['subcategoria'] . '|' . $l['id_subcat']. "';" . chr(10);
$a++;
}
?> 

function populateData( name ) { 

select = window.document.forms[0].subcategoria; 
string = ""; 

count = 0; 

select.options.length = count; 

for( i = 0; i < arrayData.length; i++ ) { 
  string = arrayData[i].split( "|" ); 
  if( string[0] == name ) { 
  select.options[count++] = new Option( string[1], string[2] );
  } 
} 
}
</script>

2 codigo: tabela com 2 divisorias pra imprimir as caixas de opções.
<td height="32" align="right" valign="middle" bgcolor="#F7F7F7" class="style4"><div align="left"><select name="categoria" onChange='javascript:populateData( this.options[selectedIndex].value )'>
<?php
$consulta = mysql_query("SELECT * FROM categoria ORDER BY categoria ASC");
while( $row = mysql_fetch_array($consulta) ) {
?>
<option value="<?php echo $row['id_cat']; ?>"><?php echo $row['categoria']; ?></option>
<?php
}
?>
      </select></div></td>
      <td height="32" align="right" valign="middle" bgcolor="#F7F7F7" class="style4"><div align="left"><select name="subcategoria"></select></div></td>

se alguem puder ajudar.Valeu
Danilo Depolli
danilo@camphost.com.br
CAMPHOST - 1º MES GRATIS EM QUALQUER PLANO! HOSPEDAGEM WEB
QUER PATROCINIO FREE? ENTRE EM CONTATO
ICQ: 7695319
MSN: danilodepolli@bol.com.br

#7 Hernando

Hernando

    12 Horas

  • Usuários
  • 129 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:Muié, Dinheiro, Cerveja, Whisky, 51, Internet e carro!!!

Posted 29/12/2004, 08:19

Estou te passando meu script por mp...

[]´s
"Coletar dados é só o primeiro passo em direção a sabedoria,
Mas compartilhar dados é o primeiro passo em direção a comunidade"

#8 bjcarlos

bjcarlos

    Turista

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

Posted 14/03/2006, 15:06

Gente, me descupem, sei que esse topico é de 2004..

Mas a minha unica dúvida é que não esto conseguindo pegar os dados do campo subcategoria..

Aguem pode me der uma LUZ


Henrique




1 user(s) are reading this topic

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

IPB Skin By Virteq