Criei um select dinâmico com 3 select, o primeiro de Unidade, o segundo de Especialidade e o terceiro de Sala, consigo validar o primeiro select para chamar o segundo, consigo validar o segundo para chamar o terceiro, mas o terceiro está validando apenas o segundo Especialidade, deveria obedecer tbm o primeiro select, mas não consigo pegar a variável Unidade para também incluir na busca do terceiro select Sala, alguém pode ajudar por favor, segue o código em PHP e JS
codigo PHP
<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
function obterUnidade() {
include_once('conexao.php');
$query = "SELECT * FROM unidades";
$result = mysqli_query($conexao, $query);
$json = array();
while($row = mysqli_fetch_array($result)) {
$json[] = array(
'codUnidade' => $row['id'],
'nomUnidade' => $row['nome'],
);
}
$jsonstring = json_encode($json);
echo $jsonstring;
}
function obterEspecialidade($codUnidade) {
include_once('conexao.php');
$query = "SELECT * FROM especialidade WHERE id_unidade = $codUnidade";
$result = mysqli_query($conexao, $query);
$json = array();
while($row = mysqli_fetch_array($result)) {
$json[] = array(
'codEspecialidade' => $row['id'],
'nomEspecialidade' => $row['nome'],
);
}
$jsonstring = json_encode($json);
echo $jsonstring;
}
function obterSala($codEspecialidade){
include 'conexao.php';
$query = "SELECT * FROM sala WHERE id_especialidade = $codEspecialidade";
$result = mysqli_query($conexao, $query);
$json = array();
while($row = mysqli_fetch_array($result)) {
$json[] = array(
'codSala' => $row['id'],
'nomSala' => $row['nome'],
);
}
$jsonstring = json_encode($json);
echo $jsonstring;
}
if( isset($_POST['codigoUnidade']) ) {
$codUnidade = $_POST['codigoUnidade'];
obterEspecialidade($codUnidade);
} else if( isset($_POST['codigoEspecialidade']) ) {
$codEspecialidade = $_POST['codigoEspecialidade'];
obterSala($codEspecialidade);
} else {
obterUnidade();
}
?>(postagem excluída pelo(a) autor(a))
3 4/4
JS
$(document).ready(function () {
/* --variaveis para chamar o select por id */
let $unidade = document.getElementById('unidade')
let $especialidade = document.getElementById('especialidade')
let $sala = document.getElementById('sala')
function carregarUnidade() {
$.ajax({
url: 'select.php',
type: 'POST',
success: function(response) {
const unidade = JSON.parse(response);
let template = '<option class="form-control" selected disabled>-- Seleccione --</option>'
unidade.forEach(unidade => {
template += `<option class="form-control" name="unidade" value="${unidade.codUnidade}">${unidade.nomUnidade}</option>`;
})
$unidade.innerHTML = template;
}
})
}
carregarUnidade()
function carregarEspecialidade(sendDados) {
$.ajax({
url: 'select.php',
type: 'POST',
data: sendDados,
success: function(response) {
const resposta = JSON.parse(response);
let template = '<option class="form-control" selected disabled>-- Seleccione --</option>'
resposta.forEach(resposta => {
template += `<option class="form-control" name="especialidade" value="${resposta.codEspecialidade}">${resposta.nomEspecialidade}</option>`;
})
$especialidade.innerHTML = template;
}
})
}
$unidade.addEventListener('change', () => {
const codUnidade = $unidade.value
const sendDados = {
'codigoUnidade': codUnidade
}
carregarEspecialidade(sendDados)
$sala.innerHTML = ''
})
function carregarSala(sendDados) {
$.ajax({
url: 'select.php',
type: 'POST',
data: sendDados,
success: function(response) {
const resposta = JSON.parse(response);
let template = '<option class="form-control" selected disabled>-- Seleccione --</option>'
resposta.forEach(resposta => {
template += `<option class="form-control" name="sala" value="${resposta.codSala}">${resposta.nomSala}</option>`;
})
$sala.innerHTML = template;
}
})
}
$especialidade.addEventListener('change', () => {
const codEspecialidade = $especialidade.value
const sendDados = {
'codigoEspecialidade': codEspecialidade
}
carregarSala(sendDados)
})
})
Uma dica: quando postar no fórum, por favor coloque o código formatado. Basta selecioná-lo e usar o botão </>
do editor:
perfeito, farei, obrigado