Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dexter Morgan

Select MES e ANO de datas no banco de dados

Recommended Posts

Bom dia, seguinte estou tentando fazer um <select> do mes e ano das datas que está no banco de dados:

<?php

include "../connection.php";

echo "<select class=\"layout-select\" id=\"mes\" name=\"mes\">";
echo "<option>$report_month</option>";
$sql = "SELECT MONTH (data) as data FROM acessos";
$resultado = mysql_query($sql) or die ("");
while($linha = mysql_fetch_array($resultado)){
$mes = $linha["data"];
echo "<option value=\"$mes\">$mes</option>";
}
echo "</select>";

?>

<?php

include "../connection.php";

echo "<select class=\"layout-select\" id=\"ano\" name=\"ano\">";
echo "<option>$report_year</option>";
$sql = "SELECT YEAR (data) as data FROM acessos";
$resultado = mysql_query($sql) or die ("");
while($linha = mysql_fetch_array($resultado)){
$ano = $linha["data"];
echo "<option value=\"$ano\">$ano</option>";
}
echo "</select>";

?>

blz ai dessa forma tem dois selects, um que extrair apenas e o mes e outro apenas o ano, só que nao quero que repita nem o mes nem o ano, e depois de selecionar os dois, automaticamente iria pegar os dados por GET e exibir os dias do mes e ano escolihos ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize Distinct:

SELECT DISTINCT YEAR(data) as data FROM acessos

Compartilhar este post


Link para o post
Compartilhar em outros sites

JavaScript através do evento onchange. Caso for jQuery, pode ser pelo change.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gabriel o evento onchange que você indicou ta funcionando, só tem um porem, tentei fazer um bloqueio, se a pessoa selecionar primeiro o ano de vez o mes:

<?php

include "../connection.php";

echo "<form id=\"form\" name=\"form\" action=\"report_select.php\" method=\"post\" enctype=\"multipart/form-data\" onsubmit=\"return validForm(); return false;\">";

echo "<table class=\"layout-big\" width=\"800\">";
echo "<tr>";
echo "<td width=\"15%\">$report_month</td>";
echo "<td width=\"30%\">";
echo "<select class=\"layout-select\" id=\"mes\" name=\"mes\">";
echo "<option>$button_select</option>";
$sql = "SELECT DISTINCT MONTH (data) as data FROM acessos";
$resultado = mysql_query($sql) or die ("");
while($linha = mysql_fetch_array($resultado)){
$mes = $linha["data"];
$EscreveMes = array("1" => "Janeiro", "2" => "Fevereiro", "3" => "Março", "4" => "Abril", "5" => "Maio", "6" => "Junho", "7" => "Julho", "8" => "Agosto", "9" => "Novembro", "10" => "Setembro", "11" => "Outubro", "12" => "Dezembro");
echo "<option value=\"$mes\">".$EscreveMes["$mes"]."</option>";
}
echo "</select>";
echo "</td>";

?>

<?php

include "../connection.php";

echo "<td width=\"15%\">$report_year</td>";
echo "<td width=\"30%\">";
echo "<select class=\"layout-select\" id=\"ano\" name=\"ano\" onChange=\"submit()\">";
echo "<option>$button_select</option>";
$sql = "SELECT DISTINCT YEAR (data) as data FROM acessos";
$resultado = mysql_query($sql) or die ("");
while($linha = mysql_fetch_array($resultado)){
$ano = $linha["data"];
echo "<option value=\"$ano\">$ano</option>";
}
echo "</select>";
echo "</td>";
echo "</tr>";
echo "</table>";

echo "</form>";

?>

arquivo js

function validForm(){
if(document.form.mes.selectedIndex==0){
alert("Por favor, escolha um mes.")
document.form.mes.focus()
return false;
}
else
return true;
}

só que ele nao para, tem algum modo de bloquear isso? 1º tem que escolher o mes, depois o ano ... se nao vai da erro ao passar os valores

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bloqueie o elemento que você quer que seja alterado somente após o primeiro:

<select id="ano" name="ano" onchange="selecionarAno();" >
    /** options **/
</select>

<select id="mes" name="mes" onchange="selecionarMes();" disable>
    /** options **/
</select>

 

No método "selecionarAno", você desbloqueia o select do mes:

document.getElementById('mes').disable = false;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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