🛠️ Ejercicio 5: CRUD básico con arrays y sesiones en PHP
📌 Planteamiento:
Crea una aplicación PHP que permita:
- ✅ Agregar nombres a una lista.
- ✅ Mostrar la lista actualizada.
- ✅ Editar un nombre existente.
- ✅ Eliminar un nombre.
- ✅ Usar sesiones para almacenar la lista mientras dura la sesión del navegador.
✅ Modelo de solución:
<?php
session_start();
if (!isset($_SESSION['lista'])) {
$_SESSION['lista'] = [];
}
$mensaje = "";
// Agregar nuevo nombre
if (isset($_POST['accion']) && $_POST['accion'] == 'agregar') {
$nombreNuevo = trim($_POST['nombre']);
if ($nombreNuevo !== '') {
$_SESSION['lista'][] = htmlspecialchars($nombreNuevo);
$mensaje = "Nombre agregado correctamente.";
} else {
$mensaje = "El nombre no puede estar vacío.";
}
}
// Editar nombre existente
if (isset($_POST['accion']) && $_POST['accion'] == 'editar') {
$indice = intval($_POST['indice']);
$nombreEditado = trim($_POST['nombre']);
if ($nombreEditado !== '' && isset($_SESSION['lista'][$indice])) {
$_SESSION['lista'][$indice] = htmlspecialchars($nombreEditado);
$mensaje = "Nombre editado correctamente.";
} else {
$mensaje = "Error al editar el nombre.";
}
}
// Eliminar nombre
if (isset($_GET['accion']) && $_GET['accion'] == 'eliminar') {
$indice = intval($_GET['indice']);
if (isset($_SESSION['lista'][$indice])) {
array_splice($_SESSION['lista'], $indice, 1);
$mensaje = "Nombre eliminado correctamente.";
}
}
// Variables para editar
$editarIndice = -1;
$editarNombre = "";
if (isset($_GET['accion']) && $_GET['accion'] == 'editar' && isset($_GET['indice'])) {
$editarIndice = intval($_GET['indice']);
if (isset($_SESSION['lista'][$editarIndice])) {
$editarNombre = $_SESSION['lista'][$editarIndice];
} else {
$editarIndice = -1;
}
}
?>
<h3>Lista de Nombres</h3>
<?php if (!empty($mensaje)) : ?>
<p><?php echo $mensaje; ?></p>
<?php endif; ?>
<table>
<thead>
<tr>
<th>Nombre</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
<?php foreach ($_SESSION['lista'] as $i => $nombre): ?>
<tr>
<td><?php echo $nombre; ?></td>
<td>
<a href="?accion=editar&indice=<?php echo $i; ?>">Editar</a>
<a href="?accion=eliminar&indice=<?php echo $i; ?>" onclick="return confirm('¿Seguro que quieres eliminar?');">Eliminar</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<h3><?php echo ($editarIndice >= 0) ? "Editar Nombre" : "Agregar Nombre"; ?></h3>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<input type="hidden" name="accion" value="<?php echo ($editarIndice >= 0) ? "editar" : "agregar"; ?>" />
<?php if ($editarIndice >= 0): ?>
<input type="hidden" name="indice" value="<?php echo $editarIndice; ?>" />
<?php endif; ?>
<label for="nombre">Nombre:</label>
<input type="text" name="nombre" id="nombre" value="<?php echo htmlspecialchars($editarNombre); ?>" required />
<button type="submit"><?php echo ($editarIndice >= 0) ? "Guardar cambios" : "Agregar"; ?></button>
</form>
🎯 Claves de este ejercicio:
- 📍 Uso de sesiones para almacenar datos temporales.
- 📍 Implementación básica de operaciones CRUD.
- 📍 Manejo de formularios con POST y enlaces GET para acciones.
- 📍 Protección básica contra XSS con
htmlspecialchars.
No hay comentarios:
Publicar un comentario