Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Aprender a desarrollar un sitio web con PHP y MySQL
  3. Funciones y estructuras de control
Extrait - Aprender a desarrollar un sitio web con PHP y MySQL Ejercicios prácticos y corregidos (3ª edición)
Extractos del libro
Aprender a desarrollar un sitio web con PHP y MySQL Ejercicios prácticos y corregidos (3ª edición) Volver a la página de compra del libro

Funciones y estructuras de control

Las condiciones

1. If

Las instrucciones del tipo condición permiten ejecutar el código si una condición es verdadera.

Por ejemplo, si el nombre es Roberto, muestre «Bienvenido»:

<?php 
$nombre = 'Roberto'; //declaración de la variable $nombre 
 
if ($nombre == 'Roberto') //comprueba la variable $nombre 
{  
   echo 'Bienvenido'; 
}  
?> 

El valor Roberto se asigna a la variable $nombre y se comprueba con ayuda de la instrucción if.

Por tanto, la sintaxis es:

if (condition) { instrucción } 

Tenga en cuenta que:

  • «es igual a» se designa ==

  • «es diferente de» se designa !=

  • «es inferior a» se designa <

  • «es superior a» se designa >

  • «es inferior o igual a» se designa <=

  • «es superior o igual a» se designa >=

La instrucción si no se designa con else.

Por ejemplo, si el nombre es igual a Roberto, se muestra «Bienvenido», o «Hasta pronto» en cualquier otro caso:

<?php 
 
$nombre = 'Pepe'; //declaración de la variable $nombre 
 
if ($nombre == 'Roberto') //comprueba la variable $nombre 
{  
   echo 'Bienvenido'; 
}  
else  
{  
   echo 'Hasta pronto'; 
}  
?> 

Da como resultado:

Hasta pronto

El código comprueba si la variable $nombre es Roberto, pero como no es el caso, el código entra en else (si no), y ejecuta echo "Hasta pronto";.

La última instrucción en las condiciones es else if, llamada si no si.

Esto permite probar otras condiciones que no han sido comprobadas por if.

Por ejemplo, si el nombre es Roberto, se muestra «Bienvenido» ; si no, si es Pepe se muestra «Hola» ; si no, «Hasta pronto»:

<?php 
 
$nombre = 'Pepe'; //declaración de la variable $nombre  
 
if ($nombre == 'Roberto') //comprueba la variable $nombre  
{  
   echo 'Bienvenido';  
}  
else if ($nombre == 'Pepe') //comprueba la variable $nombre  ...

Los bucles

1. for

Un bucle permite repetir x veces la ejecución de un código.

Por ejemplo, si quiere mostrar diez veces «Hola», solo tiene que escribir el bucle for.

<?php 
 
for ($i = 1; $i <= 10; $i++) 
{ 
  echo 'Hola <br />'; 
} 
?> 

La variable $i representa el contador del bucle. No está obligado a recurrir a la variable $i, pero por norma general es el nombre que se emplea.

Por tanto, la sintaxis es:

for ($i=número inicial; $i <= número final; aumento) 
{  
 instrucciones 
} 

$i++ es igual a $i=$i+1 y representa el aumento de $i. Puede escribir $i=$i+2 para aumentar o $i=$i-1 para disminuir.

Por ejemplo, puede escribir los números de 100 a 150 con el siguiente código:

<?php 
 
for ($i = 100; $i <= 150; $i++) 
{  
  echo $i.'<br />'; 
}  
?> 

La instrucción echo $i.’<br />’; se repite 50 veces y $i aumenta en 1 cada vez.

<br /> permite saltar una línea entre cada número para no tener que mostrarlos todos.

La instrucción break permite detener el bucle.

Por ejemplo, si quiere mostrar cinco veces «Hola», solo debe escribir un bucle for:

<?php 
 
for ($i = 1; $i <= 10; $i++) 
{  
   echo 'Hola <br />';  
   ...

Las tablas

1. Tablas numéricas

Una tabla es como una variable, pero puede almacenar varios valores.

Una tabla se define con una clave (llamada índice) y un valor:

images/4_1.png

Para crear esta tabla, escriba lo siguiente:

<?php  
$tabla = array('Juan','Roberto','Pablo','Pedro','Alonso');  
?> 

Aquí la tabla se denomina $tabla, pero la puede llamar de cualquier otra manera. 

También puede acceder directamente al valor de una tabla a través de su índice, con la siguiente sintaxis:

<?php 
echo $tabla[0]; 
?> 

Da como resultado:

Juan

En efecto, $tabla[x] es una variable que tiene como valor un elemento de la tabla.

Atención: los índices de las tablas comienzan desde 0.

Para sustituir la cadena de caracteres ’Roberto’ por ’Nadia’ en el índice 1 de la tabla, escriba:

<?php 
$tabla[1] = 'Nadia'; 
?> 

También puede crear una tabla vacía y rellenarla de la siguiente manera:

<?php  
$tabla = array();  
$tabla[0] = 'Juan';  
$tabla[1] = 'Roberto';  
$tabla[2] = 'Pablo';  
$tabla[3] = 'Pedro';  
$tabla[4] = 'Alonso';  
?> 

o bien de esta manera:

<?php  
$tabla = array();  
$tabla[] = 'Juan';  
$tabla[] = 'Roberto';  
$tabla[] = 'Pablo';  
$tabla[] = 'Pedro';  
$tabla[] = 'Alonso';  
?> 

o incluso:

< ?php 
$tabla = ['Juan','Roberto', 'Pablo','Pedro','Alonso'] ; 
?> 

PHP rellena automáticamente los índices, que es lo mismo que escribir:

<?php  
$tabla = array('Juan','Roberto','Pablo','Pedro','Alonso');  
?> 

2. Tablas asociativas

En un tabla asociativa puede decidir la clave que va a introducir.

Por ejemplo:

images/4_2.png

En este ejemplo la clave puede tomar cualquier valor; no tiene que ser necesariamente un número.

Este tipo de tabla se escribe de la siguiente manera:

<?php  
$tabla = array('A1'=>'Juan','B4'=>'Roberto',3=>'Pablo', 
'PEPE'=>'Pedro', 'H'=>'Alonso');  
?> 

La asociación se escribe con los símbolos =>. El primero...

Procesamiento de las cadenas de caracteres

1. Funciones de manipulación de cadenas

En esta parte del capítulo se tratan todas las funciones PHP que permiten manipular las cadenas de caracteres.

a. strlen()

La función strlen() devuelve la longitud de una cadena de caracteres.

Por ejemplo:

<?php 
 
$nombre = "Roberto"; 
$longitud = strlen($nombre); 
echo "La longitud de la cadena es: ".$longitud; 
 
?> 

Da como resultado:

La longitud de la cadena es: 7

Por tanto, su sintaxis es la siguiente:

$longitud= strlen($cadena); 

Otro ejemplo:

<?php 
 
$nombre = " Hola, Roberto  "; 
$longitud = strlen($nombre); 
echo "La longitud de la cadena es: ".$longitud; 
 
?> 

Da como resultado:

La longitud de la cadena es: 15

También se cuentan los espacios.

b. substr()

La función substr() devuelve un trozo de la cadena partiendo de una posición y con una longitud dada.

Por ejemplo:

<?php 
 
$nombre = "Roberto"; 
$trozo = substr($nombre,2,3); 
echo "El trozo de la cadena es: ".$trozo; 
 
?> 

Da como resultado:

El trozo de la cadena es: ber

La posición del inicio comienza desde 0.

No necesita indicar la longitud. La función devuelve los caracteres hasta el final de la cadena de caracteres.

Por tanto, su sintaxis es:

$trozo_cadena = substr($cadena,$posicion_inicio,longitud_cadena); 

Otro ejemplo:

<?php  
 
$nombre = "Hola, me llamo Roberto"; 
$trozo = substr($nombre,15); 
echo "El trozo de la cadena es: ".$trozo; 
 
?> 

Da como resultado:

El trozo de la cadena es: Roberto

Al no especificar el último parámetro, la función toma la cadena de caracteres hasta el final.

c. strstr()

La función strstr() devuelve un trozo de la cadena desde un carácter hasta el final de la cadena.

Por ejemplo:

<?php  
 
$email = "roberto.lopez@espana.es";  
$trozo = strstr($email,'@');  
echo "El trozo de la cadena es: ".$trozo;  
 
?> 

Da como resultado:

El trozo de la cadena es: @espana.es

La función devuelve la cadena de caracteres que va del carácter @ hasta el final de la cadena.

Por tanto, su sintaxis es:

$trozo_cadena = strstr($cadena,$caracter_busqueda); 

La función devuelve false si no se encuentra...

Los operadores

1. Operadores de cadena

a. La concatenación

Ha tenido la oportunidad de ver, en el capítulo Las bases del lenguaje PHP, la concatenación, que se designa con . (punto) o , (coma), y que permite unir dos cadenas de caracteres.

Por ejemplo:

<?php 
 
$nombre = "Juan"; 
$apellido = "ESTEFANIA"; 
echo $nombre." ".$apellido; //concatenación del nombre + 
//un espacio + el apellido 
 
?> 

Da como resultado:

Juan ESTEFANIA

b. Asignación

Se utiliza desde un principio en todos los ejemplos.

La asignación se designa con el signo =. Permite asignar un valor a una variable.

También puede utilizar la combinación .=, que permite concatenar una cadena a una variable y asignarla a esta variable.

Por ejemplo:

<?php 
 
$nombre = "Juan"; 
$apellido = "López"; 
$nombre .= " "; //concatenación del nombre + un espacio 
$nombre .= $apellido; //concatenación del nombre + el apellido 
echo $nombre; 
 
?> 

Es igual a:

<?php  
 
$nombre = "Juan";  
$apellido = ”López”;  
$nombre = $nombre." "; //concatenación del nombre + un espacio  
$nombre = $nombre.$apellido //concatenación del nombre + el apellido 
echo $nombre;  
 
?> 

Da como resultado:

Juan López

2. Operadores aritméticos

a. La suma

El operador se designa por +.

Por ejemplo:

<?php  
 
$numero = 11;  
$resultado = $numero + 5;  
echo $resultado; 
 
?> 

Da como resultado:

16

b. La resta

El operador se designa por -.

Por ejemplo:

<?php 
 
$numero = 11;  
$resultado = $numero - 5;  
echo $resultado;   
 
?> 

Da como resultado:

6

c. La multiplicación

El operador se designa por *.

Por ejemplo:

<?php  
 
$numero = 11;  
$resultado = $numero * 3;  
echo $resultado;   
 
?> 

Da como resultado:

33

d. La división

El operador se designa por /.

Por ejemplo:

<?php   
 
$numero = 10;  
$resultado = $numero / 5;  
echo $resultado;   
 
?> 

Da como resultado:

2

e. El módulo

El módulo es el resto del resultado de dividir el dividendo por el divisor. El operador se designa por %.

Por ejemplo:

<?php  
 ...

Las funciones

1. Creación

Las funciones permiten reutilizar varias veces el código PHP. Por ejemplo, si tiene una página Web con precio sin IVA de diferentes productos, puede crear una función para calcular el precio con IVA de cada producto. Esto evita escribir en cada línea el cálculo en PHP. En su desarrollo, intente agrupar el código. Así el mantenimiento es más fácil. De hecho, cuanto más código escriba, es más probable que cometa errores.

La sintaxis para crear una función es:

función nombre_de_la función ($argumento) { } 

Nunca ponga espacios ni caracteres especiales en el nombre de una función. El parámetro también se llama argumento.

Intente nombrar la función con palabras separadas por el símbolo _ o con mayúsculas que expliquen lo que hace la función, por ejemplo: nombre_de_la_función o NombreDeLaFunción.

Por ejemplo:

<?php 
 
function calculo_iva($precio_bruto) {  
  return $precio_bruto * 1.21;  
}  
 
?> 

Esta función calcula el precio con IVA a partir del precio sin IVA, que pasa como parámetro, y devuelve el resultado a través de la palabra clavereturn. Una función no está obligada a devolver un resultado; puede servir solo para mostrar un mensaje, por ejemplo.

Para recurrir a esta función, escriba lo siguiente:

Por ejemplo:

<?php  
calculo_iva(12);  
?> 

O al final:

<?php  
 
function calculo_iva($precio_bruto) {  
  return $precio_bruto * 1.21;  
}  
$precio_iva = calculo_iva(12);  
echo "12 euros sin IVA corresponden a ".$precio_iva." euros con IVA";  
 
?> 

Da como resultado:

12 euros sin IVA corresponden a 14.52 euros con IVA

El número 12 pasa como parámetro de la función; por tanto $precio_bruto toma el valor 12, y la función devuelve 12*1.21 (14.52) en la variable $precio_iva.

Puede crear funciones que tomen varios parámetros o ningún parámetro. No es posible tener argumentos con el mismo nombre.

En el siguiente ejemplo, la función toma varios parámetros y devuelve un valor:

<?php 
 
function junta_palabra($palabra1,$palabra2,$palabra3) { 
   $devuelve = $palabra1." ".$palabra2."...

Las fechas

En esta sección tratamos todas las funciones PHP que permiten manipular las fechas. Normalmente las fechas se recuperan en un formato coherente con el idioma concreto que utiliza su sistema operativo o su base de datos, y lo que le obliga a Vd. a convertirlas según sus necesidades.

  • La función time() devuelve la hora actual, que se mide en segundos desde el inicio de UNIX (1 de Enero de 1970 00:00:00 GMT). Esta hora también se llama timestamp UNIX.

Por ejemplo:

<?php  
 
echo time();  
 
?> 

Da como resultado:

1524052304

Por tanto, su sintaxis es:

time() 

Esta función se utiliza sobre todo para realizar cálculos con fechas, por ejemplo para encontrar la duración de un procesamiento en la base de datos.

  • La función date() devuelve la fecha en el formato que se ha pasado como argumento.

Por ejemplo:

<?php  
 
echo date('d.m.y');  
 
?> 

Da como resultado:

18.04.18

Por tanto, su sintaxis es:

$fecha_del_dia = date($formato) 

siendo $formato una cadena que contiene las letras que permiten definir el formato.

A continuación mostramos una lista con los principales formatos que se utilizan en la función date. Esta lista no es exhaustiva y puede encontrar más información en el siguiente enlace: http://www.php.net/manual/es/function.date.php

Día

J

Día del mes con dos dígitos sin ningún cero inicial: de 1 a 31.

d

Día del mes con dos dígitos con un cero inicial en la función del día: de 01 a 31.

l

(L minúscula) Día de la semana en inglés: de Sunday a Saturday.

w

Día de la semana con un formato numérico de 0 (domingo) a 6 (sábado).

z

Día del año: de 0 a 366.

Semana

W

Número de la semana en el año (las semanas empiezan el lunes). Ejemplo: 42 (la 42.ª semana del año).

Mes

F

Mes, textual, versión amplia en inglés, como por ejemplo January o December.

m

Mes en formato numérico, con ceros iniciales: de 01 a 12.

n

Mes sin ceros iniciales: de 1 a 12.

t

Número de días en el mes: de 28 a 31.

Año

L

Año bisiesto: 1 si es bisiesto, 0 si no lo es.

Y

Año con cuatro dígitos (por ejemplo, 1999 y 2003).

y

Año con dos dígitos (por ejemplo, 99 y 03).

Hora

a

Ante merídiem y Post merídiem (minúsculas):...

Los archivos

1. Introducción

A veces resulta muy útil almacenar información en un archivo del servidor, en lugar de en la base de datos. Puede ser más rápido y accesible; sin embargo, es menos seguro y pueden surgir errores en la escritura si hay conexiones simultáneas. 

A lo largo de esta sección vamos a ver las funciones más utilizadas.

Para empezar, debe crear un archivo llamado «archivo.txt» en el directorio localweb, es decir, donde están sus páginas PHP. Este archivo debe tener derechos de escritura para poder escribir en ellos. Esto se produce automáticamente cuando trabaja en modo local, pero probablemente tendrá que cambiar los permisos del archivo si lo transfiere por FTP a otra ubicación.

2. Lectura rápida

  • La función file_get_contents() permite leer el contenido de un archivo y lo devuelve en una cadena de caracteres.

En el siguiente ejemplo, el archivo texto contiene la frase "¡Hola!"

<?php 
 
$contenido = file_get_contents('archivo.txt'); 
echo $contenido; 
 
?> 

Da como resultado:

"¡Hola!"

  • La función readfile() también permite leer el contenido de un archivo, pero devuelve el número de caracteres del archivo y muestra automáticamente el contenido.

En el siguiente ejemplo, el archivo de texto contiene la frase "¡Hola!"

<?php 
 
$archivo = 'archivo.txt'; 
$numero=readfile($archivo); 
echo "<br /> El número de caracteres del archivo es:".$numero; 
 
?> 

Da como resultado:

"¡Hola!"

El número de caracteres del archivo es:8

  • La función file() permite leer el contenido de un archivo, pero devuelve el contenido en una tabla, línea por línea.

En este ejemplo, el archivo de texto contiene la frase "¡Hola!", un salto de línea y la frase "Señora ESTEFANIA."

<?php 
 
$tabla = file('archivo.txt'); 
foreach ($tabla as $línea) { 
  echo $línea."<br />"; 
} 
 
?> 

Da como resultado:

"¡Hola!"

"Señora ESTEFANIA."

Cada línea del archivo se vuelve a encontrar en cada elemento de la tabla.

3. Escritura rápida

La función...

Los includes

La función include() es muy útil porque permite llamar a otra página PHP en una página PHP. Si marca include(’funciones.php’), equivale a pegar el código contenido en la página funciones.php en el lugar donde llama a la función include(). Por tanto, esta función recibe como parámetro el nombre de la página PHP que va a incluir.

Por ejemplo, supongamos que tiene una página PHP llamada variable.php que contiene el siguiente código:

<?php 
 
$apellido = "López"; 
$nombre = "Roberto"; 
 
?> 

En su página actual PHP, se llama a include de la siguiente manera:

<?php 
 
include("variable.php"); 
echo $nombre." ".$apellido; 
 
?> 

Da como resultado:

Roberto López

Si su archivo variable.php se encuentra en el directorio inc, el código para llamar a esta página es:

<?php 
 
include("inc/variable.php"); 
echo $nombre." ".$apellido; 
 
?> 

La página PHP se puede especificar con una ruta relativa o absoluta. Una ruta absoluta se marca desde la raíz del disco (por ejemplo, C:\wamp64), mientras que una ruta relativa se marca desde el lugar donde se encuentra su archivo PHP. En el próximo capítulo verá que el archivo php.ini incluye la directiva include_path...

Ejercicios sobre los archivos

1. Enunciados

Ejercicio 1 (fácil): creación de un archivo contador de páginas

Cree un archivo de texto que almacene el número de veces que se visita una página.

Ejercicio 2 (medio): creación de un archivo de información de imágenes

Mueva tres imágenes a un directorio de imágenes y cree una página PHP que cree un archivo de texto que contenga el nombre y el tamaño de estas imágenes. A continuación, copie estas imágenes en un directorio de archivo que esté al mismo nivel que el directorio de imágenes.

Ejercicio 3 (difícil): creación de registro de seguimiento

Cree una página que escriba en un archivo log.txt la fecha y la hora actual y que muestre en microsegundos el tiempo que se tarda en mover tres imágenes del directorio de imágenes al directorio de archivo.

2. Soluciones

Solución del ejercicio 1

Cree un archivo contador.txt y ejecute el siguiente código:

<?php 
 
$recurso = fopen('contador.txt', 'r+'); 
 
$nb_vistas = fgets($recurso); // Lectura de la primera línea que  
                             // contiene el número de páginas visitadas 
if ($nb_vistas == "") { //comprueba si el archivo no contiene aún  
                     //número ...