Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Humm..Poderia me dar um exemplo de código?
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.
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.