page_qq_name.php
Required Jquery library
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
Script
$(document).ready(function(){$('#ano').on('change',function(){$.ajax({type:'POST',url:'lista_arquivos.php',data:{'ano':$('#ano').val()},//Antesdecarregarosregistros,mostraparaousuárioqueestá//sendocarregado.beforeSend:function(xhr){$('#arquivo').attr('disabled','disabled');if($('#ano').val()!=='ano'){$('#arquivo').html('<optionvalue="">Carregando...</option>');
}else{
$('#arquivo').html('<option value="">Arquivo</option>');
}
},
// Após carregar, coloca a lista dentro do select de arquivos.
// Após carregar, coloca a lista dentro do select de arquivos.
success: function(data) {
if ($('#ano').val() !== '') {
// Adiciona o retorno no campo, habilita e da foco
$('#arquivo').html('<option value="">Selecione</option>');
$('#arquivo').append(data);
$('#arquivo').removeAttr('disabled').focus();
}
}
});
});
});
PHP
$hostname="localhost";
$username="USUARIO";
$password="SENHA";
$db = "nome_DB";
$conexao = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
$sqlano = 'SELECT * FROM anos GROUP BY ano ORDER BY ano ASC';
$resano = $conexao->prepare($sqlano);
$resano->execute();
$anos = $resano->fetchAll();
HTML
<select name="ano" id="ano" required>
<option value="ano">Ano</option>
<?php foreach ($anos as $ano) { ?>
<option value="<?php echo $ano['ano'] ?>"><?php echo $ano['ano'] ?></option>
<?php } ?>
</select>
<select name="arquivo" id="arquivo" disabled required>
<option value="">Arquivo</option>
</select>
file_list.php
$hostname="localhost";
$username="USUARIO";
$password="SENHA";
$db = "nome_DB";
$conexao = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
$postAno = $_POST['ano'];
$sql = "SELECT * FROM anos WHERE ano = '$postAno' ORDER BY ano ASC";
$resArquivo = $conexao->prepare($sql);
$resArquivo->execute();
$arquivos = $resArquivo->fetchAll();
?>
<?php foreach ($arquivos as $row) { ?>
<option value="<?php echo $row['arquivo'] ?>"><?php echo $row['arquivo'] ?></option>
<?php } ?>
If you prefer to show the select of the files after selecting the year:
Script
$(document).ready(function() {
$("#arquivo").hide();
$('#ano').on('change', function() {
$.ajax({
type: 'POST',
url: 'lista_arquivos.php',
data: {'ano': $('#ano').val()},
// Antes de carregar os registros, mostra para o usuário que está
// sendo carregado.
beforeSend: function(xhr) {
if ($('#ano').val() !== 'ano') {
$('#arquivo').html('<option value="">Carregando...</option>');
}else{
$("#arquivo").hide();
}
},
// Após carregar, coloca a lista dentro do select de arquivos.
success: function(data) {
if ($('#ano').val() !== 'ano') {
// Adiciona o retorno no campo, habilita e da foco
$('#arquivo').html('<option value="">Selecione</option>');
$('#arquivo').append(data);
$("#arquivo").show()
$( "#arquivo" ).focus();
}
}
});
});
});
The select file
<select name="arquivo" id="arquivo" style="display:none;">
<option value="">Arquivo</option>
</select>