Una página dinámica con PHP genera contenido diferente según los datos que recibe, a diferencia de una página HTML estática que siempre muestra lo mismo.
El problema de las páginas estáticas
Imagina que trabajas en el área de tecnología de Liverpool. Cada semana tienes que actualizar manualmente el precio de miles de productos en el sitio web. Cambias el HTML a mano, guardas el archivo, lo subes al servidor. Es agotador y lento.
PHP resuelve ese problema. En lugar de escribir el precio directamente en el HTML, el código PHP lo lee desde una base de datos y lo muestra automáticamente. Tú ya no tocas el HTML cada semana.
Eso es exactamente lo que vas a aprender en esta lección: escribir código PHP que genere contenido real en el navegador.
El Sistema PHP-HTML: cómo conviven los dos lenguajes
PHP y HTML no se pelean. Viven en el mismo archivo .php y trabajan juntos con una regla muy clara:
- Todo lo que está dentro de
<?php ... ?>lo ejecuta el servidor. - Todo lo que está fuera de esas etiquetas es HTML puro.
Este modelo se llama PHP embebido en HTML. Es la base de cualquier página dinámica.
El servidor de Apache lee tu archivo .php, ejecuta el código PHP, y entrega al navegador HTML puro. El usuario nunca ve tu código PHP, solo ve el resultado.
Tu primer archivo PHP
Abre tu editor de texto (puede ser VS Code o incluso el Bloc de notas). Crea un archivo llamado bienvenida.php dentro de C:\xampp\htdocs\mi_proyecto\.
Escribe esto:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Mi primera página PHP</title>
</head>
<body>
<?php
$nombre = "Carlos";
$empresa = "Bimbo";
echo "<h1>Bienvenido, " . $nombre . "</h1>";
echo "<p>Trabajas en " . $empresa . ".</p>";
?>
</body>
</html>
Guarda el archivo. Abre tu navegador y escribe http://localhost/mi_proyecto/bienvenida.php.
Verás en pantalla:
Bienvenido, Carlos
Trabajas en Bimbo.
Felicidades. Acabas de crear tu primera página dinámica.
Variables en PHP: los contenedores de información
Una variable en PHP siempre empieza con el símbolo $. No necesitas declarar su tipo; PHP lo detecta solo.
<?php
$producto = "Pan Bimbo";
$precio = 18500;
$disponible = true;
?>
En este ejemplo, $producto guarda texto, $precio guarda un número y $disponible guarda un valor verdadero o falso.
Puedes usar echo para mostrar el valor de cualquier variable en el navegador:
<?php
$salario = 18500;
echo "<p>Tu salario mensual es: $" . number_format($salario) . "</p>";
?>
Eso mostraría en pantalla:
Tu salario mensual es: $18,500
Fíjate en number_format(). Esa función agrega la coma de miles automáticamente. Úsala siempre que muestres cantidades en pesos.
Condicionales: cuando PHP toma decisiones
Un condicional le dice a PHP qué mostrar según una condición. La estructura básica es if / else.
Ejemplo práctico: una tienda en línea como Mercado Libre necesita mostrar si un producto está disponible o agotado.
<?php
$stock = 0;
if ($stock > 0) {
echo "<p style='color:green;'>Producto disponible.</p>";
} else {
echo "<p style='color:red;'>Producto agotado.</p>";
}
?>
Como $stock es 0, el navegador mostrará: Producto agotado en rojo.
También puedes usar elseif para manejar más de dos opciones:
<?php
$nivel_inventario = 5;
if ($nivel_inventario == 0) {
echo "<p>Sin stock.</p>";
} elseif ($nivel_inventario <= 10) {
echo "<p>Pocas unidades disponibles.</p>";
} else {
echo "<p>Stock suficiente.</p>";
}
?>
Con $nivel_inventario = 5, el resultado sería: Pocas unidades disponibles.
Este tipo de lógica aparece en casi todas las páginas reales. Lo usarás constantemente.
Bucles: cuando PHP repite tareas automáticamente
Un bucle ejecuta el mismo bloque de código varias veces. En PHP los más usados son for y foreach.
El bucle for
Usa for cuando sabes exactamente cuántas veces necesitas repetir algo.
<?php
echo "<ul>";
for ($i = 1; $i <= 5; $i++) {
echo "<li>Producto número " . $i . "</li>";
}
echo "</ul>";
?>
Eso genera una lista HTML con 5 elementos automáticamente. Sin copiar y pegar.
El bucle foreach con arreglos
Un arreglo (array) guarda múltiples valores en una sola variable. foreach recorre cada valor uno por uno.
<?php
$sucursales = ["CDMX", "Monterrey", "Guadalajara", "Puebla"];
echo "<h2>Sucursales FEMSA</h2>";
echo "<ul>";
foreach ($sucursales as $ciudad) {
echo "<li>" . $ciudad . "</li>";
}
echo "</ul>";
?>
Esto genera una lista con las cuatro ciudades. Si agregas una ciudad al arreglo, aparece automáticamente en la página. No tocas el HTML.
Combinando todo: una página más completa
Ahora combina variables, condicionales y bucles en un solo ejemplo. Simula una sección de catálogo de productos:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Catálogo</title>
</head>
<body>
<?php
$productos = [
["nombre" => "Refresco Coca-Cola 600ml", "precio" => 18, "stock" => 120],
["nombre" => "Pan de caja Bimbo", "precio" => 45, "stock" => 0],
["nombre" => "Leche Lala 1L", "precio" => 28, "stock" => 35],
];
echo "<h1>Catálogo de productos</h1>";
echo "<table border='1' cellpadding='8'>";
echo "<tr><th>Producto</th><th>Precio</th><th>Disponibilidad</th></tr>";
foreach ($productos as $p) {
$estado = ($p["stock"] > 0) ? "Disponible" : "Agotado";
$color = ($p["stock"] > 0) ? "green" : "red";
echo "<tr>";
echo "<td>" . $p["nombre"] . "</td>";
echo "<td>$" . number_format($p["precio"]) . "</td>";
echo "<td style='color:" . $color . ";'>" . $estado . "</td>";
echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
Este código genera una tabla HTML completa con tres productos. El color cambia automáticamente según el stock. Todo con menos de 30 líneas de PHP.
Errores comunes al escribir tu primer script PHP
Estos son los errores que comete casi todo el mundo al empezar:
1. Olvidar el punto y coma al final de cada instrucción.
PHP es estricto con eso. echo "Hola" sin punto y coma causa un error de sintaxis.
2. No abrir el archivo desde localhost.
Si abres el archivo haciendo doble clic en el explorador de Windows, el navegador lo trata como HTML. Siempre usa http://localhost/tu_proyecto/archivo.php.
3. Confundir = con ==.
Un solo = asigna un valor. Dos == comparan valores. Escribir if ($stock = 0) en lugar de if ($stock == 0) siempre resultará verdadero y tu lógica fallará.
4. Olvidar cerrar las etiquetas PHP.
Cada <?php debe tener su ?> correspondiente, o el servidor devolverá un error en blanco.
5. Mezclar comillas simples y dobles sin control.
En PHP, las comillas dobles interpretan variables: echo "Hola $nombre" funciona. Las simples no: echo 'Hola $nombre' imprime literalmente $nombre. Elige una convención y mantenla.
Cómo aplicar esto en tu próximo proyecto
Antes de conectar PHP a una base de datos MySQL (que verás en lecciones posteriores), practica con datos "hardcodeados" como en los ejemplos anteriores. Eso te permite dominar la sintaxis sin distracciones.
Una vez que el código funciona con datos fijos, reemplazar esos datos por consultas a MySQL es sencillo. El flujo PHP-HTML que ya aprendiste no cambia.
PHP no reemplaza el HTML; lo potencia: tú escribes la lógica una vez y el servidor genera el contenido las veces que sea necesario.