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

Dejá un comentario

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