Saltar al contenido

Mentoring

Cómo crear una tabla HTML con PHP

Aprende a crear una tabla HTML con PHP usando datos de un array y un bucle foreach.

Mentoring 2 min de lectura

Actualizado el

Crear tabla HTML con PHP

En este ejemplo, PHP genera el HTML de una tabla a partir de unos datos; no crea una tabla de base de datos. Los datos pueden venir de un array, una API o una consulta, pero el resultado es marcado <table>. Si lo que necesitas es definir una tabla dentro de una base de datos, consulta la guía de CREATE TABLE en MySQL.

Estructura básica de una tabla HTML

Una tabla usa estas etiquetas:

  • <table>: contiene toda la tabla.
  • <tr>: crea una fila.
  • <th>: crea una celda de cabecera.
  • <td>: crea una celda normal.
<table border="1">
    <tr>
        <th>Nombre alumno</th>
        <th>Apellidos</th>
        <th>Nota</th>
    </tr>
    <tr>
        <td>Leire</td>
        <td>Bravo</td>
        <td>5,5</td>
    </tr>
</table>

El resultado de esta tabla se ve así:

Tabla HTML creada con PHP

Crear una tabla con PHP desde un array

Este ejemplo genera una tabla con las notas de varios alumnos:

<?php
$alumnos = [
    [
        'nombre' => 'Leire',
        'apellidos' => 'Bravo',
        'nota' => 5.5,
    ],
    [
        'nombre' => 'Ainara',
        'apellidos' => 'Feijoo',
        'nota' => 6.5,
    ],
    [
        'nombre' => 'Nancy',
        'apellidos' => 'Tomas',
        'nota' => 4.5,
    ],
];
?>

<table border="1">
    <thead>
        <tr>
            <th>Nombre alumno</th>
            <th>Apellidos</th>
            <th>Nota</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($alumnos as $alumno): ?>
            <tr>
                <td><?= htmlspecialchars($alumno['nombre']) ?></td>
                <td><?= htmlspecialchars($alumno['apellidos']) ?></td>
                <td><?= number_format($alumno['nota'], 2, ',', '.') ?></td>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

foreach recorre cada alumno y cada iteración genera una fila nueva dentro de <tbody>; el encabezado queda agrupado en <thead>.

Por qué usar htmlspecialchars

Cuando pintas datos en HTML, usa htmlspecialchars para evitar que un valor con caracteres especiales rompa la página o inyecte HTML no deseado. La función convierte caracteres como &, ", ', < y > en entidades HTML.

Desde PHP 8.1, los flags predeterminados son ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, así que la llamada sencilla cubre la mayoría de los casos. Si prefieres dejarlos explícitos, puedes escribir:

htmlspecialchars(
    $alumno['nombre'],
    ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401,
    'UTF-8'
)

htmlspecialchars escapa la salida HTML, pero no sustituye a la validación de los datos ni a las consultas parametrizadas.

Si los datos vienen de una base de datos, la idea es la misma: recuperas los registros, los recorres y pintas cada fila dentro de la tabla. La consulta solo cambiaría el origen de $alumnos; el foreach y el escape de salida seguirían el mismo patrón.