EJERCICIOS PRÁCTICOS DE DESARROLLO DE APLICACIONES

Ejercicio 1: Implementación de Órdenes Embebidas en Aplicación Web

Introducción Teórica: Órdenes Embebidas

Concepto: Las órdenes embebidas (embedded commands) son instrucciones o fragmentos de código de un lenguaje que se insertan dentro de otro lenguaje o entorno. Son fundamentales para:

  • Extender funcionalidades básicas
  • Optimizar procesos específicos
  • Integrar sistemas heterogéneos

Herramientas comunes:

SQL embebido en C (EXEC SQL)
JavaScript embebido en HTML (script tags)
Lenguajes de plantillas (PHP, JSP)
PL/SQL en bases de datos Oracle

Ejercicio Práctico

Objetivo:

Crear una aplicación web que muestre productos de una base de datos usando SQL embebido en PHP.

Enunciado:

  1. Configurar una base de datos MySQL con tabla "productos" (id, nombre, precio, stock)
  2. Desarrollar página PHP que:
    • Conecte a la base de datos
    • Ejecute consulta SQL embebida para obtener productos
    • Muestre resultados en tabla HTML
  3. Implementar filtro por precio usando formulario HTML y SQL dinámico

Implementación Simulada (con JavaScript):

Código PHP de Solución

<?php
// Conexión a la base de datos
$conn = new mysqli('localhost', 'usuario', 'contraseña', 'tienda');

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

// SQL embebido con condición dinámica
$sql = "SELECT id, nombre, precio, stock FROM productos";

if (isset($_GET['max_price']) && is_numeric($_GET['max_price'])) {
    $max_price = $conn->real_escape_string($_GET['max_price']);
    $sql .= " WHERE precio <= $max_price";
}

$sql .= " ORDER BY nombre";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table><tr><th>ID</th><th>Nombre</th><th>Precio</th><th>Stock</th></tr>";
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["id"]."</td><td>".$row["nombre"]."</td><td>".
             $row["precio"]."</td><td>".$row["stock"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "No se encontraron productos";
}

$conn->close();
?>

SOLUCIÓN EXTENDIDA

1. Crear base de datos:

CREATE DATABASE tienda;
USE tienda;

CREATE TABLE productos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    precio DECIMAL(10,2) NOT NULL,
    stock INT DEFAULT 0
);

INSERT INTO productos (nombre, precio, stock) VALUES
('Laptop', 899.99, 15),
('Teléfono', 499.99, 30),
('Tablet', 299.99, 20);

2. Implementar seguridad adicional:

// Al inicio del script PHP
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    die('Método no permitido');
}

// Validación adicional para el precio
$max_price = filter_input(INPUT_GET, 'max_price', FILTER_VALIDATE_FLOAT);
if ($max_price !== false && $max_price !== null) {
    $sql .= " WHERE precio <= " . floatval($max_price);
}
☰   UF2215-Contenidos