El problema es que PHP se ejecuta una vez y al inicio. Hace poco hice una mezcla de PHP con JS para algo parecido, creo que te puede servir.
El código de JS lo saqué de las FAQS de aquí y lo adapté un poco :)
Código PHP:
<?php
if ($_POST['action'] == "buscar") {
#código
}
$fecha['dia'] = date("d");
$fecha['mes'] = date("m");
$fecha['ano'] = date("Y");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script language="JavaScript">
function hab(act) {
if (act == "D") {
document.informe.diadesde.disabled = !document.informe.desde.checked;
document.informe.mesdesde.disabled = !document.informe.desde.checked;
document.informe.anodesde.disabled = !document.informe.desde.checked;
} else {
document.informe.diahasta.disabled = !document.informe.hasta.checked;
document.informe.meshasta.disabled = !document.informe.hasta.checked;
document.informe.anohasta.disabled = !document.informe.hasta.checked;
}
}
function addOpt(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}
function cambia(oCntrl, from) {
var a = 30;
var cuantosdias = 27;
var valoractual = oCntrl.value;
if (from.selectedIndex == 0 || from.selectedIndex == 2 || from.selectedIndex == 4 || from.selectedIndex == 6 || from.selectedIndex == 7 || from.selectedIndex == 9 || from.selectedIndex == 11) {
cuantosdias+=3;
addOpt(oCntrl, 28, "29", "29");
addOpt(oCntrl, 29, "30", "30");
addOpt(oCntrl, 30, "31", "31");
} else {
if (from.selectedIndex == 3 || from.selectedIndex == 5 || from.selectedIndex == 8 || from.selectedIndex == 10) {
cuantosdias+=2;
addOpt(oCntrl, 28, "29", "29");
addOpt(oCntrl, 29, "30", "30");
} else {
if (from == document.informe.mesdesde) {
if (document.informe.anodesde.value / 4 == Math.floor(document.informe.anodesde.value / 4)) {
cuantosdias+=1;
addOpt(oCntrl, 28, "29", "29");
}
} else {
if (document.informe.anohasta.value / 4 == Math.floor(document.informe.anohasta.value / 4)) {
cuantosdias+=1;
addOpt(oCntrl, 28, "29", "29");
}
}
}
}
while(cuantosdias < a) {
oCntrl.options[a]=null;
a -= 1;
}
oCntrl.value = valoractual;
return false;
}
function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}
function valSep(oTxt){
var bOk = false;
var sep1 = oTxt.charAt(2);
var sep2 = oTxt.charAt(5);
bOk = bOk || ((sep1 == "-") && (sep2 == "-"));
bOk = bOk || ((sep1 == "/") && (sep2 == "/"));
return bOk;
}
function finMes(oTxt){
var nMes = parseInt(oTxt.substr(3, 2), 10);
var nAno = parseInt(oTxt.substr(6), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2:
if (Math.floor(nAno/4) == nAno/4) {
nRes = 29; break;
} else {
nRes = 28; break;
}
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
}
function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}
function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}
function valAno(oTxt){
var bOk = true;
var nAno = oTxt.substr(6);
bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}
function valFecha(oTxt, oTxt2){
var bOk = true;
var bOk2 = true;
if (oTxt != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valSep(oTxt));
if (!informe.desde.checked) {
bOk = true;
}
if (!bOk){
alert("Fecha inicial inválida");
} else {
bOk2 = bOk2 && (valAno(oTxt2));
bOk2 = bOk2 && (valMes(oTxt2));
bOk2 = bOk2 && (valDia(oTxt2));
bOk2 = bOk2 && (valSep(oTxt2));
if (!informe.hasta.checked) {
bOk2 = true;
}
if (!bOk2){
alert("Fecha final inválida");
} else {
document.informe.submit();
}
}
}
}
</script>
<title>neonet</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../css/main.css" rel="stylesheet" type="text/css">
</head>
<body topmargin="0" bottommargin="0" rightmargin="0" onLoad="cambia(document.informe.diahasta, document.informe.meshasta);cambia(document.informe.diadesde, document.informe.mesdesde);">
<form name="informe" id="informe" action="informe2.php" method="post">
<tr bgcolor="#E9E9E9">
<td class="txt5" colspan="5"> </td>
</tr>
<tr bgcolor="#E9E9E9">
<td class="txt5"> </td>
<td class="txt5"> </td>
</tr>
<tr bgcolor="#E9E9E9">
<td width="12" class="txt5"> </td>
<td width="201" class="txt5"><select name="diadesde" id="diadesde" class="txtarea" <?php echo $dis_desde; ?>><?php
if ($_POST['action'] == "buscar") {
$selected = $_POST['diadesde'];
} else {
$selected = "01";
}
for($a=1;$a<=31;$a++) {
if ($a < 10) { $a = "0".$a; }
echo "<option value=".$a;
if ($a == $selected) { echo " selected"; unset($selected); }
echo ">".$a."</option>";
}
?>
</select> / <select name="mesdesde" class="txtarea" onChange="cambia(document.informe.diadesde, this)" <?php echo $dis_desde; ?>><?php
if ($_POST['action'] == "buscar") {
$selected = $_POST['mesdesde'];
} else {
$selected = $fecha['mes'];
}
for($a=1;$a<=12;$a++) {
if ($a < 10) { $a = "0".$a; }
echo "<option value=".$a;
if ($a == $selected) { echo " selected"; unset($selected); }
echo">".$a."</option>";
}
?>
</select> / <select name="anodesde" class="txtarea" onChange="cambia(document.informe.diadesde, document.informe.mesdesde)" <?php echo $dis_desde; ?>><?php
if ($_POST['action'] == "buscar") {
$selected = $_POST['anodesde'];
} else {
$selected = $fecha['ano'];
}
for($a=2000;$a<=2020;$a++) {
if ($a < 10) { $a = "0".$a; }
echo "<option value=".$a;
if ($a == $selected) { echo " selected"; unset($selected); }
echo ">".$a."</option>";
}
?>
</select></td><td width="30"></td>
<td width="158" class="txt5"><select name="diahasta" class="txtarea" <?php echo $dis_hasta; ?>><?php
if ($_POST['action'] == "buscar") {
$selected = $_POST['diahasta'];
} else {
$selected = $fecha['dia'];
}
for($a=1;$a<=31;$a++) {
if ($a < 10) { $a = "0".$a; }
echo "<option value=".$a;
if ($a == $selected) { echo " selected"; unset($selected); }
echo ">".$a."</option>";
}
?>
</select> / <select name="meshasta" class="txtarea" onChange="cambia(document.informe.diahasta, this)" <?php echo $dis_hasta; ?>><?php
if ($_POST['action'] == "buscar") {
$selected = $_POST['meshasta'];
} else {
$selected = $fecha['mes'];
}
for($a=1;$a<=12;$a++) {
if ($a < 10) { $a = "0".$a; }
echo "<option value=".$a;
if ($a == $selected) { echo " selected"; unset($selected); }
echo ">".$a."</option>";
}
?>
</select> / <select name="anohasta" class="txtarea" onChange="cambia(document.informe.diahasta, document.informe.meshasta)" <?php echo $dis_hasta; ?>><?php
if ($_POST['action'] == "buscar") {
$selected = $_POST['anohasta'];
} else {
$selected = $fecha['ano'];
}
for($a=2000;$a<=2020;$a++) {
if ($a < 10) { $a = "0".$a; }
echo "<option value=".$a;
if ($a == $selected) { echo " selected"; unset($selected); }
echo ">".$a."</option>";
}
?></select></td>
<td class="txt5" colspan="2"><input type="button" value="Buscar" class="txt5" onClick="valFecha(informe.diadesde.value + '/' + informe.mesdesde.value + '/' + informe.anodesde.value, informe.diahasta.value + '/' + informe.meshasta.value + '/' + informe.anohasta.value)"></td>
</tr>
<input type="hidden" name="action" value="buscar">
<input type="hidden" name="valido" value=0>
</form>
</body>
</html>