Ir para o conteúdo
JoaoVM

[Resolvido] Combox Box Dinâmica

Mensagens Recomendadas

JoaoVM

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.

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

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>';
.
.
.
.

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

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

Editado por Labroskas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

Só com essa informação não te consigo ajudar..

Esses erros foram já há muito tempo..esta resolvido certamente ;) mas obrigado na mesma

Já viste neste site?guia-te por lá..foi por ai que segui também...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

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>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

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>						

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas
 <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>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

-- 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

coloca no inicio da página:

error_reporting(E_ALL ^ E_NOTICE);

perguntei o que acontece quando fazes:

echo $_REQUEST['cod_dist'];

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

Fiz assim:

<option value="<?php echo $_REQUEST['cod_dist']; ?>"

Retorna o Valor na combo de --Select--, e outra em branco apenas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

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'];

Editado por JoaoVM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

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.

Editado por Labroskas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoaoVM

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>';
.
.
.
.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Labroskas

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>

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.