Ir para conteúdo
novoAquiNoForum

Como selecionar uma Option quando outra for alterada em PHP

Recommended Posts

Olá,

Tenho uma dúvida.

Tenho um select, que recebe dados vindos do banco Mysql, como abaixo:

<tr>
  <td style="font-size:14px;">Empresa:</td>
  <td>
  <select class="choiceChosen" id="empresa" style="width:220px;">
     <?php					         	
        $result = $conn->query("SELECT id_empresa, nome_empresa FROM empresa");
	while($empresa = mysqli_fetch_object($result)) { ?>
	<option value="<?php echo $empresa->id_empresa?>"><?php echo $empresa->nome_empresa?></option>
      <?php } ?>
  </select>
 <td>
</tr>

<tr>
  <td style="font-size:14px;">Área:</td>
  <td>
  <select class="choiceChosen" id="area" style="width:220px;">
  <option value="0">Todas</option>
     <?php					         	
        $result = $conn->query("SELECT * FROM areas");
	while($arquivo = mysqli_fetch_object($result)) { ?>
	<option value="<?php echo $arquivo->id_area?>"><?php echo $arquivo->nomearea?></option>
     <?php } ?>
  </select>
 </td>
</tr>

Abaixo minha tabela areas:

id_area  id_empresa nomearea

5	 4	    Financeiro
6	 5	    Financeiro
7	 4	    Fiscal
8	 5	    Fiscal

Abaixo minha tabela empresas:

id_empresa  nome_empresa

4	    google /*exemplo*/
5	    Apple /*exemplo*/

Seguinte, o que preciso fazer é o seguinte:

Quando eu alterar a empresa, preciso que área também seja alterada, onde o id_empresa da area for igual ao id_empresa da empresa, como faço isso usando PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não faz, você precisa fazer esta chamada em javascript mesmo.

Crie uma função que leia o select "empresa" quando ele for alterado e use ajax pra atualizar o segundo select. Tente fazer primeiro desta forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, consegui fazer aqui :)

Para quem está com a mesma dificuldade segue o código abaixo:

o html fica assim:

<tr>
  <td style="font-size:14px;">Empresa:</td>
  <td>
  <select id="empresa" style="width:220px;">
     <?php					         	
        $result = $conn->query("SELECT id_empresa, nome_empresa FROM empresa");
	while($empresa = mysqli_fetch_object($result)) { ?>
	<option value="<?php echo $empresa->id_empresa?>"><?php echo $empresa->nome_empresa?></option>
      <?php } ?>
  </select>
 <td>
</tr>

<tr>
  <td style="font-size:14px;">Área:</td>
  <td>
  <select id="area" style="width:220px;">
  
  </select>
 </td>
</tr>

Jquery fica assim:


$('#empresa').change(function(){
           $.ajax({            
            url:"selects.php",            
            type:"get",                
            data: "empresa="+$(this).val(),   
            success: function (result){         
                $("#area").html(result);                 
            }
      })
})

PHP:

<?php
include("conexao.php");
 
$id_empresa = $_GET['empresa'];
 
$result = $conn->query("SELECT * FROM areas WHERE id_empresa = '$id_empresa'");


while($area = mysqli_fetch_object($result)){
    echo "<option value='$area->id_area'>$area->nomearea</option>";
}

?>

Explicando:

A segunda combo área, aguarda o resultado da primeira combo empresa, trazendo somente as áreas pertencentes a empresa selecionada. Na combo empresa, uso o PHP para preenche-la, para a segunda não ficar vazia quando carregar a pagina, chame uma função de consulta com ajax ao carregar o documento. Pode fazer assim:

$(document).ready(function(){
 $.ajax({            
            url:"selects.php",            
            type:"get",                
            data: "empresa="+$("#empresa").val(),   
            success: function (result){         
                $("#area").html(result);                 
            }
       })
})

Assim no carregar a pagina ,a segunda já vem selecionada.

Quando é alterada a option ,o evento é disparado, passando para o PHP o id da option selecionada com o ajax.

O PHP recebe esse id e faz a consulta no banco, trazendo somente as áreas referentes aquela empresa. O retorno da consulta é inserido na combo área.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por martinazzo
      não consigo apagar, então deixei assim... se alguém conseguir por favor
    • Por MateusOFCZ
      Olá, eu criei uma página de publicidade, porém não fluiu como eu queria, então coloquei essa página em uma DIV, alguém poderia me informar se irá funcionar caso eu faça um sistema para ocultar essa DIV depois de 10 segundos?

       
      <!--- Publicidade ------> <div id="publicidadediv"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title><?= $config['hotelName'] ?> - Publicidade</title> <script src="/templates/GalaxyServers/client/js/jquery-latest.js" type="text/javascript"></script> <script src="/templates/GalaxyServers/client/js/jquery-ui.js" type="text/javascript"></script> <script src="/templates/GalaxyServers/client/js/spacehotel2018.js"></script> <script src="/templates/GalaxyServers/client/js/flash_detect_min.js"></script> <script src="/templates/GalaxyServers/client/js/client.js" type="text/javascript"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="icon" type="image/png" href="<?= $config["favicon"];?>"> </head> <body> <body style="background-color:black;"> <center><img src="https://i.imgur.com/kHdzpqq.png" style="width:396px;height:91px;"></center> <center><?php $imagens = array(); $imagens[] = '<a href="https://hobbyhotel.club/hotel?room=255" target="_blank"><img src="https://i.imgur.com/O0gSito.png" style="width:330px;height:250px;"></a>'; $imagens[] = '<a href="https://hobbyhotel.club/hotel?room=255" target="_blank"><img src="https://i.imgur.com/O0gSito.png" style="width:330px;height:250px;"></a>'; $chave = array_rand($imagens); $imagem = $imagens[$chave]; echo $imagem; ?></center> <center><img src="https://i.imgur.com/9FH4A5O.png" style="width:396px;height:91px;"></center> </body> </div> <!--- Publicidade ------> Gostaria de sabem também como faço para ocultar tudo isso após X segundos...
    • Por Francklyn Souza
      Bom, vou direto ao ponto, alguém saberia me dizer como resolver esse problema ou aviso seila
       
      Warning: Cannot modify header information - headers already sent by (output started at /srv/disk8/2953546/www/dominio.com/security/funcao.php:1) in /srv/disk8/2953546/www/dominio.com/security/config.php on line 7
       
      Arquivo.: config.php
      if(isset($_GET['lang'])): $lang = $_GET['lang']; $_SESSION['lang'] = $lang; setcookie('lang', $lang, time() + (3600 * 24 * 30)); elseif(isset($_SESSION['lang'])): $lang = $_SESSION['lang']; elseif(isset($_COOKIE['lang'])): $lang = $_COOKIE['lang']; else: $lang = "en"; endif; switch ($lang) { default: include "dice/language/lang_eng.php"; break; case "pt": include "dice/language/lang_ptbr.php"; break; case "en": include "dice/language/lang_eng.php"; break; }  
    • Por MateusOFCZ
      Olá, estou desenvolvendo um sistema de publicidade para meu site, e quando entra em uma página, vamos chama-la de "Publicidade" ele mostra uma publicidade e depois de 10 segundos ele redireciona (OBS.: Essa página já está funcionando 100%), e temos outra página que vamos chama-la de "Início", bom... Quando você entrar na página "Início" ele irá na verdade, redirecionar o usuário para a página de Publicidade, porém, como faço para a pessoa não poder pular essa publicidade, como se fosse um camuflador de página, ou seja, se o usuário acessar a página ele irá para a página "imasters.com.br/publicidade", porém se ele alterar o link para "imasters.com.br/inicio" ele irá obrigar o usuário a ver a publicidade primeiro para depois leva-lo a página de "Inicio", caso isso seja complexo de fazer, teria alguma forma de esconder o nome da página (a parte do "/inicio" por exemplo), e deixar apenas o link, por exemplo, se eu ir para a página de publicidade irá aparecer apenas o link, neste caso "imasters.com.br", e não "imasters.com.br/publicidade", caso tenha alguma dúvida sobre o meu pedido pode perguntar, não mordo rs.

      Deis de já agradeço!
    • Por Diego Alexandre Dias
      Boa tarde,
       
      Estou tentando incluir uma formatação de moeda (number_format) dentro de um comando While, porém não estou tendo sucesso.
      Por Exemplo:
       
      Criei uma tabela simples que contempla a relação de clientes com seus respectivos valores de creditos adiquiridos
       
      Neste caso no corpo da tabela eu possuo três colunas:
       
      Valor_Credito , Cliente, status
       
      criei uma variável  $venda que recebe o resultado de uma query do meu banco de dados. Este mesmo resultado da query eu atribui uma variavel chamada $total .
      Esta mesma consulta se encarrega de somar o valor total de crédito adiquirido por cliente
       
      Sendo assim, meu WHILE percorre por todo minha tabela de clientes somando os respectivos creditos.
      Como resultado eu consigo retornar todas as informações que eu quero, porém não estou conseguindo fazer com que o valor de crédito saia com a formatação de moeda.
       
       

       
      O comando responsável por me trazer a relação de clientes  juntamente com  os créditos somados.  
               while ($venda = mysqli_fetch_assoc($total)) {                 echo '<tr>';                     echo '<td class="text-left">';                         echo $venda ['valor_credito'];       // Esta é a linha que preciso utilizar o number_format, porém tentei adaptá-lo de diferentes formas, mas não consegui.                     echo '<td>';                         echo $venda['Cliente'];                     echo '</td>';                                                 echo '<td class="text-right">';                         echo $venda['status'];                     echo '</td>';                 echo '</tr>';                        echo '</tbody>'; Agradeço desde já quem puder me ajudar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.