Jump to content
JoaoVM

[Resolvido] Combox Box Dinâmica

Recommended Posts

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.

Edited by JoaoVM

Share this post


Link to post
Share on other 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>';
.
.
.
.

  • Vote 1

Share this post


Link to post
Share on other 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

Edited by Labroskas

Share this post


Link to post
Share on other 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>

Share this post


Link to post
Share on other 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>						

Edited by JoaoVM

Share this post


Link to post
Share on other 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>

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
JoaoVM

pronto..então já deves ter uma percepção que o erro é na primeira combo, o que diz no Notice?

Share this post


Link to post
Share on other sites
Labroskas

Undefined Index: cod_dist... eu já percebi que era aí, pelo numero da linha no erro, mas não consigo ultrapassa-lo.

Share this post


Link to post
Share on other sites
Labroskas

Tentei meter o ISSET nessa linha, mas depois dá erro na mesma, ou fiz mal.

Share this post


Link to post
Share on other sites
JoaoVM

coloca no inicio da página:

error_reporting(E_ALL ^ E_NOTICE);

perguntei o que acontece quando fazes:

echo $_REQUEST['cod_dist'];

Edited by JoaoVM

Share this post


Link to post
Share on other sites
Labroskas

Fiz assim:

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

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

Share this post


Link to post
Share on other 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'];

Edited by JoaoVM

Share this post


Link to post
Share on other 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.

Edited by Labroskas

Share this post


Link to post
Share on other 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>';
.
.
.
.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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>

  • Vote 1

Share this post


Link to post
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

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