READ en un CRUD con PHP y MySQL: listar empleados y crear un buscador eficiente 🔎


Después de crear registros en la base de datos, el siguiente paso lógico en cualquier CRUD es poder verlos y buscarlos.

Esta operación se conoce como:

READ (leer o listar datos)

En este paso vamos a:

  • Listar empleados desde la base de datos.
  • Ordenarlos correctamente.
  • Crear un buscador por múltiples campos.
  • Limitar resultados para mejorar el rendimiento.

Todo usando PDO y consultas preparadas.



¿Qué hace la operación READ?


La operación READ permite:

  • Consultar los datos almacenados.
  • Mostrarlos al usuario.
  • Filtrar resultados.
  • Ordenarlos.

Es la base de cualquier sistema:

  • Panel de administración
  • Sistema de tickets
  • Inventarios
  • Usuarios
  • Pedidos

Sin READ, no hay interfaz funcional.



1. Consulta básica para listar empleados


En tu CRUD, el listado se obtiene con esta lógica:

$stmt = $pdo->prepare("SELECT * FROM empleados ORDER BY nombres ASC LIMIT 200");
$stmt->execute();
$empleados = $stmt->fetchAll();

Qué hace esta consulta

  • SELECT * → trae todas las columnas.
  • FROM empleados → de la tabla empleados.
  • ORDER BY nombres ASC → ordena alfabéticamente.
  • LIMIT 200 → máximo 200 resultados.

Esto evita que el sistema intente cargar miles de registros al mismo tiempo.



2. Por qué es importante ordenar los resultados


Sin un ORDER BY, la base de datos puede devolver los registros:

  • En orden aleatorio.
  • Según el último cambio.
  • Según el almacenamiento interno.

Con:

ORDER BY nombres ASC


Los empleados se muestran:

  • De la A a la Z.
  • Más fácil de leer.
  • Más intuitivo para el usuario.

3. Implementar un buscador por varios campos


Tu CRUD incluye un buscador con el parámetro q.

$q = trim($_GET['q'] ?? '');

Esto captura el texto de búsqueda.



4. Construir la consulta dinámica con WHERE


Si el usuario escribe algo, se activa la búsqueda:

$params = [];
$where = "";

if ($q !== '') {
    $where = "WHERE codigo LIKE :q OR nombres LIKE :q OR puesto LIKE :q OR telefono LIKE :q";
    $params[':q'] = "%" . $q . "%";
}


Qué significa esto

Se buscará coincidencia parcial en:

  • codigo
  • nombres
  • puesto
  • telefono

El % en SQL significa:

“Cualquier texto antes o después”.


Por ejemplo:

Buscar:

ana

Coincidirá con:

  • Ana
  • Mariana
  • Santana

5. Consulta final con buscador incluido


Luego se arma la consulta completa:

$stmt = $pdo->prepare("SELECT * FROM empleados $where ORDER BY nombres ASC LIMIT 200");
$stmt->execute($params);
$empleados = $stmt->fetchAll();


Esto permite:

  • Listar todo si no hay búsqueda.
  • Filtrar si el usuario escribe algo.

Todo con consultas preparadas y seguras.



6. Formulario del buscador


En la interfaz, el buscador es un formulario GET:

<form method="GET">
  <input type="text" name="q" placeholder="Buscar...">
  <button type="submit">Buscar</button>
</form>

Esto genera una URL como:

crud-caso-de-estudio.php?q=ana

Ventajas de usar GET:

  • La búsqueda queda en la URL.
  • Se puede compartir el enlace.
  • Se puede recargar sin perder el filtro.

7. Mostrar los resultados en una tabla


Después de obtener los datos:

foreach ($empleados as $emp) {
    echo $emp['nombres'];
}

En tu caso, los muestras en una tabla Bootstrap con:

  • Código
  • Nombre
  • Puesto
  • Teléfono
  • Estado
  • Acciones

Esto convierte la consulta en una interfaz usable.



8. Límite de resultados: una práctica importante


Tu consulta usa:

LIMIT 200

Esto es muy importante.

¿Por qué?

Si la tabla tiene:

  • 1,000 registros
  • 10,000 registros
  • 100,000 registros

Una consulta sin límite puede:

  • Consumir más memoria.
  • Hacer la página lenta.
  • Saturar el servidor.

El LIMIT protege el rendimiento.


  • Este post te puede ayudar si aun no conoces bien LIMIT



9. Flujo completo de la operación READ


Así funciona el proceso:

  1. Usuario entra al CRUD.
  2. Se ejecuta SELECT.
  3. Se listan empleados ordenados.
  4. Usuario escribe en el buscador.
  5. Se agrega el WHERE.
  6. Se muestran resultados filtrados.

Todo sin recargar la lógica del sistema.



10. Errores comunes al hacer un READ


No usar consultas preparadas

Ejemplo inseguro:

$sql = "SELECT * FROM empleados WHERE nombres LIKE '%$q%'";

Esto puede permitir inyección SQL.



No usar LIMIT

Puede causar:

  • Páginas lentas.
  • Uso excesivo de memoria.

No ordenar resultados

Hace que la tabla:

  • Se vea desordenada.
  • Sea difícil de usar.

Mejora futura: paginación


Si el sistema crece, puedes reemplazar:

LIMIT 200

Por:

LIMIT 20 OFFSET 0

Y crear paginación real.

Pero para este caso de estudio, el límite fijo es suficiente.



Conclusión


La operación READ convierte un simple CRUD en un sistema usable.

En este paso:

  • Listamos empleados.
  • Los ordenamos correctamente.
  • Implementamos un buscador por varios campos.
  • Protegimos el rendimiento con LIMIT.

Esto hace que el sistema sea rápido, claro y funcional.

En el siguiente paso veremos:

➡️ UPDATE: cómo editar empleados de forma segura con PDO



Post relacionados: