Jump to content

Ajuda em Combo Box


Labroskas
 Share

Recommended Posts

Boas, Gostava de carregar duas combo box, mas a segunda só kero que carregue consoante a opção selecionada na primeira, tou farto de testar isto, mas não vou lá de maneira nenhuma. Tenho uma função em fc_funcao.php, onde vai carregar as combos, alterei um pouco a função, para poder obter uma consulta simples, ou uma consulta com o critério escolhido na ComboBox 1.


 <?php
   $conecta=mysql_connect('localhost','root');
   $seleciona_db=mysql_select_db('banco', $conecta) or die ('Falhou conexão à base de dados');
 ?>
 <?php include('fc_funcao.php'); ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Função para gerar ComboBox</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="form1" method="post" action="">
     <select name="select1">
<?php criar_combo("categoria",1,1,"codigo",4); ?>
     </select>
   </form>

<?php echo $_POST[select1]; ?>

   <form name="form2" method="post" action="">
     <select name="select2">
<?php criar_combo("sub_categoria",2,0,"cod_categoria",1); ?>
     </select>
   </form>

</body>
</html>


<?php
 function criar_combo($table,$valor,$w_sn,$campo_w,$cond_w)
{
if ($w_sn != 0)
  {
         $sql =  mysql_query("SELECT * FROM ".$table."");
}
else
  {
         $sql =  mysql_query("SELECT * FROM ".$table." WHERE ".$campo_w." = ".$cond_w."");
}

     while($linha=mysql_fetch_array($sql))
       {
       $nome  = utf8_encode($linha[$valor]);
       $combo = $combo . "<option value=\"$id\">$nome</option>";
       }
     echo $combo;
}

Link to comment
Share on other sites

Viva,

Se percebi bem vais ter de usar javascript nisso para despoletar o submit do form sempre que o valor da select1 for alterado.

<?php
 $conecta=mysql_connect('localhost','root');
 $seleciona_db=mysql_select_db('banco', $conecta) or die ('Falhou conexão à base de dados');
?>
<?php include('fc_funcao.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
<title>Função para gerar ComboBox</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 </head>
 <body>
<form name="form1" method="post" action="">
  <select name="select1" onchange="document.form1.submit()">
	<?php criar_combo("categoria",1,1,"codigo",4); ?>
  </select>

  <select name="select2">
	 <?php
		 // verifica se foi selecionado um valor da combo 'select1'
		 if ( isset($_POST['select1']) AND !empty($_POST['select1']) ) {
			criar_combo("sub_categoria", 2, 0, "cod_categoria", $_POST['select1']);
		 }
	 ?>
  </select>
</form>
 </body>
</html>

Assim sempre que houver uma alteração na caixa de seleção o formulário será enviado.

Se quiseres fazer isto sem submeter o form vais ter de usar jquery.

Atenção!!
Depois de teres o código a funcionar como pretendes, tens de o proteger contra ataques SQL Injection.
Link to comment
Share on other sites

Boas, tentei introduzir o Javascript, mas sem sucesso, ele depois de selecionar o valor da primeira Combo, ele actualiza sempre e volta a meter o valor que tinha no ínicio.

<?php
$conecta=mysql_connect('localhost','root');
$seleciona_db=mysql_select_db('dbgeral', $conecta) or die ('Falhou conexão à base de dados');
?>
<?php include('fc_funcao.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Função para gerar ComboBox</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript" type="text/javascript">
function criterio(select1) {
 document.form1.submit();
 //document.frm.submit();
 }
</script>
</head>
<body>
<!-- onchange="document.form1.submit()"> -->
<form name="form1" method="post" action="">
 <select name="select1" id="select1" onchange="criterio(this.value)">
 <option value="">--Selecionar--</option>
 <?php criar_combo("distritos", 0, 2, 1, "cod_dist",""); ?>
 </select>

 <select name="select2" id="concelhos">
 <option value="">--Selecionar--</option>
<?php
	 // verifica se foi selecionado um valor da combo 'select1'
	 if (isset($_POST['select1']) AND !empty($_POST['select1']) ) {
	 criar_combo("concelhos", 0, 3, 0, "cod_dist", $_POST['select1']);
	 }
 ?>
 </select>
</form>
</body>
</html>
Edited by Labroskas
Link to comment
Share on other sites

$table = 'Nome da Tabela'

$valor = 'Campo a mostrar'

$w_sn = 'Se tem Condição (WHERE) ou não'

$campo_w = 'Campo da Condição'

$cond_w = 'Valor a procurar na Condição'

Espero ter ajudado.

<?php
 function criar_combo($table,$valor,$w_sn,$campo_w,$cond_w)
{
  if ($w_sn != 0)
    {
         $sql =  mysql_query("SELECT * FROM ".$table."");
	}
  else
    {
         $sql =  mysql_query("SELECT * FROM ".$table." WHERE ".$campo_w." = ".$cond_w."");
	}

     while($linha=mysql_fetch_array($sql))
  	    {
    	  //$chave = $linha[$id];
    	  $nome  = utf8_encode($linha[$valor]);
    	  $combo = $combo . "<option value>=$nome</option>";
  	    }
  	  echo $combo;
}
?>
Edited by Labroskas
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.