Filtrar Rango de Fechas con PHP y MYSQL

Filtrar Rango de Fechas con PHP y MYSQL

En este tutorial crearemos un rango de fecha de filtro con MySQLi usando PHP. Este código puede filtrar un rango de filas de tabla de MySQLi cuando el usuario proporciona dos fechas de las entradas. El código utiliza la consulta MySQLi SELECT para filtrar un rango de datos en la fila mysqli al proporcionar dos fechas en la cláusula WHERE al agregar un parámetro ENTRE. Este es un programa fácil de usar, siéntase libre de modificarlo y usarlo en su sistema.

Usaremos PHP como un lenguaje e intérprete de scripts que se utiliza principalmente en cualquier servidor web, incluidos xamp, wamp, etc. Se está utilizando en sitios web famosos debido a su enfoque moderno.

Empezando:
Primero debe descargar e instalar XAMPP o cualquier servidor local que ejecute scripts PHP. Aquí está el enlace para el servidor XAMPP https://www.apachefriends.org/index.html. Y, este es el enlace para el bootstrap que utilicé para el diseño del diseño https://getbootstrap.com/.

Crear base de datos:
Abra el servidor web de su base de datos, luego cree un nombre de base de datos en db_range, luego haga clic en Importar, luego ubique el archivo de la base de datos dentro de la carpeta de la aplicación y luego haga clic en Aceptar.

db_range_phpmyadmin_4.8.3

Crear la conexión de la base de datos:
Abra su editor de texto de cualquier tipo (notepad ++, etc.). Luego simplemente copie / pegue el código a continuación y luego llámelo conn.php.

<?php
  $conn=mysqli_connect("localhost", "root", "2012116664", "db_range");
  
  if(!$conn){
    die("Error: Failed to connect to database!");
  }
?>

Crear la interfaz:
Aquí es donde crearemos un formulario simple para nuestra aplicación. Para crear los formularios, simplemente cópielos y escríbalos en su editor de texto, luego guárdelos como index.php.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1"/>
    <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
  </head>
<body>
  <nav class="navbar navbar-default">
    <div class="container-fluid">
      <a href="https://compubinario.com" class="navbar-brand">CompuBinario</a>
    </div>
  </nav>
  <div class="col-md-3"></div>
  <div class="col-md-6 well">
    <h3 class="text-primary">Filtrar Rango de Fechas con PHP y MYSQL</h3>
    <hr style="border-top:1px dotted #000;"/>
    <form class="form-inline" method="POST" action="">
      <label>Fecha Desde:</label>
      <input type="date" class="form-control" placeholder="Start"  name="date1"/>
      <label>Hasta</label>
      <input type="date" class="form-control" placeholder="End"  name="date2"/>
      <button class="btn btn-primary" name="search"><span class="glyphicon glyphicon-search"></span></button> <a href="index.php" type="button" class="btn btn-success"><span class = "glyphicon glyphicon-refresh"><span></a>
    </form>
    <br /><br />
    <div class="table-responsive">	
      <table class="table table-bordered">
        <thead class="alert-info">
          <tr>
            <th>Nombres</th>
            <th>Apellidos</th>
            <th>Proyecto</th>
            <th>Fecha de Registro</th>
          </tr>
        </thead>
        <tbody>
          <?php include'range.php'?>	
        </tbody>
      </table>
    </div>	
  </div>
</body>
</html>

Crear la función principal:
Este código contiene la función principal de la aplicación. Este código filtrará un rango de datos cuando se haga clic en el botón. Para hacer eso, simplemente copie y escriba este bloque de códigos dentro del editor de texto, luego guárdelo como range.php.

<?php
  require'conn.php';
  if(ISSET($_POST['search'])){
    $date1 = date("Y-m-d", strtotime($_POST['date1']));
    $date2 = date("Y-m-d", strtotime($_POST['date2']));
    $query=mysqli_query($conn, "SELECT * FROM `member` WHERE `date_submit` BETWEEN '$date1' AND '$date2'") or die(mysqli_error());
    $row=mysqli_num_rows($query);
    if($row>0){
      while($fetch=mysqli_fetch_array($query)){
?>
  <tr>
    <td><?php echo $fetch['firstname']?></td>
    <td><?php echo $fetch['lastname']?></td>
    <td><?php echo $fetch['project']?></td>
    <td><?php echo $fetch['date_submit']?></td>
  </tr>
<?php
      }
    }else{
      echo'
      <tr>
        <td colspan = "4"><center>Registros no Existen</center></td>
      </tr>';
    }
  }else{
    $query=mysqli_query($conn, "SELECT * FROM `member`") or die(mysqli_error());
    while($fetch=mysqli_fetch_array($query)){
?>
  <tr>
    <td><?php echo $fetch['firstname']?></td>
    <td><?php echo $fetch['lastname']?></td>
    <td><?php echo $fetch['project']?></td>
    <td><?php echo $fetch['date_submit']?></td>
  </tr>
<?php
    }
  }
?>

Ahí lo tienes, creamos con éxito el rango de fecha del filtro con MySQLi usando PHP.

DESCARGAR TODO EL CODIGO FUENTE

Filtrar Rango de Fechas con PHP y MYSQL – Descargar el Tutorial en el siguiente enlace:

DESCARGAR AQUÍ

5 thoughts on “Filtrar Rango de Fechas con PHP y MYSQL

  1. Andrea Amaya

    Hola me gustaría ver la base de datos, tengo problemas al trabajar con campos tipo date me gustaría saber de qué tipo creaste el campo datesubmit en la base de datos si es string o date. Siempre tengo problemas para trabajar con fechas.

    Reply
    1. Raul

      Esta es la tabla que se creó
      CREATE TABLE `member` (
      `mem_id` int(11) NOT NULL,
      `firstname` varchar(50) NOT NULL,
      `lastname` varchar(50) NOT NULL,
      `project` varchar(100) NOT NULL,
      `date_submit` varchar(20) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

      Reply
      1. alberto

        Hola, una enorme pregunta en caso de que la búsqueda no sea fecha y sea edades como podría modificarse el archivo range en la parte de date?

        Reply
  2. Victor Hugo

    Hola.! no me está considerando los rangos de fecha y cuando presiono el botón buscar se vuelve al inicio

    Reply
  3. Eric

    Hola una pregunta, en caso de querer hacer el filtro de rango por una columna ya sea edad y no fecha ¿Cómo se modificaría el codig0?
    en el index se cambia la parte de input type el «date» por el «number», pero en el range como seria la modificación?

    Reply

Responder a Andrea Amaya Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *