๐ ️ Ejercicio 6: CRUD con PDO y MySQL
๐ Planteamiento:
Conecta PHP a una base de datos MySQL y:
- ✅ Crea una tabla llamada
productoscon columnasid,nombreyprecio. - ✅ Inserta un producto desde PHP.
- ✅ Muestra todos los productos en una tabla HTML.
- ✅ Permite eliminar un producto por su ID.
prepare().
✅ Modelo de soluciรณn:
<?php
// ๐ Conexiรณn a la base de datos (cambia credenciales segรบn tu entorno)
$dsn = "mysql:host=localhost;dbname=curso_php;charset=utf8";
$usuario = "root";
$contrasena = "";
try {
$pdo = new PDO($dsn, $usuario, $contrasena);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("❌ Error de conexiรณn: " . $e->getMessage());
}
// ๐ Crear tabla si no existe
$sql = "CREATE TABLE IF NOT EXISTS productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
precio DECIMAL(10,2) NOT NULL
)";
$pdo->exec($sql);
// ๐ฅ Insertar producto
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['nombre']) && isset($_POST['precio'])) {
$stmt = $pdo->prepare("INSERT INTO productos (nombre, precio) VALUES (?, ?)");
$stmt->execute([$_POST['nombre'], $_POST['precio']]);
echo "✅ Producto agregado.";
}
// ๐️ Eliminar producto
if (isset($_GET['eliminar'])) {
$id = intval($_GET['eliminar']);
$stmt = $pdo->prepare("DELETE FROM productos WHERE id = ?");
$stmt->execute([$id]);
echo "๐️ Producto eliminado.";
}
// ๐ Listar productos
$stmt = $pdo->query("SELECT * FROM productos");
$productos = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<h3>Agregar producto</h3>
<form method="post">
<label>Nombre:</label><br>
<input type="text" name="nombre" required><br><br>
<label>Precio:</label><br>
<input type="number" step="0.01" name="precio" required><br><br>
<button type="submit">Agregar</button>
</form>
<h3>Listado de productos</h3>
<table border="1" cellpadding="5">
<tr><th>ID</th><th>Nombre</th><th>Precio</th><th>Acciรณn</th></tr>
<?php foreach ($productos as $p): ?>
<tr>
<td><?php echo $p['id']; ?></td>
<td><?php echo $p['nombre']; ?></td>
<td><?php echo $p['precio']; ?></td>
<td><a href="?eliminar=<?php echo $p['id']; ?>" onclick="return confirm('¿Eliminar producto?');">Eliminar</a></td>
</tr>
<?php endforeach; ?>
</table>
๐ฏ Claves de este ejercicio:
- ๐ Conexiรณn segura a MySQL usando PDO.
- ๐ Uso de
prepare()yexecute()para evitar SQL Injection. - ๐ Creaciรณn dinรกmica de tablas y CRUD bรกsico.
- ๐ Introducciรณn a HTML y PHP trabajando juntos.
No hay comentarios:
Publicar un comentario