Sou novo no forum, alias, este é o primeiro forum que eu entro.
Estou com um "pequeno" problema:
Tenho 3 selects que vão buscar dados do bd, a lógica é a seguinte:
escolho uma unidade esportiva, e ele carrega para mim no outro select todas as atividades esportivas da referida unidade.
Até aí tudo bem, porem, uma atividade esportiva pode ter vários horários diferentes.
O que eu quero fazer...
Abro o select Unidade esportiva:
Flamengo
Fluminense
Cruzeiro
Atlético
Escolho Flamengo.
Vem as modalidades que ele oferece:
Futsal
Volei
Natação
Corrida
Escolho Futsal.
Vem os horários:
07:00 às 08:30
08:45 às 10:15
10:30 às 12:00
Ou seja:
O último select (Horário) tem que receber dados só do Flamengo, só do Futsal e os horários disponíveis.
Segue abaixo BD e o meu código.
PS. Este código foi tirado da internet no site da devmedia criado por Willian, ele da um exemplo com país, estado e cidade e eu estou tentando adaptar para o referido acima.
*** BANCO DE DADOS ***
CREATE TABLE `unidades` (
`id` int(5) NOT NULL,
`unidade` int(5) NOT NULL,
`nome` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Estrutura para tabela `atividades`
--
CREATE TABLE `atividades` (
`id` int(5) NOT NULL,
`unidade` int(5) NOT NULL,
`cod_atividade` int(5) NOT NULL,
`atividade` varchar(150) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Estrutura para tabela `horarios`
--
CREATE TABLE `horarios` (
`id` int(4) NOT NULL,
`unidade` int(5) NOT NULL,
`cod_atividade` int(5) NOT NULL,
`horario` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
*** CONEXAO.PHP
<?php
function Conectar(){
try{
$opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
$con = new PDO("mysql:host=localhost; dbname=esportes;", "esportista", "competidor2019", $opcoes);
return $con;
} catch (Exception $e){
echo 'Erro: '.$e->getMessage();
return null;
}
}
?>
*** INDEX.PHP ***
$(document).ready(function(){
<!-- Carrega as Unidades esportivas -->
$('#btnUnidades').click(function(e){
$('#btnUnidades').hide();
$('#mensagem').html('<span class="mensagem">Aguarde, carregando ...</span>');
$.getJSON('consulta.php?opcao=unidades', function (dados){
if (dados.length > 0){
var option = '<option>Selecione a Unidade Esportiva</option>';
$.each(dados, function(i, obj){
option += '<option value="'+obj.unidade+'">'+obj.nome+'</option>';
})
$('#mensagem').html('<span class="mensagem">Total de Unidades encontradas.: '+dados.length+'</span>');
$('#cmbUnidades').html(option).show();
}else{
Reset();
$('#mensagem').html('<span class="mensagem">Não foram encontradas Unidades!</span>');
}
})
})
<!-- Carrega as Modalidades Esportivas -->
$('#cmbUnidades').change(function(e){
var unidades = $('#cmbUnidades').val();
$('#mensagem').html('<span class="mensagem">Aguarde, carregando ...</span>');
$.getJSON('consulta.php?opcao=atividades&valor='+unidades,
function (dados){
if (dados.length > 0){
var option = '<option>Selecione a atividade esportiva</option>';
$.each(dados, function(i, obj){
option += '<option value="'+obj.unidade+'">'+obj.atividade+'</option>';
})
$('#mensagem').html('<span class="mensagem">Total de atividades encontradas.: '+dados.length+'</span>');
}else{
Reset();
$('#mensagem').html('<span class="mensagem">Não foram encontradas atividades para essa unidade!</span>');
}
$('#cmbAtividades').html(option).show();
})
})
<!-- Carrega os Horarios -->
$('#cmbAtividades').change(function(e){
var atividades = $('#cmbAtividades').val();
$('#mensagem').html('<span class="mensagem">Aguarde, carregando ...</span>');
$.getJSON('consulta.php?opcao=horarios&valor='+atividades,
function (dados){
if (dados.length > 0){
var option = '<option>Selecione a Cidade</option>';
$.each(dados, function(i, obj){
option += '<option>'+obj.horario+'</option>';
})
$('#mensagem').html('<span class="mensagem">Total de Horários encontrados.: '+dados.length+'</span>');
}else{
Reset();
$('#mensagem').html('<span class="mensagem">Não foram encontrados Horários para essa Atividade!</span>');
}
$('#cmbHorarios').html(option).show();
})
})
<!-- Resetar Selects -->
function Reset(){
$('#cmbUnidades').empty().append('<option>Carregar Unidades</option>>');
$('#cmbAtividades').empty().append('<option>Carregar Atividades</option>>');
$('#cmbHorarios').empty().append('<option>Carregar Horários</option>');
}
});
</script>
<body>
<div id="conteudo">
<p><span class="destaque">Populando selects
usando AJAX + JSON + PHP.</span></p>
<hr />
<br/>
<div id="unidades">
<label>Selecione a Unidade:</label>
<select id="cmbUnidades">
<option>Carregar Unidades</option>
</select>
<input type="button" value="Carregar Unidades"
id="btnUnidades" class="botao"/>
</div>
<div id="atividades">
<label>Selecione a Atividade:</label>
<select id="cmbAtividades">
<option>Carregar Atividades</option>
</select>
</div>
<div id="horarios">
<label>Selecione o Horário:</label>
<select id="cmbHorarios">
<option>Carregar Horários</option>
</select>
</div>
<hr />
<p><span class="destaque">Mensagens:
</span></p>
<div id="mensagem">
</div>
</div>
</body>
*** CONSULTA.PHP ***
<?php
require_once('conexao.php');
$opcao = isset($_GET['opcao']) ? $_GET['opcao'] : '';
$valor = isset($_GET['valor']) ? $_GET['valor'] : '';
if (! empty($opcao)){
switch ($opcao)
{
case 'unidades':
{
echo getAllUnidades();
break;
}
case 'atividades':
{
echo getFilterAtividades($valor);
break;
}
case 'horarios':
{
echo getFilterHorarios($valor);
break;
}
}
}
function getAllUnidades(){
$pdo = Conectar();
$sql = 'SELECT unidade, nome FROM unidades';
$stm = $pdo->prepare($sql);
$stm->execute();
sleep(1);
echo json_encode($stm->fetchAll(PDO::FETCH_ASSOC));
$pdo = null;
}
function getFilterAtividades($unidades){
$pdo = Conectar();
$sql = 'SELECT unidade, atividade FROM atividades WHERE unidade = ?';
$stm = $pdo->prepare($sql);
$stm->bindValue(1, $unidades);
$stm->execute();
sleep(1);
echo json_encode($stm->fetchAll(PDO::FETCH_ASSOC));
$pdo = null;
}
function getFilterHorarios($atividades){
$pdo = Conectar();
$sql = 'SELECT horario FROM horarios WHERE cod_atividade = ?';
$stm = $pdo->prepare($sql);
$stm->bindValue(1, $horarios);
$stm->execute();
sleep(1);
echo json_encode($stm->fetchAll(PDO::FETCH_ASSOC));
$pdo = null;
}
?>
Pergunta
Roberto Alexandre Levy
Bom dia pessoal.
Sou novo no forum, alias, este é o primeiro forum que eu entro.
Estou com um "pequeno" problema:
Tenho 3 selects que vão buscar dados do bd, a lógica é a seguinte:
escolho uma unidade esportiva, e ele carrega para mim no outro select todas as atividades esportivas da referida unidade.
Até aí tudo bem, porem, uma atividade esportiva pode ter vários horários diferentes.
O que eu quero fazer...
Abro o select Unidade esportiva:
Flamengo
Fluminense
Cruzeiro
Atlético
Escolho Flamengo.
Vem as modalidades que ele oferece:
Futsal
Volei
Natação
Corrida
Escolho Futsal.
Vem os horários:
07:00 às 08:30
08:45 às 10:15
10:30 às 12:00
Ou seja:
O último select (Horário) tem que receber dados só do Flamengo, só do Futsal e os horários disponíveis.
Segue abaixo BD e o meu código.
PS. Este código foi tirado da internet no site da devmedia criado por Willian, ele da um exemplo com país, estado e cidade e eu estou tentando adaptar para o referido acima.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.