Foros del Web » Programando para Internet » PHP »

filtrar fecha "año y mes desde Combobox

Estas en el tema de filtrar fecha "año y mes desde Combobox en el foro de PHP en Foros del Web. Hola buenas. Necesito filtrar datos de fecha de una tabla y que me muestre solo lo seleccionado Combobox 1 = Año Combobox 2 = Mes ...
  #1 (permalink)  
Antiguo 20/08/2009, 17:39
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 16 años, 5 meses
Puntos: 1
filtrar fecha "año y mes desde Combobox

Hola buenas.

Necesito filtrar datos de fecha de una tabla y que me muestre solo lo seleccionado

Combobox 1 = Año
Combobox 2 = Mes

Campo a comprobar = Fecha

En la base de datos voy introduciendo datos con fechas

Lo que quiero es pinchar en el combo del Año y me muestre solo los años que tenga en la base de datos osea que si de todas las fechas que he metido solo son de tres años 2005 - 2007 - 2008 en el combo es lo que me tendria que aparecer.

Si en un momento introducco alguna fecha de otro año ese año tendria que verse reflejado tambien en el combo

Por otro lado cuando seleccione un año se activara el combo de meses y me tendra que mostrar solo los meses que tengan relacion con ese añoun Ejemplo

01/01/2005
14/05/2007
23/07/2007
31/12/2009

Años a aparecer en el combo 2005 - 2007 y 2009

Si selecciono el año 2007 los meses que me tiene que mostrar mayo y Julio

y claro esta cuando seleccione Julio me tendra que mostrar el listado relacionado con ese año y ese mes.

Alguna idea de por donde puedo comenzar?

Muchas gracias.
  #2 (permalink)  
Antiguo 20/08/2009, 17:46
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: filtrar fecha "año y mes desde Combobox

Cita:
SELECT * FROM mitabla WHERE YEAR(miFecha)='{$ValorDeMiCombo}';
lo mismo seria para tus meses
  #3 (permalink)  
Antiguo 20/08/2009, 17:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: filtrar fecha "año y mes desde Combobox

Para que YEAR funcione en la base de datos, primero tiene que estar declarada como fecha y segundo debe seguir el formato yyyy-mm-dd. Para que no te muestre lo que quiere, puedes hacerlo de esta forma
Código mysql:
Ver original
  1. SELECT *, YEAR(fecha) as yearOnly FROM tabla GROUP BY yearOnly
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 20/08/2009, 18:17
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: filtrar fecha "año y mes desde Combobox

tengo ya tantos datos en la cabeza que no termino de entender las explicaciones que me habeis dado.

Entiendo el concepto pero no como aplicarlo.

Este es el sencillo codigo que tengo ahora de los combobox

Código PHP:
<form name="form1" method="post" action="">
          <
select name="anio" id="anio" style="width:150px;">
        </
select>
        <
select name="mes" id="mes" style="width:150px;">
        </
select>
      </
form
El filtrado lo tengo que hacer en los listados que me habeis ayudado a dar formato.

Donde tengo que configurar el select?

Saludos.
  #5 (permalink)  
Antiguo 20/08/2009, 18:55
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: filtrar fecha "año y mes desde Combobox

No es mucho pero ya he comenzado a dar pasitos.

Código PHP:
            //seleccionamos las opciones del select principal
            $sql = "SELECT *, YEAR(fecha) as yearOnly FROM mareas GROUP BY yearOnly";
            $res = mysql_query($sql);
            //obtenemos el número de registros
            $num = mysql_num_rows($res);
        ?>
                 
        <select name="anio" id="anio" style='width:160'>
        <option selected value=0>Año.</option>
        <? for($i=0;$i<$num;$i++) { $fecha[$i] = mysql_result($res,$i,0);
        echo 
"<option value='yearOnly[$i]'></option>"; } ?>
        </select>
En el combo veo que si me aparecen cuatro opciones a elegir que son los cuatro años diferentes que que tengo en la BD pero me aparece en blanco.

El campo de la BD es 'fecha' y formato DATE

La primera pregunta, como hago para que aparezcan los años en el combo, que dato es el que tengo mal puesto?

Saludos.
  #6 (permalink)  
Antiguo 20/08/2009, 19:05
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: filtrar fecha "año y mes desde Combobox

Intenta con esto
Código PHP:
      //seleccionamos las opciones del select principal
            $sql = "SELECT *, YEAR(fecha) as yearOnly FROM mareas GROUP BY yearOnly";
            $res = mysql_query($sql);
            //obtenemos el número de registros
            
        ?>
                 
        <select name="anio" id="anio" style='width:160'>
        <option selected value=0>Año.</option>
        
        <?php 
        $i
=1;
        while (
$registros mysql_fetch_object($res))
        {
        echo 
"<option value='".$i."'>".$registros->yearOnly."</option>"
//Tambien podria ser: echo "<option value='".$registros->yearOnly."'>".$registros->yearOnly."</option>"; 
         
$i++;
        } 
?>
       
        </select>
S.E.U.O.
  #7 (permalink)  
Antiguo 20/08/2009, 19:25
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: filtrar fecha "año y mes desde Combobox

Por el momento ya he puesto tambien los meses.

Ahora el siguiente paso es que en un principio el combobox de los meses este desactivado hasta que se seleccione un año

y que solo aparezcan los meses que tenga ese año y no todos los meses.

Tambien me gustaría que aparezcan los nombres de los meses y no el numero.

Osea que no aparezca 02 si no Febrero

Código PHP:
        <select name="anio" id="anio" style='width:160'>
        <option selected value=0>Año.</option>
        <?php 
        $i
=1;
        while (
$registrosa mysql_fetch_object($resa))
        {
        echo 
"<option value='".$registrosa->yearOnly."'>".$registrosa->yearOnly."</option>"
         
$i++;
        } 
?>
        </select> 
        
        <select name="mes" id="mes" style='width:160'> 
        <option selected value=0>Mes.</option>
         <?php 
        $i
=1;
        while (
$registrosm mysql_fetch_object($resm))
        {
        echo 
"<option value='".$registrosm->MonthOnly."'>".$registrosm->MonthOnly."</option>"
         
$i++;
        } 
?>
        </select>
Muchas gracias.
  #8 (permalink)  
Antiguo 20/08/2009, 19:42
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: filtrar fecha "año y mes desde Combobox

Vas tener que abrir otro tema
en principio todo parte de tu consulta SQL para lo que quieres. Fijate en google o en el site de MySql sobre la funcion DATE_FORMAT()

Ej.

SELECT DATE_FORMAT(NOW(),"%M")

P.D. Si quieres complicarte la vida busca tambien funciones de conversion mediante PHP
  #9 (permalink)  
Antiguo 26/08/2009, 01:30
 
Fecha de Ingreso: junio-2008
Mensajes: 287
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: filtrar fecha "año y mes desde Combobox

Hola buenas, aqui sigo con este tema.

Ahora lo que me pasa que cuando selecciono el combo del año no hace nada más y me muestra resultados en pantalla y me activa el segundo combobox

El script que tengo para activar el combo es este

Código PHP:
<script language="javascript" type="text/javascript">
//Activación y desactivación de Botón desde Checkbox
function CambiaEstado(valor){
if (
valor == true){
document.form1.mes.disabled false;
}else{
document.form1.mes.disabled true;
}
}
</script> 
Este es el codigo para los combox
Código PHP:
            //seleccionamos las opciones del select Años
            $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);
            
            //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);
            

        ?>        
        <FORM NAME=form1 ACTION=mareas.php METHOD=POST>
        
        <select name="anio" id="anio" style='width:160' onclick='CambiaEstado(this.checked);'>
        <option selected value=0>Año.</option>
        <?php 
        $i
=1;
        while (
$registrosa mysql_fetch_object($resa))
        {
        echo 
"<option value='".$registrosa->yearOnly."'>".$registrosa->yearOnly."</option>"
         
$i++;
        } 
?>
        </select> 
        
        <select name="mes" id="mes" style='width:160' disabled='true'> 
        <option selected value=0>Mes.</option>
         <?php 
        $i
=1;
        while (
$registrosm mysql_fetch_object($resm))
        {
        echo 
"<option value='".$registrosm->MonthOnly."'>".$registrosm->MonthOnly."</option>"
         
$i++;
        } 
?>
        </select> 
      </form>
Lo que necesitaría que cuando seleccione el primer combo de los años me active el segundo combo de los meses

Alguien me puede decir donde tengo el fallo?

Muchas gracias
  #10 (permalink)  
Antiguo 03/01/2011, 12:01
 
Fecha de Ingreso: octubre-2009
Mensajes: 3
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: filtrar fecha "año y mes desde Combobox

<script language="javascript" type="text/javascript">
//Activación y desactivación de Botón desde Checkbox
function CambiaEstado(valor){
if (valor !=0){
document.form1.mes.disabled = false;
}else{
document.form1.mes.disabled = true;
}
}</script>


----------------------------------------------------------------------------------

<?php
include("rutinas/conexioninfodisfap.php");
//seleccionamos las opciones del select Años
$sqla = "SELECT *, YEAR(fechacorta) as yearOnly FROM NEWS GROUP BY yearOnly";
$resa = mysql_query($sqla);
//obtenemos el número de registros
$numa = mysql_num_rows($resa);

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


?>
<FORM NAME=form1 ACTION=prueba.php METHOD=POST>

<select name="anio" id="anio" style='width:160' onclick='CambiaEstado(this.value);'>
<option selected value=0>Año.</option>
<?php
$i=1;
while ($registrosa = mysql_fetch_object($resa))
{
echo "<option value='".$registrosa->yearOnly."'>".$registrosa->yearOnly."</option>";
$i++;
} ?>
</select>

<select name="mes" id="mes" style='width:160' disabled='true' >
<option selected value=0>Mes.</option>
<?php
$i=1;
while ($registrosm = mysql_fetch_object($resm))
{
echo "<option value='".$registrosm->MonthOnly."'>".$registrosm->MonthOnly."</option>";
$i++;
} ?>
</select>
</form>

---------------------------------------
http://www.infodisfap.com

Informacion para el Personal Discapacitado de las Fuerzas Armadas y Policia Nacional del Perú, que por alguna razon no puedan movilizarse y enterarse de los acontecimientos que suceden día a día, no esta ligada a ninguna asociación, organización ni partido político alguno.

http://www.infodisfap.com
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 13:02.