Foros del Web » Programando para Internet » PHP »

Busqueda por Año y mes

Estas en el tema de Busqueda por Año y mes en el foro de PHP en Foros del Web. Hola buenos dias este tema me trae de cabeza ya desde hace un mes He encontrado un código que hace justo lo que necesito pero ...
  #1 (permalink)  
Antiguo 07/09/2009, 03:25
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 1
Busqueda por Año y mes

Hola buenos dias este tema me trae de cabeza ya desde hace un mes

He encontrado un código que hace justo lo que necesito pero no logro adaptarlo

Tengo dos Combobox que dependen de un campo fecha en la base de datos.
lo que necesito es filtrar los datos primero por año y luego por mes según el usuario seleccione el año o el mes.

El código que tengo es el siguiente

Código PHP:
<html>
<html>
<head>
<title>pagina1.php</title>
</head>

<body>
<form method="post" action="pagina2.php">

    <table width="70%" border="0" align="center">
    <?php
// Me conecto a la base de datos
mysql_connect("localhost","user","1234");
mysql_select_db("base");

// Declaro la variable $anioant que es la que me va a indicar si hay que volver a cargar los datos de los meses
$anio 'YEAR(fecha)';
$mes ='Month (anio)';
$anioant=$anio;

print (
"
    <input type=\"hidden\" name=\"anioant\" value=\"$anioant\">

    <tr>
       <td><div align=\"right\"><strong>Año:</strong></div></td>
       <td><select name=\"fecha\" onchange=\"submit();\">
       "
);
//Muestra el combobox de los meses una vez que se haya elegido el año, no antes
if (!isset($anio)){
    print (
"<option selected>Seleccione el año</option>");
    
$anio="0";
}

$sql="select * from mareas";
$res=mysql_query($sql);

while(
$fila=mysql_fetch_array($res)){
print(
"<option value=\"$fila[fecha]\"");
if (
$fila[fecha] == $anio) {
print (
"selected");
}
print(
">$fila[fecha]</option>\n");
}
print(
"</select></td></tr>");

if (
$anio!="0"){
print(
"
<tr>
    <td><div align=\"right\"><strong>Mes:</strong></div></td>
<td><select name=\"prov\">
"
);

$sqlprov="select * from provincias where fecha='$anio' order by 2";
$resprov=mysql_query($sqlprov);

while(
$filaprov=mysql_fetch_array($resprov)){
print(
"<option value=\"$filaprov[id_prov]\">$filaprov[prov]</option>");
}
print(
"
    </select>
    </td>
       </tr>
"
);
}
       
?>

    </table>

</form>

</body>
</html>
Ahora con este código lo que me sale en pantalla en el combo del Año es la fecha completa y yo solo necesito que me muestre el año, además si tengo varias fechas de un mismo año solo me tiene que mostrar una vez el año no todas las veces que aparezca en la base de datos.

Supongo que tengo un lio con las variables y por eso no me sale como necesito que salgo.

Alguien me podria ayudar?

Muchas gracias.
  #2 (permalink)  
Antiguo 07/09/2009, 04:25
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Busqueda por Año y mes

Hola buenos dias nuevamente.

Ya he conseguido hacer mas o menos lo que necesitaba solo me falta un pequeño detalle.

si tengo varias fechas con diferentes meses y diferentes años cuando seleccione un año el combobox solo me tiene que mostrar los meses relacionados con ese año

Osea que si tengo:

Enero 2009
Marzo 2009
Junio 2009
Agosto 2010
Diciembre 2011

En el año 2009 solo me tiene que mostrar Enero, Marzo y Junio
Si selecciono el año 2010 solo me tiene que mostrar Agosto
y lo mismo do 2011

Me pueden decir donde tengo que meter esos filtros?

Código PHP:
<html>
<html>
<head>
<title>Selector de Fechas</title>
</head>

<body>
<form method="post" action="pagina2.php">

    <table width="70%" border="0" align="center">
    <?php
// Me conecto a la base de datos
mysql_connect("localhost","aldats_user","1Barcos1.");
mysql_select_db("aldats_base");

// Declaro la variable $anioant que es la que me va a indicar si hay que volver a cargar los datos de los meses
$anioant=$anio;

print (
"
    <input type=\"hidden\" name=\"fecha\" value=\"$anioant\">

    <tr>
       <td><div align=\"right\"><strong>Año:</strong></div></td>
       <td><select name=\"fecha\" onchange=\"submit();\">
       "
);
//Muestra el combobox de los meses una vez que se haya elegido el año, no antes
if (!isset($fecha)){
    print (
"<option selected>Seleccione el año</option>");
    
$fecha="0";
}

$sqla "SELECT *, YEAR(fecha) as yearOnly FROM mareas GROUP BY yearOnly";
$resa mysql_query($sqla);
//obtenemos el número de registros
$numa mysql_num_rows($resa);


while(
$fila=mysql_fetch_array($resa)){
print(
"<option value=\"$fila[yearOnly]\"");
if (
$fila[yearOnly] == $fecha) {
print (
"selected");
}
print(
">$fila[yearOnly]</option>\n");
}
print(
"</select></td></tr>");

if (
$fecha!="0"){
print(
"
<tr>
    <td><div align=\"right\"><strong>Mes:</strong></div></td>
<td><select name=\"mes\">
"
);

//seleccionamos las opciones del select Meses
$sqlm "SELECT *, Month(fecha) as MonthOnly FROM mareas GROUP BY MonthOnly";
$resm mysql_query($sqlm);
//obtenemos el número de registros
$numm mysql_num_rows($resm);

while(
$filames=mysql_fetch_array($resm)){
print(
"<option value=\"$filames[MonthOnly]\">$filames[MonthOnly]</option>");
}
print(
"
    </select>
    </td>
       </tr>
"
);
}
       
?>

    </table>

</form>

</body>
</html>

Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:44.