JoaoVM Posted August 2, 2013 at 12:54 PM Report #520678 Posted August 2, 2013 at 12:54 PM (edited) Boa tarde, Estou a fazer um sistema de combo box dinâmicas, o objetivo é com os dados da base de dados selecionar uma linha de produção e quando seleciono essa linha aparecer os funcionários que fazem parte dessa linha. Segue a Minha Base de dados e Código que tenho. Tabela Funcionários http://prntscr.com/1iyi2p Tabela Linhas http://prntscr.com/1iyhsn <script language="javascript" type="text/javascript"> function showFlexibilidade(add_linha) { document.inserir_flex.submit(); } </script> <?php echo "<form id='inserir_flex' name='inserir_flex' method='POST' action='gestao_flexibilidade_teste.php' align='left'>"; echo "<fieldset>"; echo "<legend align='left'>Alterar Flexibilidade</legend>"; //SELECIONAR LINHA PRODUÇAO/////////////////////////////////// ?> <select name="add_linha" id="add_linha" onchange="showFlexibilidade(this.value);"> <?php $sql_add_linha="SELECT * FROM linha"; $resultado_add_linha = mysql_query($sql_add_linha); ?> <option onclick='return false'>Selecione Linha de Produção</option> <?php while($linhas = mysql_fetch_assoc($resultado_add_linha)) { ?> <option value="<?php echo $linhas['id_linha'] ?>"<?php if($linhas['id_linha']==$_REQUEST['linha']) { echo "Selected"; } ?> > <?php echo $linhas['id_linha'] . " - " . $linhas['nome'].""?> </option> <?php } echo '</select>'; //SELECIONAR OPERADOR//////////////////////////////// ?> <select name="add_oper" id="add_oper"> <?php $sql_add_oper="SELECT * FROM funcionarios WHERE linha=".$_REQUEST[$linha['id_linha']].";"; $resultado_add_oper = mysql_query($sql_add_oper); ?> <option onclick='return false'>Selecione Operador</option> <?php while($oper=mysql_fetch_assoc($resultado_add_oper)) { ?> <option value="<?php echo $oper['ref_id']?>" id="add_oper" name="add_oper"> <?php echo $oper['ref_id'] . " - " . $oper['pnome'] . " " . $oper['unome']."" ?> </option> <?php } echo '</select>'; . . . . tenho este código e fui-me seguindo por um exemplo deste site: http://www.c-sharpcorner.com/UploadFile/satyapriyanayak/display-records-from-one-combobox-to-another-in-php/ Por um motivo que desconheço não está a funcionar, a combo respetiva dos funcionários não me aparecem e quando aparecem não distingue por linha de produção, qualquer que selecione aparecem os mesmos funcionarios.se alguém me souber responder o porque. Edited August 2, 2013 at 12:55 PM by JoaoVM
Solution JoaoVM Posted August 2, 2013 at 01:15 PM Author Solution Report #520680 Posted August 2, 2013 at 01:15 PM Pessoal já resolvi o problema, fica aqui para quem tiver o mesmo problema que eu tive e possa ser útil. <script language="javascript" type="text/javascript"> function showFlexibilidade(add_linha) { document.inserir_flex.submit(); } </script> <?php . . . echo "<form id='inserir_flex' name='inserir_flex' method='POST' action='gestao_flexibilidade_teste.php' align='left'>"; echo "<fieldset>"; echo "<legend align='left'>Alterar Flexibilidade</legend>"; //SELECIONAR LINHA PRODUÇAO ////////////////////// ?> <select name="add_linha" id="add_linha" onchange="showFlexibilidade(this.value);"> <?php $sql_add_linha="SELECT * FROM linha"; $resultado_add_linha = mysql_query($sql_add_linha); ?> <option onclick='return false'>Selecione Linha de Produção</option> <?php while($linhas = mysql_fetch_assoc($resultado_add_linha)) { ?> //ALTERADA A VARIAVEL $_REQUEST PARA add_linha; <option value="<?php echo $linhas['id_linha'] ?>"<?php if($linhas['id_linha']==$_REQUEST['add_linha']) { echo "selected"; } ?> > <?php echo $linhas['id_linha'] . " - " . $linhas['nome'].""?> </option> <?php } echo '</select>'; //SELECIONAR OPERADOR /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ?> <select name="add_oper" id="add_oper"> <?php //ALTERADA A VARIAVEL NA CLAUSULA WHERE PARA $linha; $sql_add_oper="SELECT * FROM funcionarios WHERE linha='$linha';"; $resultado_add_oper = mysql_query($sql_add_oper); ?> <option onclick='return false'>Selecione Operador</option> <?php while($oper=mysql_fetch_assoc($resultado_add_oper)) { ?> <option value="<?php echo $oper['ref_id']?>" id="add_oper" name="add_oper"> <?php echo $oper['ref_id'] . " - " . $oper['pnome'] . " " . $oper['unome']."" ?> </option> <?php } echo '</select>'; . . . . 1 Report
Labroskas Posted July 25, 2014 at 04:17 PM Report #563375 Posted July 25, 2014 at 04:17 PM (edited) Boas, não consegui k a variavel $linha chegasse ao segundo select com valor de criterio, será que me podes ajudar?? PS: tens alguns erros de sintaxe no código, por ex: $sql_add_oper="SELECT * FROM funcionarios WHERE linha='$linha';"; Cumps Edited July 25, 2014 at 04:18 PM by Labroskas
JoaoVM Posted July 25, 2014 at 04:30 PM Author Report #563376 Posted July 25, 2014 at 04:30 PM Só com essa informação não te consigo ajudar.. Esses erros foram já há muito tempo..esta resolvido certamente 😉 mas obrigado na mesma tenho este código e fui-me seguindo por um exemplo deste site: http://www.c-sharpcorner.com/UploadFile/satyapriyanayak/display-records-from-one-combobox-to-another-in-php/ Já viste neste site?guia-te por lá..foi por ai que segui também...
Labroskas Posted July 28, 2014 at 11:32 AM Report #563550 Posted July 28, 2014 at 11:32 AM Com este código funcionou quase perfeitamente, mas quando inicia, ele leva a variavel a Nulo e dá sempre um Notice a dizer que não existe a variavel "cod_dist", neste caso. Javascipt: <script language="javascript" type="text/javascript"> function criterio(cod_dist) { document.frm_ins_codcp.submit(); } </script> Código PHP: <form name="frm_ins_codcp" method="post" action="" enctype="multipart/form-data"> <table width="550" border="1" style="border:none;"> <tr> <td>Distrito</td> <td> <select name="cod_dist" id="cod_dist" onchange="criterio(this.value)"> <option value="">--Selecionar--</option> <?php $sql1=mysql_query("SELECT * FROM distritos"); while($sql_r=mysql_fetch_assoc($sql1)) { ?> <option value="<?php echo $sql_r["cod_dist"]; ?>" <?php if($sql_r["cod_dist"]==$_REQUEST["cod_dist"]) { echo "Selected"; } ?>><?php echo utf8_encode($sql_r["desig_dist"]); ?></option> <?php } ?> </select> </td> </tr> <tr> <td>Concelho</td> <td id="td_company"> <select name="concelhos" id="concelhos"> <option value="">--Selecionar--</option> <?php $sql=mysql_query("SELECT * FROM concelhos WHERE cod_dist ='".$_REQUEST[cod_dist]."'"); while($sql_res=mysql_fetch_assoc($sql)) { ?> <option value="<?php echo $sql_res["cod_conc"]; ?>"><?php echo utf8_encode($sql_res["desig_conc"]); ?></option> <?php } ?> </select> </td> </tr> </table> </form>
JoaoVM Posted July 28, 2014 at 02:44 PM Author Report #563565 Posted July 28, 2014 at 02:44 PM (edited) o que sai se fizeres um echo a variavel $_REQUEST[cod_dist]? tens o teu código um pouco confuso, coloca em PHP onde diz CODE=php. penso que é o null é porque na variável $_REQUEST[cod_dist] falta plicas $_REQUEST['cod_dist']. $sql=mysql_query("SELECT * FROM concelhos WHERE cod_dist ='".$_REQUEST['cod_dist']."'"); <option value="<?php echo $sql_r['cod_dist']; ?>" <?php if($sql_r['cod_dist']==$_REQUEST['cod_dist']) { echo "Selected"; } ?>><?php echo utf8_encode($sql_r['desig_dist']); ?></option> <option value="<?php echo $sql_res['cod_conc']; ?>"><?php echo utf8_encode($sql_res['desig_conc']); ?></option> Edited July 28, 2014 at 02:55 PM by JoaoVM
Labroskas Posted July 29, 2014 at 01:07 PM Report #563633 Posted July 29, 2014 at 01:07 PM <form action="" method="post" name="frm" id="frm"> <table width="500" border="0"> <tr> <td>Category</td> <td> <select name="cod_dist" id="cod_dist" onchange="criterio(this.value);"> <option value="">--Select--</option> <?php $sql1=mysql_query("SELECT * from distritos"); while($sql_r=mysql_fetch_assoc($sql1)) { ?> <option value="<?php echo $sql_r['cod_dist']; ?>" <?php if($sql_r['cod_dist']==$_REQUEST['cod_dist']) { echo "Selected"; } ?>><?php echo utf8_encode($sql_r['desig_dist']); ?></option> <?php } ?> </select> </td> </tr> <tr> <td>Company</td> <td id="td_company"> <select name="concelhos" id="concelhos"> <option value="">--Select--</option> <?php $sql=mysql_query("SELECT * from concelhos WHERE cod_dist ='".$_REQUEST['cod_dist']."'"); while($sql_res=mysql_fetch_assoc($sql)) { ?> <option value="<?php echo $sql_res['cod_conc']; ?>"><?php echo utf8_encode($sql_res['desig_conc']); ?></option> <?php } ?> </select> </td> </tr> </table> </form>
JoaoVM Posted July 29, 2014 at 01:09 PM Author Report #563636 Posted July 29, 2014 at 01:09 PM Conseguiste?
Labroskas Posted July 29, 2014 at 01:18 PM Report #563637 Posted July 29, 2014 at 01:18 PM -- Estrutura da tabela `concelhos` CREATE TABLE IF NOT EXISTS `concelhos` ( `num_aut` int(11) NOT NULL AUTO_INCREMENT, `cod_dist` varchar(5) NOT NULL, `cod_conc` varchar(5) NOT NULL, `desig_conc` varchar(120) NOT NULL, PRIMARY KEY (`num_aut`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; -- Extraindo dados da tabela `concelhos` INSERT INTO `concelhos` (`num_aut`, `cod_dist`, `cod_conc`, `desig_conc`) VALUES (1, '02', '01', 'Teste'); -- Estrutura da tabela `distritos` CREATE TABLE IF NOT EXISTS `distritos` ( `num_aut` int(11) NOT NULL AUTO_INCREMENT, `cod_dist` varchar(2) NOT NULL, `desig_dist` varchar(100) NOT NULL, PRIMARY KEY (`num_aut`), UNIQUE KEY `cod_dist` (`cod_dist`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ; -- Extraindo dados da tabela `distritos` INSERT INTO `distritos` (`num_aut`, `cod_dist`, `desig_dist`) VALUES (1, '01', 'Aveiro'), (2, '02', 'Beja'), (3, '03', 'Braga'), (4, '04', 'Bragança'), (6, '06', 'Coimbra'); Não, fiz como disseste, mas dá sempre erro À primeira vez quando se entra no programa ele cria uma combo enorme com o Erro(Notice), depois se eu selecionar um valor qualquer ele redimensiona a combo e não mais dá erro, por isso deve ser um valor que passa em branco, mas não consegui chegar lá. Falta a função Javascript, mas tá mais acima.
JoaoVM Posted July 29, 2014 at 01:19 PM Author Report #563638 Posted July 29, 2014 at 01:19 PM pronto..então já deves ter uma percepção que o erro é na primeira combo, o que diz no Notice?
Labroskas Posted July 29, 2014 at 01:21 PM Report #563640 Posted July 29, 2014 at 01:21 PM Undefined Index: cod_dist... eu já percebi que era aí, pelo numero da linha no erro, mas não consigo ultrapassa-lo.
JoaoVM Posted July 29, 2014 at 01:22 PM Author Report #563641 Posted July 29, 2014 at 01:22 PM o que sai quando fazes o echo da variável $_REQUEST['cod_dist']?
Labroskas Posted July 29, 2014 at 01:23 PM Report #563642 Posted July 29, 2014 at 01:23 PM Tentei meter o ISSET nessa linha, mas depois dá erro na mesma, ou fiz mal.
JoaoVM Posted July 29, 2014 at 01:24 PM Author Report #563643 Posted July 29, 2014 at 01:24 PM (edited) coloca no inicio da página: error_reporting(E_ALL ^ E_NOTICE); perguntei o que acontece quando fazes: echo $_REQUEST['cod_dist']; Edited July 29, 2014 at 01:25 PM by JoaoVM
Labroskas Posted July 29, 2014 at 01:25 PM Report #563644 Posted July 29, 2014 at 01:25 PM Fiz assim: <option value="<?php echo $_REQUEST['cod_dist']; ?>" Retorna o Valor na combo de --Select--, e outra em branco apenas
JoaoVM Posted July 29, 2014 at 01:27 PM Author Report #563646 Posted July 29, 2014 at 01:27 PM (edited) coloca no inicio da página: error_reporting(E_ALL ^ E_NOTICE); coloca isto num local onde vejas que aparece alguma coisa... echo $_REQUEST['cod_dist']; Na segunda combo não tenho a certeza mas penso que não deves colocar assim a clausula where com esse $_REQUEST['cod_dist']; Edited July 29, 2014 at 01:29 PM by JoaoVM
Labroskas Posted July 29, 2014 at 01:29 PM Report #563648 Posted July 29, 2014 at 01:29 PM (edited) Com o error_reporting já não aparece e fica correcto. Eu já tentei por o Echo em vários lados, mas nunca aparece nada, não entendo bem pq. Edited July 29, 2014 at 01:33 PM by Labroskas
JoaoVM Posted July 29, 2014 at 01:33 PM Author Report #563649 Posted July 29, 2014 at 01:33 PM então que queres que te diga mais? se não aparece é obvio que o resultado vai ser nulo, tens que perceber como receber o valor dessa variável...opa senão tenta fazer de novo esse bloco de código, vê pelo site e pelo código que marquei como resolvido, não podes estar a espera que te de a resposta, tem que vir de ti também. http://www.c-sharpcorner.com/UploadFile/satyapriyanayak/display-records-from-one-combobox-to-another-in-php/ Pessoal já resolvi o problema, fica aqui para quem tiver o mesmo problema que eu tive e possa ser útil. <script language="javascript" type="text/javascript"> function showFlexibilidade(add_linha) { document.inserir_flex.submit(); } </script> <?php . . . echo "<form id='inserir_flex' name='inserir_flex' method='POST' action='gestao_flexibilidade_teste.php' align='left'>"; echo "<fieldset>"; echo "<legend align='left'>Alterar Flexibilidade</legend>"; //SELECIONAR LINHA PRODUÇAO ////////////////////// ?> <select name="add_linha" id="add_linha" onchange="showFlexibilidade(this.value);"> <?php $sql_add_linha="SELECT * FROM linha"; $resultado_add_linha = mysql_query($sql_add_linha); ?> <option onclick='return false'>Selecione Linha de Produção</option> <?php while($linhas = mysql_fetch_assoc($resultado_add_linha)) { ?> //ALTERADA A VARIAVEL $_REQUEST PARA add_linha; <option value="<?php echo $linhas['id_linha'] ?>"<?php if($linhas['id_linha']==$_REQUEST['add_linha']) { echo "selected"; } ?> > <?php echo $linhas['id_linha'] . " - " . $linhas['nome'].""?> </option> <?php } echo '</select>'; //SELECIONAR OPERADOR /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ?> <select name="add_oper" id="add_oper"> <?php //ALTERADA A VARIAVEL NA CLAUSULA WHERE PARA $linha; $sql_add_oper="SELECT * FROM funcionarios WHERE linha='$linha';"; $resultado_add_oper = mysql_query($sql_add_oper); ?> <option onclick='return false'>Selecione Operador</option> <?php while($oper=mysql_fetch_assoc($resultado_add_oper)) { ?> <option value="<?php echo $oper['ref_id']?>" id="add_oper" name="add_oper"> <?php echo $oper['ref_id'] . " - " . $oper['pnome'] . " " . $oper['unome']."" ?> </option> <?php } echo '</select>'; . . . .
Labroskas Posted July 29, 2014 at 01:38 PM Report #563650 Posted July 29, 2014 at 01:38 PM Sim, tens razão, aliás, eu parti desse código, e depois a variavel $linha da segunda combo nunca trazia valores, daí ter alterado para Request e funcionou. PS:Já deves ter reparado que sou iniciante com I grande.lool
Labroskas Posted July 29, 2014 at 02:41 PM Report #563655 Posted July 29, 2014 at 02:41 PM Boas, para quem precisar, quando a combo for a NULL, quando se carrega a pagina por ex, é só meter o código em baixo na option value 😉 Obrigado pela ajuda Joao VM. <option value="<?php echo $sql_r['cod_dist']; ?>" <?php if(isset($_REQUEST['cod_dist'])) { if($sql_r['cod_dist']==$_REQUEST['cod_dist']) { echo "Selected"; } } else { echo "Nulo"; } ?>><?php echo utf8_encode($sql_r['desig_dist']); ?> </option> 1 Report
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