Foros del Web » Programando para Internet » PHP »

Buscar Registros por Fechas

Estas en el tema de Buscar Registros por Fechas en el foro de PHP en Foros del Web. Buenas, Resulta y acontece que estoy haciendo un Sistema de Control de Docentes y en Uno de los Reportes, Necesito Buscar por Fechas los Docentes ...
  #1 (permalink)  
Antiguo 13/09/2011, 07:52
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
De acuerdo Buscar Registros por Fechas

Buenas, Resulta y acontece que estoy haciendo un Sistema de Control de Docentes y en Uno de los Reportes, Necesito Buscar por Fechas los Docentes que están de reposo, o están de permiso, o están enfermos etc. Entonces Yo encontré que la sentencia SQL para buscar registros con fechas es esta:
Cita:
SELECT * FROM tutabla WHERE tufecha BETWEEN 'dd/mm/aa' AND 'dd/mm/aa';
Entonces siguiendo ese Patron y aunque soy Novato en php hice lo siguiente:
Cita:
$sql=mysql_query("Select * from reposos where inicio_repo BETWEEN '1900-01-01' and '2011-01-01'");
Resulta que no me trajo nada concreto solo una fecha de un registro, cuando deberían ser varios pero los demás campos no me los trajo como Cedula, Nombre, Etc.

Yo quiero buscar en esta manera: Desde --,--,--, Hasta --,--,--,

Ahora en la Pagina de php como tal, tengo este codigo para buscar por fecha que no estoy seguro como ponerlo:

Cita:
<input type="radio" name="criterio" value="fecha" />&nbsp;Fecha:&nbsp;&nbsp;&nbsp;&nbsp;
<?echo calendario(dia,mes,anio,'0');?><input type="radio" name="criterio" value="fecha" />&nbsp;Hasta:&nbsp;&nbsp;&nbsp;&nbsp;
<?echo calendario(dia,mes,anio,'0');?>
La duda aqui es que No se si son 2 input o 1, pero como buscare una fecha desde, hasta estoy confuso.

Asi que necesito su ayuda =)
  #2 (permalink)  
Antiguo 13/09/2011, 08:11
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

Cita:
Iniciado por NewbPHP Ver Mensaje
Buenas, Resulta y acontece que estoy haciendo un Sistema de Control de Docentes y en Uno de los Reportes, Necesito Buscar por Fechas los Docentes que están de reposo, o están de permiso, o están enfermos etc. Entonces Yo encontré que la sentencia SQL para buscar registros con fechas es esta:


Entonces siguiendo ese Patron y aunque soy Novato en php hice lo siguiente:


Resulta que no me trajo nada concreto solo una fecha de un registro, cuando deberían ser varios pero los demás campos no me los trajo como Cedula, Nombre, Etc.

Yo quiero buscar en esta manera: Desde --,--,--, Hasta --,--,--,

Ahora en la Pagina de php como tal, tengo este codigo para buscar por fecha que no estoy seguro como ponerlo:


La duda aqui es que No se si son 2 input o 1, pero como buscare una fecha desde, hasta estoy confuso.

Asi que necesito su ayuda =)
Yo quiero buscar en esta manera: Desde --,--,--, Hasta --,--,--,


si quieres logar eso obviamente deberas crear 2 input uno con fechaini y otra fechafin

en el codigo capturas las fechas en variables y las pones en el sql que vas a ejecutar...

teniendo en cuenta el formato ed fecha recuerda que el mysql usa fechas AAAA-MM-DD. asi que cuando captures las fecha el resultado final tiene que ser similar.

entonces una vez que hagas todo eso, prueba y comentas si obtienes error..
  #3 (permalink)  
Antiguo 13/09/2011, 08:33
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

Quieres decir algo como esto:
$sql=mysql_query("Select * from reposos where inicio_repo BETWEEN '[$_POST]' and '[$_POST]'");?

No se si entendi Bien Yo tengo Dos Input pero a la Hora de seleccionar el Criterio Por fecha lo tengo asi:

Cita:
if($_POST[criterio]=="fecha")
{
$sql=mysql_query("Select * from reposos where inicio_repo BETWEEN '1900-01-01' and '2011-01-01'");

}
Pero en la Pagina lo tengo asi:


Entonces como Puedes ver Tengo Fecha un Radio Button Tengo Otro Radio Button Hasta hay tengo dudas xq al seleccionar Fecha solo elejir las fechas que buscara el registro no? entonces no serian 2 input sino 1.
  #4 (permalink)  
Antiguo 13/09/2011, 08:42
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

Si bueno yo te recomiendo que en vez de poner eso, busques un calendario... osea pongas 2 Input uno que diga fecha inicial, y otro fecha final, y en cada uno de ellos pongas un calendario.

cuanto te toque hacer la consulta seria algo:

Código SQL:
Ver original
  1. $sql=mysql_query("Select * from reposos where inicio_repo BETWEEN '".$_POST['fechainicial']."' AND '".$_POST['fechafinal']."'  ");

porque creo que lo haces mas facil si manejas un calendario, claro luego tienes q cambiar la fecha de DD/MM/AAAAA a como la usa el mysql AAAA-MM-DD
  #5 (permalink)  
Antiguo 13/09/2011, 08:54
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

Creo que estoy entendiendo pero esas Variables del Metodo $_POST tienes que ir en un campo en la base de datos? o solo son variables del Input?..

Claro que lo que tengo alli es un Calendario pero modificado a mi estilo :D

Si te fijas en mi Primer Input es asi:

Cita:
<input type="radio" name="criterio" value="fecha"/>&nbsp;Fecha:&nbsp;&nbsp;&nbsp;&nbsp;<?echo calendario(dia,mes,anio,'0');?>

Si te fijas en mi Segundo Input es asi:

<input type="radio" name="criterio" value="fecha"/>&nbsp;Hasta:&nbsp;&nbsp;&nbsp;&nbsp;<?echo calendario(dia,mes,anio,'0');?>


Yo muestro con php el Calendario!


Ahora Comparto mi Calendario contigo y Con quien le sirva:

Cita:
function calendario($dia,$mes,$anio,$fecha)
{
$val_dia=substr($fecha,8,2);
$val_mes=substr($fecha,5,2);
$val_anio=substr($fecha,0,4);

if($val_dia<10)
{
$val_dia=substr($val_dia,1,1);
}

echo "Día:
<select name=\"$dia\" class=\"c1\">\n";

$i=1;
while($i<=31)
{
if($i==$val_dia)
{
echo "<option value=\"$i\" selected>$i</option>";
}
else
{
echo "<option value=\"$i\">$i</option>";
}
$i++;
}

echo "</select>
Mes:
<select name=\"$mes\" class=\"c1\">
<option value=\"01\""; if($val_mes=="01"){echo "selected";} echo ">Enero</option>
<option value=\"02\""; if($val_mes=="02"){echo "selected";} echo ">Febrero</option>
<option value=\"03\""; if($val_mes=="03"){echo "selected";} echo ">Marzo</option>
<option value=\"04\""; if($val_mes=="04"){echo "selected";} echo ">Abril</option>
<option value=\"05\""; if($val_mes=="05"){echo "selected";} echo ">Mayo</option>
<option value=\"06\""; if($val_mes=="06"){echo "selected";} echo ">Junio</option>
<option value=\"07\""; if($val_mes=="07"){echo "selected";} echo ">Julio</option>
<option value=\"08\""; if($val_mes=="08"){echo "selected";} echo ">Agosto</option>
<option value=\"09\""; if($val_mes=="09"){echo "selected";} echo ">Septiembre</option>
<option value=\"10\""; if($val_mes=="10"){echo "selected";} echo ">Octubre</option>
<option value=\"11\""; if($val_mes=="11"){echo "selected";} echo ">Noviembre</option>
<option value=\"12\""; if($val_mes=="12"){echo "selected";} echo ">Diciembre</option>
</select>
Año:
<select name=\"$anio\" class=\"c1\">\n";

$i=date("Y");
while($i>=1900)
{
if($i==$val_anio)
{
echo "<option value=\"$i\" selected>$i</option>";
}
else
{
echo "<option value=\"$i\">$i</option>";
}
$i--;
}
echo "
</select>";
}
Para Mostrarlo lo LLamo asi: <?echo calendario(dia,mes,anio,'0');?>


Ahora Ya que sabes que tengo Mi calendario Repito:

Creo que estoy entendiendo pero esas Variables del Metodo $_POST tienes que ir en un campo en la base de datos? o solo son variables del Input?..

Porque mi Tabla reposos Tiene los siguientes campos:
id cedula_docente inicio_repo identifica_repo tiempo unidades
1 19754362 1986-06-22 Santil es Loco 19 Dias

Inicio_repo es la que me tiene la fecha..!
  #6 (permalink)  
Antiguo 13/09/2011, 08:59
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

recorda q variable POST son variables q se recogen del input, creo q no trabajas bien con eso de los formularios...

lo que te quise dar a enderter esq yo cuando es fechas uso input y uso funciones para hacer calendario, pero usando tu metodo lo q tienes q hacer es capturar esto: <?echo calendario(dia,mes,anio,'0');?>

en una variable, claro tienen que ser 2 variables una para la fecha de inicio y otra para la fecha fin... me entendes?
  #7 (permalink)  
Antiguo 13/09/2011, 09:13
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

Mi calendario es una Función que se llama Fecha, incluida en la libreria include("librerias/fecha.php");

y <?echo calendario(dia,mes,anio,'0');?>Lo Captura Fecha entonces deberia ir asi:
Cita:
$sql=mysql_query("Select * from reposos where inicio_repo BETWEEN '$_POST[fecha]' and '$_POST[fecha]'");
Probare haber pero el Problema que a la hora de Seleccionar Fecha Solo me esta tomando un Input como hago para Seleccionar FECHA y me capture los dos Input que estoy seleccionando en la pagina.. asi como esta en la Imagen alla Arriba.

Se en formularios no soy bueno apenas empiezo en php!

P.D Agradezco tu ayuda y paciencia por lo bruto que soy =)

Última edición por NewbPHP; 13/09/2011 a las 09:16 Razón: P.D
  #8 (permalink)  
Antiguo 13/09/2011, 09:27
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

Deberias de enviarme el codigo ed tu pagina de ese formulario para ver bien como capturas la fecha porq yo veo alli 2 input (radio) y si haces una funcion deberias de hacerla 2 veces capturando cada una en una variable diferente... te parece???
  #9 (permalink)  
Antiguo 13/09/2011, 09:35
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

Código PHP:
<?php
session_start
();
if(!isset(
$_SESSION[usuario]))
{
  
?>
    <script type="text/javascript">
      alert('Acceso no permitido');
      top.location.href='index.php';
    </script>
  <?
}

include(
"librerias/conexion.php");
include(
"librerias/fecha.php");

$conexion=conectar();

if(isset(
$_POST[consultar]))
{
  if(
$_POST[criterio]=="cedula")
  {
    
$sql=mysql_query("SELECT registro.codigo,registro.cedula,registro.nombre_apellido,registro.descripcion_cargo,
registro.f_ingreso,reposos.inicio_repo,reposos.identifica_repo,reposos.tiempo,reposos.unidades FROM
registro INNER JOIN reposos ON registro.cedula = reposos.cedula_docente WHERE
registro.cedula='$_POST[valor]' AND reposos.cedula_docente='$_POST[valor]'"
) or die (mysql_error());
  }
  if(
$_POST[criterio]=="nombre")
  {

$sql=mysql_query("SELECT registro.codigo,registro.cedula,registro.nombre_apellido,registro.descripcion_cargo,registro.f_ingreso,registro.correo,reposos.inicio_repo,reposos.identifica_repo,
reposos.tiempo,reposos.unidades,reposos.cedula_docente FROM registro INNER JOIN reposos ON registro.cedula = reposos.cedula_docente WHERE registro.nombre_apellido LIKE '%$_POST[valor]%'"
) or die (mysql_error());
  }

if(
$_POST[criterio]=="fecha")
{
  
$sql=mysql_query("Select * from reposos where inicio_repo BETWEEN '$_POST[fecha]' and '$_POST[fecha]'");

}

}
else
{
  
$sql=mysql_query("SELECT registro.codigo,registro.cedula,registro.nombre_apellido,registro.descripcion_cargo,
registro.f_ingreso,reposos.inicio_repo,reposos.identifica_repo,reposos.tiempo,reposos.unidades FROM registro
INNER JOIN reposos ON registro.cedula = reposos.cedula_docente WHERE registro.cedula = reposos.cedula_docente"
) or die (mysql_error());
}


$filas=mysql_numrows($sql);
?>
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style>
    .texto:focus
    {
      background-color :  #FBE893;
    }
  </style>

<style type="text/css">
table.tableizer-table {border: 1px solid #BDBDBD; font-family: Georgia, serif; font-size: 12px;} .tableizer-table td {padding: 4px; margin: 3px; border: 1px solid #BDBDBD;}
</style>

</head>
<body>

<table width="100%" valign="top" class="tableizer-table" border="0" cellspacing="4">
 <form name="formulario" action="#" method="post">
  <tbody style="font-size: 12px;">
    <tr>
      <td colspan="8" align="center" bgcolor="#DF7401" height="30"><strong>CONSULTAR REGISTROS</strong></td>
    </tr>
    <tr>
      <td colspan="8" bgcolor="#E6E6E6">
    Filtrar por: <input type="radio" name="criterio" value="cedula" onclick="document.formulario.valor.focus();" />&nbsp;Cédula
     <input type="radio" name="criterio" value="nombre" onclick="document.formulario.valor.focus();" />&nbsp;Nombre y Apellido
    &nbsp;&nbsp;&nbsp;<input type="text" name="valor" size="20" maxlength="20" class="texto" />
    &nbsp;&nbsp;<button type="submit" name="consultar"><img src="imagenes/lupita.png" width="17" height="17" /></button>
    <?
    
if(isset($_POST[consultar]))
    {
      
?>
        <button type="button" onclick="location.href='reportereposos.php'"><img src="imagenes/refresh.png" width="16" height="16" /></button>
      <?
    
}
    
?>
    <br /><br />
    <input type="radio" name="criterio" value="fecha" />&nbsp;Fecha:&nbsp;&nbsp;&nbsp;&nbsp;
    <?echo calendario(dia,mes,anio,'0');?><input type="radio" name="criterio" value="fecha" />&nbsp;Hasta:&nbsp;&nbsp;&nbsp;&nbsp;
    <?echo calendario(dia,mes,anio,'0');?>
      </td>
    </tr>
    <tr align="center" bgcolor="#DF7401">
      <td><strong>Cedula</strong></td>
      <td><strong>Nombre y Apellido</strong></td>
      <td><strong>Descripcion del Cargo</strong></td>
      <td><strong>Fecha de Ingreso</strong></td>
      <td><strong>Inicio del Reposo</strong></td>
      <td><strong>Duracion del Reposo</strong></td>
      <td><strong>Identificacion del Reposo</strong></td>
      <td><strong>Acción</strong></td>
    </tr>

<?
  $i
=0;
  while(
$i<$filas)
  {
    if(
$i == 0)
    {
    
$color="bgcolor=\"#A9F5D0\"";
    }
    else
    {
    
$color="bgcolor=\"#F3E2A9\"";
    }
   echo 
"
    <tr $color>
      <td align=\"right\" width=\"80\">"
.mysql_result($sql$icedula)."</td>
      <td>"
.mysql_result($sql$inombre_apellido)."</td>
      <td>"
.mysql_result($sql$idescripcion_cargo)."</td>
      <td align=\"right\">"
.fecha(mysql_result($sql$if_ingreso))."</td>
      <td>"
.mysql_result($sql$iinicio_repo)."</td>
      <td>"
.mysql_result($sql$itiempo)." ".mysql_result($sql$iunidades)."</td>
      <td>"
.mysql_result($sql$iidentifica_repo)."</td>
      <td align=\"center\"><a href=\"consulta2.php?cedula="
.mysql_result($sql$icedula)."\"><img src=\"imagenes/ver.png\" width=\"16\" height=\"16\" border=\"false\" /></a></td>
    </tr>"
;
    
$i++;
  }

  
mysql_close($conexion);
?>
    <tr>
      <td colspan="8" bgcolor="#E6E6E6" align="center">Fin de Reporte</td>
    </tr>
  </tbody>
 </form>
</table>

</body>
</html>
<script type="text/javascript">
  document.formulario.valor.focus();
</script>
Este es el Codigo Si ves algo malo aparte de mi consulta es bienvenido jeje =)
  #10 (permalink)  
Antiguo 13/09/2011, 10:16
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

La cuestion estaria aqui: Si yo tengo 2 input
1)
Cita:
<input type="radio" name="criterio" value="fecha" />&nbsp;Fecha:&nbsp;&nbsp;&nbsp;&nbsp;
<?echo calendario(dia,mes,anio,'0');?>
2)
Cita:
<input type="radio" name="criterio" value="fecha" />&nbsp;Hasta:&nbsp;&nbsp;&nbsp;&nbsp;
<?echo calendario(dia,mes,anio,'0');?>
Mediante un Radio, que solo puede estar seleccionado 1 ves, si marco Fecha no puedo marcar también Hasta xq se desmarcaría fecha no? habría una posibilidad de que Solo se Marcara Fecha Y yo solo movería mi calendario de Tal fecha hasta Tal fecha? solo tomando 1 input?

porque mi consulta sale de:
Cita:
if($_POST[criterio]=="fecha")
Si esta establecido la variable Fecha por el método criterio
Ejecutarme la sentencia Tal.
  #11 (permalink)  
Antiguo 13/09/2011, 10:22
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

Bueno es que sin las librerias no puedo hacer mucho, pero cuando tu muetras tu calendario haces:

Código PHP:
Ver original
  1. <?echo calendario(dia,mes,anio,'0');?>

eso muestra DIA MES AÑO pero no capturas eso en una variable, osea no veo por ningun lafo que captures la fecha total en una variable

por eso te aconseje lo de los calendarios, obviamente tu sql estas malo porq esa variable POST no existe...
  #12 (permalink)  
Antiguo 13/09/2011, 10:27
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

A mi me sirve ese calendario porque con el agrego la fecha en la libreria solo tengo conexion y fecha y fecha tiene lo que alla arriba puse y esto al principio:

<?

Cita:
function fecha($valor)
{
$anio=substr($valor,0,4);
$mes=substr($valor,5,2);
$dia=substr($valor,8,2);
$fecha=$dia."/".$mes."/".$anio;
return $fecha;
}
  #13 (permalink)  
Antiguo 13/09/2011, 10:47
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

ah ok entonces seria algo:

Código PHP:
Ver original
  1. //NOSE DE DONDE OBTIENE EL VALOR SUPONGO QUE DE CALENDARIO
  2. $fechainicio=Fecha(VALOR)
  3. $fechafin=Fecha(OTROVALOR) //se supone q fecha fin tiene q ser diferente

el select seria:

Select * from reposos where inicio_repo BETWEEN '$fechainicio' and '$fechafin'

no te funciona porque estas usando la misma variable para el BETWEEN entonces es como si dijeras ENRE 04/09/2001 y 04/09/2001 obviamente no te arroja nada porq son iguales los extremos.

te aconsejo que hagas un ECHO de las fechas q usas para ver si no son iguales...
  #14 (permalink)  
Antiguo 13/09/2011, 11:49
Avatar de NewbPHP  
Fecha de Ingreso: agosto-2011
Ubicación: Las Garzas
Mensajes: 37
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Buscar Registros por Fechas

Ok trabajare en ello pero donde iria

$fechainicio=fecha($valor)
$fechafin=fecha($valor)
????
  #15 (permalink)  
Antiguo 13/09/2011, 12:46
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Buscar Registros por Fechas

pues tu tienes una funcion fecha donde segun veo capturas una fecha y la conviertes, bueno de donde sea que captures el dato fecha lo tienes q guardar en una variable. lo q pasa es q me es dificil verlo en tu codigo xq como no tengo las librerias q usaste me genera error...

Etiquetas: fechas, registro, registros, sql, tabla
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 07:30.