CRUD de registro simple

Ejemplo sencillo para crear una base de datos y tablas, junto con las páginas PHP para alta, baja, modificación y listado de registros. Usaremos una base de datos llamada ejcrud1 y una tabla llamada items con tres campos: id, nombre, y descripcion.

Crear la Base de Datos y la Tabla

Ejecuta el siguiente script SQL en tu servidor MySQL para crear la base de datos y la tabla:

-- Crear base de datos
CREATE DATABASE ejcrud1;

-- Usar la base de datos
USE ejcrud1;

-- Crear tabla
CREATE TABLE items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion TEXT
);

Página de Conexión (db.php)

Esta página se encarga de la conexión a la base de datos:

<?php
// db.php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "ejcrud1";

// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificar conexión
if ($conn->connect_error) {
    die("Conexión fallida: " . $conn->connect_error);
}
?>

Código alta.php

<?php
// alta.php
// Incluimos el archivo de conexión a la base de datos
include 'db.php';

// Verificamos si se ha enviado el formulario mediante el método POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Recogemos los datos del formulario y los asignamos a variables
    $nombre = $_POST['nombre'];
    $descripcion = $_POST['descripcion'];

    // Preparamos la consulta SQL para insertar un nuevo registro en la tabla 'items'
    $sql = "INSERT INTO items (nombre, descripcion) VALUES ('$nombre', '$descripcion')";

    // Ejecutamos la consulta y verificamos si se realizó correctamente
    if ($conn->query($sql) === TRUE) {
        // Si la inserción es exitosa, redirigimos a la página de listado después de 2 segundos
        header("Refresh: 2; url=listado.php");
        $message = "Registro agregado exitosamente";
    } else {
        // Si ocurre un error, lo almacenamos en la variable $message
        $message = "Error: " . $sql . "<br>" . $conn->error;
    }

    // Cerramos la conexión a la base de datos
    $conn->close();
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Agregar Registro</title>
    <style>
        /* Estilos para la página */
        body {
            font-family: Arial, sans-serif; /* Fuente para el texto */
            margin: 20px; /* Margen alrededor de la página */
            background-color: #f4f4f4; /* Color de fondo de la página */
        }
        .container {
            max-width: 600px; /* Ancho máximo del contenedor */
            margin: auto; /* Centra el contenedor horizontalmente */
            padding: 20px; /* Relleno dentro del contenedor */
            background: #fff; /* Color de fondo del contenedor */
            border-radius: 8px; /* Bordes redondeados del contenedor */
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Sombra alrededor del contenedor */
        }
        h1 {
            color: #333; /* Color del texto del encabezado */
        }
        form {
            display: flex; /* Usamos flexbox para el diseño del formulario */
            flex-direction: column; /* Coloca los elementos del formulario en columna */
        }
        label {
            margin-bottom: 5px; /* Margen inferior de las etiquetas */
            font-weight: bold; /* Texto en negrita para las etiquetas */
        }
        input[type="text"], textarea {
            margin-bottom: 10px; /* Margen inferior para los campos de entrada */
            padding: 10px; /* Relleno dentro de los campos de entrada */
            border: 1px solid #ddd; /* Borde de los campos de entrada */
            border-radius: 4px; /* Bordes redondeados de los campos de entrada */
            font-size: 16px; /* Tamaño de fuente para los campos de entrada */
        }
        input[type="submit"] {
            background-color: #007BFF; /* Color de fondo del botón de envío */
            color: #fff; /* Color del texto del botón de envío */
            border: none; /* Sin borde en el botón de envío */
            padding: 10px; /* Relleno dentro del botón de envío */
            border-radius: 4px; /* Bordes redondeados del botón de envío */
            cursor: pointer; /* Cursor en forma de mano al pasar sobre el botón */
            font-size: 16px; /* Tamaño de fuente del botón de envío */
        }
        input[type="submit"]:hover {
            background-color: #0056b3; /* Color de fondo del botón al pasar el ratón */
        }
        .message {
            font-size: 18px; /* Tamaño de fuente para el mensaje */
            margin-bottom: 20px; /* Margen inferior para el mensaje */
            color: #007BFF; /* Color del texto del mensaje */
        }
        .back-link {
            display: block; /* Hace que el enlace sea un bloque para centrarlo */
            text-align: center; /* Centra el texto del enlace */
            margin-top: 20px; /* Margen superior para el enlace */
            font-size: 16px; /* Tamaño de fuente del enlace */
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Agregar Registro</h1>
        <!-- Muestra el mensaje si existe -->
        <?php if (isset($message)): ?>
            <p class="message"><?php echo $message; ?></p>
        <?php endif; ?>
        <!-- Formulario para agregar un nuevo registro -->
        <form method="post" action="alta.php">
            <label for="nombre">Nombre:</label>
            <input type="text" id="nombre" name="nombre" required><br>
            <label for="descripcion">Descripción:</label>
            <textarea id="descripcion" name="descripcion" rows="4" cols="50" required></textarea><br>
            <input type="submit" value="Agregar">
        </form>
        <a href="listado.php" class="back-link">Volver al Listado</a>
    </div>
</body>
</html>

Explicación del Código

Inclusión del Archivo de Conexión:

include 'db.php';

Incluye el archivo que establece la conexión con la base de datos.

Verificación del Método de Solicitud:

if ($_SERVER["REQUEST_METHOD"] == "POST") {

Comprueba si el formulario ha sido enviado mediante el método POST.

Recogida de Datos del Formulario:

$nombre = $_POST['nombre'];
$descripcion = $_POST['descripcion'];

Asigna los valores enviados del formulario a variables.

Preparación de la Consulta SQL:

$sql = "INSERT INTO items (nombre, descripcion) VALUES ('$nombre', '$descripcion')";

Prepara la consulta SQL para insertar un nuevo registro en la tabla items.

Ejecución de la Consulta y Manejo de Resultados:

if ($conn->query($sql) === TRUE) {
    header("Refresh: 2; url=listado.php");
    $message = "Registro agregado exitosamente";
} else {
    $message = "Error: " . $sql . "<br>" . $conn->error;
}

Ejecuta la consulta y, dependiendo del resultado, redirige a la página de listado o muestra un mensaje de error.

Cierre de Conexión:

$conn->close();

Cierra la conexión a la base de datos.

Código HTML y CSS:

  • Estructura del HTML: Define la estructura básica del formulario y el contenedor de la página.
  • Estilos CSS: Aplica estilos para mejorar la apariencia del formulario y la página en general, como el diseño del formulario, botones, y mensajes.

Formulario:

<form method="post" action="alta.php">
    <label for="nombre">Nombre:</label>
    <input type="text" id="nombre" name="nombre" required><br>
    <label for="descripcion">Descripción:</label>
    <textarea id="descripcion" name="descripcion" rows="4" cols="50" required></textarea><br>
    <input type="submit" value="Agregar">
</form>

Define los campos del formulario para agregar un nuevo registro.

Enlace de Regreso:

<a href="listado.php" class="back-link">Volver al Listado</a>

Proporciona un enlace para volver a la página de listado de registros.

Este archivo alta.php es un formulario simple para agregar nuevos registros a una base de datos, con validación básica y mensajes de confirmación o error. La página está diseñada para ser visualmente clara y funcional. ¿Listo para continuar con el siguiente archivo?

Código baja.php

<?php
// baja.php
// Incluimos el archivo de conexión a la base de datos
include 'db.php';

// Verificamos si se ha pasado un ID a través de la URL
if (isset($_GET['id'])) {
    // Recogemos el ID del registro a eliminar
    $id = $_GET['id'];

    // Preparamos la consulta SQL para eliminar el registro con el ID dado
    $sql = "DELETE FROM items WHERE id = $id";

    // Ejecutamos la consulta y verificamos si se realizó correctamente
    if ($conn->query($sql) === TRUE) {
        // Si la eliminación es exitosa, redirigimos a la página de listado después de 2 segundos
        header("Refresh: 2; url=listado.php");
        $message = "Registro eliminado exitosamente";
    } else {
        // Si ocurre un error, lo almacenamos en la variable $message
        $message = "Error: " . $sql . "<br>" . $conn->error;
    }

    // Cerramos la conexión a la base de datos
    $conn->close();
} else {
    // Si no se ha pasado un ID, mostramos un mensaje de error
    $message = "ID no especificado";
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Eliminar Registro</title>
    <style>
        /* Estilos para la página */
        body {
            font-family: Arial, sans-serif; /* Fuente para el texto */
            margin: 20px; /* Margen alrededor de la página */
            background-color: #f4f4f4; /* Color de fondo de la página */
        }
        .container {
            max-width: 600px; /* Ancho máximo del contenedor */
            margin: auto; /* Centra el contenedor horizontalmente */
            padding: 20px; /* Relleno dentro del contenedor */
            background: #fff; /* Color de fondo del contenedor */
            border-radius: 8px; /* Bordes redondeados del contenedor */
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Sombra alrededor del contenedor */
        }
        h1 {
            color: #333; /* Color del texto del encabezado */
        }
        .message {
            font-size: 18px; /* Tamaño de fuente para el mensaje */
            margin-bottom: 20px; /* Margen inferior para el mensaje */
            color: #007BFF; /* Color del texto del mensaje */
        }
        .back-link {
            display: block; /* Hace que el enlace sea un bloque para centrarlo */
            text-align: center; /* Centra el texto del enlace */
            margin-top: 20px; /* Margen superior para el enlace */
            font-size: 16px; /* Tamaño de fuente del enlace */
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Eliminar Registro</h1>
        <!-- Muestra el mensaje si existe -->
        <?php if (isset($message)): ?>
            <p class="message"><?php echo $message; ?></p>
        <?php endif; ?>
        <a href="listado.php" class="back-link">Volver al Listado</a>
    </div>
</body>
</html>

Explicación del Código

Inclusión del Archivo de Conexión:

include 'db.php';

Incluye el archivo que establece la conexión con la base de datos.

Verificación del ID en la URL:

if (isset($_GET['id'])) {

Comprueba si se ha pasado un ID a través de la URL.

Recogida del ID:

$id = $_GET['id'];

Asigna el valor del ID a una variable.

Preparación de la Consulta SQL:

$sql = "DELETE FROM items WHERE id = $id";

Prepara la consulta SQL para eliminar el registro con el ID dado.

Ejecución de la Consulta y Manejo de Resultados:

if ($conn->query($sql) === TRUE) {
    header("Refresh: 2; url=listado.php");
    $message = "Registro eliminado exitosamente";
} else {
    $message = "Error: " . $sql . "<br>" . $conn->error;
}

Ejecuta la consulta y, dependiendo del resultado, redirige a la página de listado o muestra un mensaje de error.

Cierre de Conexión:

$conn->close();

Cierra la conexión a la base de datos.

Manejo del Caso sin ID:

} else {
    $message = "ID no especificado";
}

Si no se pasa un ID en la URL, muestra un mensaje de error.

Código HTML y CSS:

  • Estructura del HTML: Define la estructura básica de la página de eliminación, que solo muestra un mensaje.
  • Estilos CSS: Aplica estilos para mejorar la apariencia del mensaje y la página en general, como el diseño del contenedor y el enlace de regreso.

Enlace de Regreso:

<a href="listado.php" class="back-link">Volver al Listado</a>
  1. Proporciona un enlace para volver a la página de listado de registros.

Este archivo baja.php maneja la eliminación de un registro basado en el ID proporcionado en la URL. La página muestra un mensaje de éxito o error y permite regresar a la lista de registros. ¿Listo para continuar con el siguiente archivo?

Código modificar.php

<?php
// modificar.php
// Incluimos el archivo de conexión a la base de datos
include 'db.php';

// Verificamos si se ha enviado el formulario mediante el método POST
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Recogemos los datos del formulario y los asignamos a variables
$id = $_POST['id'];
$nombre = $_POST['nombre'];
$descripcion = $_POST['descripcion'];

// Preparamos la consulta SQL para actualizar el registro con el ID dado
$sql = "UPDATE items SET nombre='$nombre', descripcion='$descripcion' WHERE id=$id";

// Ejecutamos la consulta y verificamos si se realizó correctamente
if ($conn->query($sql) === TRUE) {
// Si la actualización es exitosa, redirigimos a la página de listado después de 2 segundos
header("Refresh: 2; url=listado.php");
$message = "Registro actualizado exitosamente";
} else {
// Si ocurre un error, lo almacenamos en la variable $message
$message = "Error: " . $sql . "<br>" . $conn->error;
}

// Cerramos la conexión a la base de datos
$conn->close();
} else {
// Si no se ha pasado un ID, mostramos un mensaje de error
if (isset($_GET['id'])) {
// Recogemos el ID de la URL
$id = $_GET['id'];

// Preparamos la consulta SQL para obtener los datos del registro con el ID dado
$sql = "SELECT * FROM items WHERE id = $id";
$result = $conn->query($sql);

// Verificamos si se encontró el registro
if ($result->num_rows > 0) {
// Si se encontró el registro, lo almacenamos en una variable
$row = $result->fetch_assoc();
$nombre = $row['nombre'];
$descripcion = $row['descripcion'];
} else {
$message = "Registro no encontrado";
}
} else {
$message = "ID no especificado";
}
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Modificar Registro</title>
<style>
/* Estilos para la página */
body {
font-family: Arial, sans-serif; /* Fuente para el texto */
margin: 20px; /* Margen alrededor de la página */
background-color: #f4f4f4; /* Color de fondo de la página */
}
.container {
max-width: 600px; /* Ancho máximo del contenedor */
margin: auto; /* Centra el contenedor horizontalmente */
padding: 20px; /* Relleno dentro del contenedor */
background: #fff; /* Color de fondo del contenedor */
border-radius: 8px; /* Bordes redondeados del contenedor */
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Sombra alrededor del contenedor */
}
h1 {
color: #333; /* Color del texto del encabezado */
}
form {
display: flex; /* Usamos flexbox para el diseño del formulario */
flex-direction: column; /* Coloca los elementos del formulario en columna */
}
label {
margin-bottom: 5px; /* Margen inferior de las etiquetas */
font-weight: bold; /* Texto en negrita para las etiquetas */
}
input[type="text"], textarea {
margin-bottom: 10px; /* Margen inferior para los campos de entrada */
padding: 10px; /* Relleno dentro de los campos de entrada */
border: 1px solid #ddd; /* Borde de los campos de entrada */
border-radius: 4px; /* Bordes redondeados de los campos de entrada */
font-size: 16px; /* Tamaño de fuente para los campos de entrada */
}
input[type="submit"] {
background-color: #007BFF; /* Color de fondo del botón de envío */
color: #fff; /* Color del texto del botón de envío */
border: none; /* Sin borde en el botón de envío */
padding: 10px; /* Relleno dentro del botón de envío */
border-radius: 4px; /* Bordes redondeados del botón de envío */
cursor: pointer; /* Cursor en forma de mano al pasar sobre el botón */
font-size: 16px; /* Tamaño de fuente del botón de envío */
}
input[type="submit"]:hover {
background-color: #0056b3; /* Color de fondo del botón al pasar el ratón */
}
.message {
font-size: 18px; /* Tamaño de fuente para el mensaje */
margin-bottom: 20px; /* Margen inferior para el mensaje */
color: #007BFF; /* Color del texto del mensaje */
}
.back-link {
display: block; /* Hace que el enlace sea un bloque para centrarlo */
text-align: center; /* Centra el texto del enlace */
margin-top: 20px; /* Margen superior para el enlace */
font-size: 16px; /* Tamaño de fuente del enlace */
}
</style>
</head>
<body>
<div class="container">
<h1>Modificar Registro</h1>
<!-- Muestra el mensaje si existe -->
<?php if (isset($message)): ?>
<p class="message"><?php echo $message; ?></p>
<?php endif; ?>
<!-- Formulario para modificar un registro existente -->
<form method="post" action="modificar.php">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" value="<?php echo isset($nombre) ? htmlspecialchars($nombre) : ''; ?>" required><br>
<label for="descripcion">Descripción:</label>
<textarea id="descripcion" name="descripcion" rows="4" cols="50" required><?php echo isset($descripcion) ? htmlspecialchars($descripcion) : ''; ?></textarea><br>
<input type="submit" value="Actualizar">
</form>
<a href="listado.php" class="back-link">Volver al Listado</a>
</div>
</body>
</html>

Explicación del Código

Inclusión del Archivo de Conexión:

include 'db.php';

Incluye el archivo que establece la conexión con la base de datos.

Verificación del Método de Solicitud:

if ($_SERVER["REQUEST_METHOD"] == "POST") {

Comprueba si el formulario ha sido enviado mediante el método POST.

Recogida de Datos del Formulario:

$id = $_POST['id'];
$nombre = $_POST['nombre'];
$descripcion = $_POST['descripcion'];

Asigna los valores del formulario a variables.

Preparación de la Consulta SQL para Actualizar:

$sql = "UPDATE items SET nombre='$nombre', descripcion='$descripcion' WHERE id=$id";

Prepara la consulta SQL para actualizar el registro con el ID dado.

Ejecución de la Consulta y Manejo de Resultados:

if ($conn->query($sql) === TRUE) {
    header("Refresh: 2; url=listado.php");
    $message = "Registro actualizado exitosamente";
} else {
    $message = "Error: " . $sql . "<br>" . $conn->error;
}

Ejecuta la consulta y, dependiendo del resultado, redirige a la página de listado o muestra un mensaje de error.

Cierre de Conexión:

$conn->close();

Cierra la conexión a la base de datos.

Manejo del Caso GET:

if (isset($_GET['id'])) {
    $id = $_GET['id'];
    $sql = "SELECT * FROM items WHERE id = $id";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $nombre = $row['nombre'];
        $descripcion = $row['descripcion'];
    } else {
        $message = "Registro no encontrado";
    }
} else {
    $message = "ID no especificado";
}

Si se pasa un ID a través de la URL, se busca el registro correspondiente para rellenar el formulario con los datos actuales. Si no se encuentra el registro o no se especifica un ID, se muestra un mensaje de error.

Código HTML y CSS:

  • Estructura del HTML: Define el formulario para modificar el registro, utilizando campos ocultos para el ID y los campos para el nombre y la descripción.
  • Estilos CSS: Aplica estilos para mejorar la apariencia del formulario y la página en general, como el diseño del formulario

Código listado.php

<?php
// listado.php
// Incluimos el archivo de conexión a la base de datos
include 'db.php';

// Preparamos la consulta SQL para obtener todos los registros de la tabla 'items'
$sql = "SELECT * FROM items";

// Ejecutamos la consulta y almacenamos el resultado
$result = $conn->query($sql);

// Verificamos si se obtuvieron registros
if ($result->num_rows > 0) {
    // Creamos un array para almacenar los registros
    $items = [];
    while ($row = $result->fetch_assoc()) {
        $items[] = $row;
    }
} else {
    $message = "No se encontraron registros";
}

// Cerramos la conexión a la base de datos
$conn->close();
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Listado de Registros</title>
    <style>
        /* Estilos para la página */
        body {
            font-family: Arial, sans-serif; /* Fuente para el texto */
            margin: 20px; /* Margen alrededor de la página */
            background-color: #f4f4f4; /* Color de fondo de la página */
        }
        .container {
            max-width: 800px; /* Ancho máximo del contenedor */
            margin: auto; /* Centra el contenedor horizontalmente */
            padding: 20px; /* Relleno dentro del contenedor */
            background: #fff; /* Color de fondo del contenedor */
            border-radius: 8px; /* Bordes redondeados del contenedor */
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /* Sombra alrededor del contenedor */
        }
        h1 {
            color: #333; /* Color del texto del encabezado */
        }
        table {
            width: 100%; /* Ancho de la tabla ocupa todo el contenedor */
            border-collapse: collapse; /* Colapsa los bordes de la tabla */
        }
        th, td {
            border: 1px solid #ddd; /* Borde de las celdas de la tabla */
            padding: 10px; /* Relleno dentro de las celdas */
            text-align: left; /* Alineación del texto a la izquierda */
        }
        th {
            background-color: #f2f2f2; /* Color de fondo de los encabezados de columna */
        }
        .action-links {
            text-align: center; /* Centra el texto de los enlaces de acción */
        }
        .action-links a {
            margin: 0 5px; /* Espaciado entre los enlaces */
            text-decoration: none; /* Sin subrayado en los enlaces */
            color: #007BFF; /* Color del texto de los enlaces */
        }
        .action-links a:hover {
            text-decoration: underline; /* Subrayado al pasar el ratón sobre el enlace */
        }
        .back-link {
            display: block; /* Hace que el enlace sea un bloque para centrarlo */
            text-align: center; /* Centra el texto del enlace */
            margin-top: 20px; /* Margen superior para el enlace */
            font-size: 16px; /* Tamaño de fuente del enlace */
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>Listado de Registros</h1>
        <!-- Muestra el mensaje si existe -->
        <?php if (isset($message)): ?>
            <p class="message"><?php echo $message; ?></p>
        <?php endif; ?>
        <!-- Tabla para mostrar los registros -->
        <table>
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Nombre</th>
                    <th>Descripción</th>
                    <th>Acciones</th>
                </tr>
            </thead>
            <tbody>
                <!-- Recorremos el array de registros y mostramos cada uno en una fila de la tabla -->
                <?php if (isset($items)): ?>
                    <?php foreach ($items as $item): ?>
                        <tr>
                            <td><?php echo htmlspecialchars($item['id']); ?></td>
                            <td><?php echo htmlspecialchars($item['nombre']); ?></td>
                            <td><?php echo htmlspecialchars($item['descripcion']); ?></td>
                            <td class="action-links">
                                <!-- Enlaces para modificar y eliminar el registro -->
                                <a href="modificar.php?id=<?php echo $item['id']; ?>">Modificar</a>
                                <a href="baja.php?id=<?php echo $item['id']; ?>">Eliminar</a>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                <?php endif; ?>
            </tbody>
        </table>
        <a href="alta.php" class="back-link">Agregar Nuevo Registro</a>
    </div>
</body>
</html>

Explicación del Código

Inclusión del Archivo de Conexión:

include 'db.php';

Incluye el archivo que establece la conexión con la base de datos.

Preparación y Ejecución de la Consulta SQL:

$sql = "SELECT * FROM items";
$result = $conn->query($sql);

Prepara y ejecuta la consulta para obtener todos los registros de la tabla items.

Verificación de Registros:

if ($result->num_rows > 0) {
    $items = [];
    while ($row = $result->fetch_assoc()) {
        $items[] = $row;
    }
} else {
    $message = "No se encontraron registros";
}

Verifica si se han obtenido registros. Si es así, almacena los registros en un array. Si no hay registros, establece un mensaje de error.

Cierre de Conexión:

$conn->close();

Cierra la conexión a la base de datos.

Código HTML y CSS:

  • Estructura del HTML: Define una tabla para mostrar los registros con columnas para ID, nombre, descripción y acciones. Incluye enlaces para modificar y eliminar registros.
  • Estilos CSS: Aplica estilos para mejorar la apariencia de la tabla y la página en general, incluyendo el diseño de la tabla y los enlaces de acción.

Recorrido de Registros:

<?php foreach ($items as $item): ?>
    <tr>
        <td><?php echo htmlspecialchars($item['id']); ?></td>
        <td><?php echo htmlspecialchars($item['nombre']); ?></td>
        <td><?php echo htmlspecialchars($item['descripcion']); ?></td>
        <td class="action-links">
            <a href="modificar.php?id=<?php echo $item['id']; ?>">Modificar</a>
            <a href="baja.php?id=<?php echo $item['id']; ?>">Eliminar</a>
        </td>
    </tr>
<?php endforeach; ?>

Recorre el array de registros y muestra cada uno en una fila de la tabla. Incluye enlaces para modificar y eliminar el registro.

Enlace para Agregar Nuevo Registro:

<a href="alta.php" class="back-link">Agregar Nuevo Registro</a>

Proporciona un enlace para agregar un nuevo registro.

Descargar los archivos PHP

Facebook
Twitter
LinkedIn

Leave a Comment

Your email address will not be published. Required fields are marked *