Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO BETWEEN en un rango de fechas

Estas en el tema de BETWEEN en un rango de fechas en el foro de PHP en Foros del Web. Hola como les va miren tengo un pequeño problema hojala me puedan ayudar resulta que estoy ejecutanto unas consultas mediante fechas pero en realidad tengo ...
  #1 (permalink)  
Antiguo 09/10/2015, 21:49
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 4 años, 3 meses
Puntos: 1
Pregunta BETWEEN en un rango de fechas

Hola como les va miren tengo un pequeño problema hojala me puedan ayudar resulta que estoy ejecutanto unas consultas mediante fechas pero en realidad tengo errores en un par de linea tiene idea por donde esta mi error

este es mi codigo

Código PHP:
<?php
       
require('../Gerente/menugerente.html');

    require(
'conexion.php');

        
$fecha_termino=$_POST['fecha_termino'];

    
$fecha_inicio=$_POST['fecha_inicio'];
        
$clave_t_e=$_POST['clave_t_e'];

$query="SELECT FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_inicio BETWEEN '$fecha_inicio' AND '$fecha_termino'";
    

$resultado=$mysqli->query($query);



?>


<html>
<head>
    <title>Reportes por Fechas</title>
      <link href='../imagenes/logo.png' rel='shortcut icon' type='image/png'>
      <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="../css/estilotablas.css">
</head>
<body><center>




<br></br>

<br></br>



    <table>

             <td colspan="2" align="center"><h2><b>Reportes por Fechas</b></h2></td>
        

        <tr>

                    

                    <td><center><b>Fecha</b></center></td>
                    <td><center><b>Matricula</b></center></td>

        </tr>

                <tbody>

                    <?php while($row=$resultado->fetch_assoc()){ ?>

                        <tr>

                            <td><center><?php echo $row['fecha_inicio'];?>

                            </center></td>
                            <td><center><?php echo $row['fecha_termino'];?>

                            </center></td>
                            <td><center><?php echo $row['clave_t_e'];?>

                            </center></td>



                        </tr>

                    <?php ?>

                </tbody>

            </table>
</center>
</body>
</html>
por otro lado el error que me muestra en la pagina es este



Código:
( ! ) Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wamp\www\pagina\sistema\verfechas.php on line 55
regalenme una mano amigos
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #2 (permalink)  
Antiguo 09/10/2015, 22:36
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años, 5 meses
Puntos: 263
Respuesta: BETWEEN en un rango de fechas

Código PHP:
Ver original
  1. //cambia esto:
  2. $query="SELECT FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_inicio BETWEEN '$fecha_inicio' AND '$fecha_termino'";
  3.  
  4. //por esto:
  5. $query="SELECT * FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_inicio BETWEEN '$fecha_inicio' AND '$fecha_termino'";

y prueba nuevamente
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 09/10/2015, 23:20
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 4 años, 3 meses
Puntos: 1
Pregunta Respuesta: BETWEEN en un rango de fechas

Cita:
Iniciado por xfxstudios Ver Mensaje
Código PHP:
Ver original
  1. //cambia esto:
  2. $query="SELECT FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_inicio BETWEEN '$fecha_inicio' AND '$fecha_termino'";
  3.  
  4. //por esto:
  5. $query="SELECT * FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_inicio BETWEEN '$fecha_inicio' AND '$fecha_termino'";

y prueba nuevamente
Hola Carlos mira es cierto me faltaba el * pero mira en mi archivo anterior tengo 2 input

Código HTML:
Ver original
  1. <input type="date" maxlength="6" placeholder="Fecha Inicio" id="nombre" name="fecha_entrada"onkeypress="return solonumeros(event)" onpaste="return false">
  2.    
  3.     <input type="date" maxlength="6" placeholder="Fecha Termino" id="nombre" name="fecha_entrada"onkeypress="return solonumeros(event)" onpaste="return false">
  4.     <!-- inicio codigo relojesflash.com -->

si alcanzas a ver tiene los mismos nombre en el name="fecha_entrada"

mira en mi archivo en el cual mando recibo los datos coloque esto

Código PHP:
<?php
       
require('../Gerente/menugerente.html');

    require(
'conexion.php');

        
$fecha_entrada=$_POST['fecha_entrada'];

    
//$fecha_inicio=$_POST['fecha_inicio'];
        
$clave_t_e=$_POST['clave_t_e'];

$query="SELECT * FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_entrada BETWEEN '$fecha_entrada' AND '$fecha_entrada'";     

$resultado=$mysqli->query($query);



?>
el detalle es que no me muestra ningún error, y de igual manera no me muestra ningún dato cargado ¿que cres que pueda suceder aqui?

aquí muestro la tabla

Código HTML:
Ver original
  1.  
  2.              <td colspan="2" align="center"><h2><b>Reportes por Fechas</b></h2></td>
  3.        
  4.  
  5.         <tr>
  6.  
  7.                    
  8.  
  9.                     <td><center><b>Fecha</b></center></td>
  10.                     <td><center><b>Matricula</b></center></td>
  11.  
  12.         </tr>
  13.  
  14.                 <tbody>
  15.  
  16.                     <?php while($row=$resultado->fetch_assoc()){ ?>
  17.  
  18.                         <tr>
  19.  
  20.                             <td><center><?php echo $row['fecha_entrada'];?>
  21.  
  22.                             </center></td>
  23.                             <td><center><?php echo $row['fecha_entrada'];?>
  24.  
  25.                             </center></td>
  26.                             <td><center><?php echo $row['clave_t_e'];?>
  27.  
  28.                             </center></td>
  29.  
  30.  
  31.  
  32.                         </tr>
  33.  
  34.                     <?php } ?>
  35.  
  36.                 </tbody>
  37.  
  38.             </table>
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #4 (permalink)  
Antiguo 10/10/2015, 07:06
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años, 5 meses
Puntos: 263
Respuesta: BETWEEN en un rango de fechas

no te va a servir de esa manera solo colocales nombres distintos como fechaA y fechaB, serial aglgo como asi:

Código PHP:
Ver original
  1. <?php
  2.        require('../Gerente/menugerente.html');
  3.  
  4.     require('conexion.php');
  5.  
  6.         $fechaA = $_POST['fechaA'];
  7.         $fechaB = $_POST['fechaB'];
  8.  
  9.     //$fecha_inicio=$_POST['fecha_inicio'];
  10.         $clave_t_e=$_POST['clave_t_e'];
  11.  
  12. $query="SELECT * FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_entrada BETWEEN '$fechaA' AND '$fechaB'";      
  13.  
  14. $resultado=$mysqli->query($query);
  15.  
  16.  
  17.  
  18. ?>

y los input deben ser dos, recuerda que estas filtrando un rango de fechas

Código HTML:
Ver original
  1. <input type="date" maxlength="6" placeholder="Fecha Inicio" id="nombre" name="fechaA" onkeypress="return solonumeros(event)" onpaste="return false">
  2. <input type="date" maxlength="6" placeholder="Fecha Fin" id="nombre" name="fechaB" onkeypress="return solonumeros(event)" onpaste="return false">

en las label de tu form puedes colocar lo que quieras, otra cosa no utilices mucho el campo date, cambialo por text y utiliza en el un datepicker, ya que el campo date no es compatible con todos los navegadores todavia
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 10/10/2015, 08:51
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 4 años, 3 meses
Puntos: 1
Pregunta Respuesta: BETWEEN en un rango de fechas

Cita:
Iniciado por xfxstudios Ver Mensaje
no te va a servir de esa manera solo colocales nombres distintos como fechaA y fechaB, serial aglgo como asi:

Código PHP:
Ver original
  1. <?php
  2.        require('../Gerente/menugerente.html');
  3.  
  4.     require('conexion.php');
  5.  
  6.         $fechaA = $_POST['fechaA'];
  7.         $fechaB = $_POST['fechaB'];
  8.  
  9.     //$fecha_inicio=$_POST['fecha_inicio'];
  10.         $clave_t_e=$_POST['clave_t_e'];
  11.  
  12. $query="SELECT * FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_entrada BETWEEN '$fechaA' AND '$fechaB'";      
  13.  
  14. $resultado=$mysqli->query($query);
  15.  
  16.  
  17.  
  18. ?>

y los input deben ser dos, recuerda que estas filtrando un rango de fechas

Código HTML:
Ver original
  1. <input type="date" maxlength="6" placeholder="Fecha Inicio" id="nombre" name="fechaA" onkeypress="return solonumeros(event)" onpaste="return false">
  2. <input type="date" maxlength="6" placeholder="Fecha Fin" id="nombre" name="fechaB" onkeypress="return solonumeros(event)" onpaste="return false">

en las label de tu form puedes colocar lo que quieras, otra cosa no utilices mucho el campo date, cambialo por text y utiliza en el un datepicker, ya que el campo date no es compatible con todos los navegadores todavia

Hola carlos nuevamente mira es que practicamente tengo estos campos en mi BD

identrada int
fecha_entrada date
hora_entrada time

en mi formulario tengo estos campos

Código HTML:
Ver original
  1. <input type="date" maxlength="6" placeholder="Fecha Inicio" id="nombre" name="fecha_a">
  2.  
  3. <input type="date" maxlength="6" placeholder="Fecha Termino" id="nombre" name="fecha_b">
de momento son esos campos
ahora bien en mi archivo que recibe los datos tengo esto

Código PHP:
        $fecha_a=$_POST['fecha_a'];
        
$fecha_b=$_POST['fecha_b'];
$query="SELECT * FROM entrada WHERE clave_t_e='$clave_t_e' AND fecha_entrada BETWEEN '$fecha_a' AND '$fecha_b'"

cual es la parte en la cual debe coincidir con mi base de datos si solo tengo una columna llamada fecha_entrada o es ncesario que yo tengo cree otro campo en mi base de datos

Gracias nuevamente por estarm ayudando
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #6 (permalink)  
Antiguo 10/10/2015, 09:09
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 16 años
Puntos: 154
Respuesta: BETWEEN en un rango de fechas

Hola joseanguiano,

Como bien dices, deberías añadir otro campo a tu base de datos, pero además, no necesitas tener los campos "fecha_entrada" y "hora_entrada", puedes unificarlos en uno de tipo datetime y lo mismo para la fecha_fin, luego puedes manejar los datos como necesites mediante la programación.

Obviamente, como te dice xfxstudios, en el formulario no puedes tener dos campos con el mismo nombre puesto que solo podrás recibir uno de ellos.

En resumen: cambiar el campo fecha_entrada a tipo datetime y el campo hora_entrada a fecha_fin también de tipo datetime, con eso ya deberías poder manejarlo sin problemas.

Espero que te sirva.
  #7 (permalink)  
Antiguo 10/10/2015, 10:18
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 4 años, 3 meses
Puntos: 1
Pregunta Respuesta: BETWEEN en un rango de fechas

Cita:
Iniciado por rbczgz Ver Mensaje
Hola joseanguiano,

Como bien dices, deberías añadir otro campo a tu base de datos, pero además, no necesitas tener los campos "fecha_entrada" y "hora_entrada", puedes unificarlos en uno de tipo datetime y lo mismo para la fecha_fin, luego puedes manejar los datos como necesites mediante la programación.

Obviamente, como te dice xfxstudios, en el formulario no puedes tener dos campos con el mismo nombre puesto que solo podrás recibir uno de ellos.

En resumen: cambiar el campo fecha_entrada a tipo datetime y el campo hora_entrada a fecha_fin también de tipo datetime, con eso ya deberías poder manejarlo sin problemas.

Espero que te sirva.
Hola rbczgz gracias al igual que carlos por echarme una mano, hay alguna manera de poder trabajar con el mismo campo en la columna fecha_entrada sin necesidad de agregar otro campo por que en realidad la BD ya esta establecida
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #8 (permalink)  
Antiguo 10/10/2015, 10:31
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 4 años, 3 meses
Puntos: 1
Pregunta Respuesta: BETWEEN en un rango de fechas

Cita:
Iniciado por joseanguiano Ver Mensaje
Hola rbczgz gracias al igual que carlos por echarme una mano, hay alguna manera de poder trabajar con el mismo campo en la columna fecha_entrada sin necesidad de agregar otro campo por que en realidad la BD ya esta establecida
Código PHP:
$query="SELECT fecha_entrada, hora_entrada FROM entrada WHERE fecha_entrada>= '$fecha_entrada' AND fecha_entrada<='$fecha_entrada'"
mira amigo intente con esto y si se ejecuta bien pero resulta que cuando coloco una fecha por ejemplo 2015-10-06 hasta 2015-10-09 me muestra del dia 2015-10-07 hasta el dia 2015-10-09 que cres que pueda estar sucediendo aqui? o donde cres que este el problema
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #9 (permalink)  
Antiguo 10/10/2015, 12:44
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 16 años
Puntos: 154
Respuesta: BETWEEN en un rango de fechas

Cita:
Iniciado por joseanguiano Ver Mensaje
Código PHP:
$query="SELECT fecha_entrada, hora_entrada FROM entrada WHERE fecha_entrada>= '$fecha_entrada' AND fecha_entrada<='$fecha_entrada'"
Hola joseanguiano,

No estoy seguro pero podría ser por fecha_entrada>= '$fecha_entrada' AND fecha_entrada<='$fecha_entrada'

No obstante, no termino de entender cómo pretendes filtrar con dos fechas si en la BD solo guardas una... En fin, seguro que tú sí lo sabrás.

Espero haberte ayudado.
  #10 (permalink)  
Antiguo 10/10/2015, 13:40
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años, 5 meses
Puntos: 263
Respuesta: BETWEEN en un rango de fechas

si es posible hacer un filtro con un solo campo de fecha en la base de datos, yo lo realizo tal y como le explique unos mensajes mas arriba:

Código PHP:
Ver original
  1. $fechaA = $_post['fechaA'];
  2. $fechaB = $_post['fechaB'];
  3.  
  4. $pagos = $db->query("SELECT * FROM factura_internet WHERE fecha BETWEEN '$fechaA' AND '$fechaB' ORDER BY id DESC");

como pueden ver en ese codigo, en mi formulario tengo 2 campos de fecha uno para seleccionar la fecha inicial del filtro y otro para seleccionar la fecha final del filtro, luego las recibo y asigno a 2 variables que son las cuales mediante BETWEEN y consultando un solo campo filtro los pagos que estan registrados en mi base, sin crear campos de fecha adicionales ni nada de eso, pero como dije todo va a depender de la finalidad del filtro y de como este programado el nucleo de la aplicacion y lo que debe hacer
__________________
[email protected]
HITCEL
  #11 (permalink)  
Antiguo 10/10/2015, 13:57
Avatar de joseanguiano  
Fecha de Ingreso: agosto-2015
Ubicación: Coatzacoalcos
Mensajes: 87
Antigüedad: 4 años, 3 meses
Puntos: 1
Mensaje Respuesta: BETWEEN en un rango de fechas

Cita:
Iniciado por xfxstudios Ver Mensaje
si es posible hacer un filtro con un solo campo de fecha en la base de datos, yo lo realizo tal y como le explique unos mensajes mas arriba:

Código PHP:
Ver original
  1. $fechaA = $_post['fechaA'];
  2. $fechaB = $_post['fechaB'];
  3.  
  4. $pagos = $db->query("SELECT * FROM factura_internet WHERE fecha BETWEEN '$fechaA' AND '$fechaB' ORDER BY id DESC");

como pueden ver en ese codigo, en mi formulario tengo 2 campos de fecha uno para seleccionar la fecha inicial del filtro y otro para seleccionar la fecha final del filtro, luego las recibo y asigno a 2 variables que son las cuales mediante BETWEEN y consultando un solo campo filtro los pagos que estan registrados en mi base, sin crear campos de fecha adicionales ni nada de eso, pero como dije todo va a depender de la finalidad del filtro y de como este programado el nucleo de la aplicacion y lo que debe hacer
Hola compañeros a agradesco a ustedes por echarme la mano y carlos gracias al ejemplo que colocaste ahorita pude agarra los datos correctos te agradesco una vez mas lo traigo presente esa ayuda brindada..

Código PHP:
$fechaa $_POST['fechaa'];
$fechab $_POST['fechab'];

$query="SELECT * FROM entrada WHERE fecha_entrada BETWEEN '$fechaa' AND '$fechab' ORDER BY identrada ASC"
esa asi como quedo por si en algun momento a otras personas le llegase a servir agradesco enormemente gracias
__________________
Lo fácil, ya lo hice, lo difícil lo estoy haciendo y lo imposible, me tardare pero lo lograre.
  #12 (permalink)  
Antiguo 10/10/2015, 14:05
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 16 años
Puntos: 154
Respuesta: BETWEEN en un rango de fechas

Hola joseanguiano,

Me alegro de que lo hayas resuelto, realmente yo no te he servido de ayuda, ha sido el experto xfxstudios que sabe mucho más que yo, el que te ha podido ayudar.

Sería bueno que marcaras el tema como solucionado para que los que busquen sepan que tienen en él la solución.

Etiquetas: fecha, mysqli
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 08:14.