Labroskas Posted July 25, 2014 Report Share Posted July 25, 2014 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 More sharing options...
MSOlhao Posted July 27, 2014 Report Share Posted July 27, 2014 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 More sharing options...
Labroskas Posted July 28, 2014 Author Report Share Posted July 28, 2014 (edited) 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 July 28, 2014 by Labroskas Link to comment Share on other sites More sharing options...
MSOlhao Posted July 28, 2014 Report Share Posted July 28, 2014 Explica-me os argumentos desta função: function criar_combo($table,$valor,$w_sn,$campo_w,$cond_w) Link to comment Share on other sites More sharing options...
Labroskas Posted July 29, 2014 Author Report Share Posted July 29, 2014 (edited) $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 July 29, 2014 by Labroskas Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now