Curso PHP 5 || II. PHP en acción

Solución Actividades I

Primero que nada vamos a ver la soluciones planteadas a las actividades.

1.   Busca o dibuja un diagrama de una petición web de una página PHP en la cual intervenga el servicio MySQL y explícalo.



2.   ¿Qué significa que el código PHP es usualmente ‘interpretado por parte del servidor? ¿Qué ventajas se te ocurren de hacerlo así?

Significa que todo el código PHP se interpreta en el servidor que muestra la web, el recibe los datos, y los interpreta y devuelve uno u otro resultado. Generalmente se ejecuta en un servidor web, tomando el código en PHP como su entrada y creando o mostrando datos, páginas web como salida.
Básicamente que puedes interactuar con el usuario de la web, que no se tiene que bajar ningún programa especial ni nada por el estilo para ver tu web en PHP
Actividad enviada por: Nekos

IV.   PHP en acción

Bien, ya explicado lo básico de lo básico y con nuestro entorno de trabajo listo para pasarnos horas y horas codeando vamos a explicar lo básico de PHP.
A partir de aquí intentaré ser muy explicativo con los programas, si hay alguna parte que no se entienda o no se explica a fondo probablemente será porque se explicará en un tema posterior.


<html>
<head><title>Primera web en PHP</title></head>
<body>
<?php 
   
print "Hola mundo!";
?>
</body></html>


Esta primera página web muestra un mensaje de ‘Hola mundo!’ En el navegador, algo muy sencillo pero que nos permite explicar dos cosas:

Delimitadores de PHP

Los delimitadores de PHP son para el final. Es decir, todo lo que haya entre será código PHP.
Otro delimitador es el punto y coma (;) el cual marca el final de una línea en PHP y olvidarse de ponerlo marcará errores en el programa.
Podemos escribir varios comandos en una misma línea de la siguiente forma


<?php 
   
print "Hola mundo!"; print "!!!";
?>


Y su salida es: “Hola mundo!!!!”

Mayúsculas y minúsculas, espacios en blanco

PHP es case sensitive, es decir, reconoce mayúsculas de minúsculas. Por lo tanto no será lo mismo la función funcion que funciOn o FuncIon, es algo importante a recordar dado que nos puede causar problemas con variables o funciones en el futuro. Esta regla no se aplica en palabras clave como print (PRINT, pRint) o similares.
Los espacios en blanco también son importante, el interprete PHP los ignora a final de línea (por eso usamos ;) y también entre palabras, por lo que es lo mismo print   “hola” que print “hola “ o print”hola”.
Pero una correcta tipografía nos dice que usemos print “hola”.

Comentarios:

Un buen hábito es comentar nuestros programas para dar un mejor entendimiento al que los lee. Alguien dijo una vez que un programa que no te estudias durante un mes es como un programa hecho por otra persona.
Hay 2 tipos de comentarios, los de una línea (// o #) o de varias líneas (/* , */)

<?php 
   
//esto es un comentario
   
print "Hola mundo!"; print "!!!"#otro comentario
   /*
      esto es un comentario de varias líneas
   */
?>

 
Cadenas de texto

Para mostrar una cadena de texto por pantalla podemos utilizar el comando print o echo, entre otros.


<?php
   
echo "hola, ";
   print 
'que tal?';
?>


Produce la salida: “hola, que tal?”. Podemos ver que ambos comandos funcionan igual y podemos utilizar tanto ‘ como “ para delimitar el texto.
Pero, ¿qué pasa si queremos mostrar un “? Para conseguir eso utilizaremos el símbolo de escapado ‘\’.


<?php
   
echo "hola ”amigo”, ";
   print 
'que tal?';
?>

 

La salida: “hola “amigo”, que tal?”. El símbolo de escapado puede escaparse a si mismo: \\ = \ o a otros caracteres como “ y ‘.
También se pueden incluir espacios en blanco como:

<?php
   
echo ' Hola 'Amigo',
        que tal va el curso?'
;
?>


Produciendo la misma saluda: “hola ‘amigo’ que tal va el curso?”.


Diferencia entre comillas dobles y sencillas:

La principal diferencia es que las comillas dobles interpretan una variable dentro de ellas, mientras que las simples no.


<?php
   $amigo 
"nax";
   print 
"Hola $amigo";
   print 
'<br />Hola $amigo';
?>

 
Siendo la salida:
Hola nax
Hola $amigo

Otra diferencia es que las comillas dobles tienen más caracteres especiales:

\n   Linea nueva (ASCII 10)
\r   Retorno de carro (ASCII 13)
\t   Tabulación (ASCII 9)
\\   \
\$   $
\”   “
\0…\777   Números octales
\x0… \xFF Números hexadecimales.


También se pueden imprimir bloques de texto de la siguiente manera:


<?php
   
print <<<_HTML_
<html>
<head><title>Menu</title></head>
<body bgcolor="#fffed9" >
Hola!
</body></html>
_HTML_;
?>


Validar cadenas:

La validación es el proceso en el cual se comprueba que la entrada de datos contiene el formato esperado, es decir, si esperamos que el usuario entre un 1 o un 0, tenemos que validar que no  a entrado una ‘a’.
Para cadenas de texto una de las funciones más útiles es trim(), esta función elimina los espacios en blanco al principio y final de una cadena, esto es útil para evitar errores al escribir un usuario o contraseña, por ejemplo. También contamos con la función strlen() que nos indica la longitud de una cadena, útil para saber si la cadena está vacía o cumple un mínimo de longitud

<?php
 $variable 
"Ooops! ";
 
$variable trim($variable);
 echo 
strlen($variable);
?>


En este ejemplo la salida, es decir la longitud de $variable, es 6 (más adelante se explicarán las variables). Originalmente $variable contenía 7 caracteres, pero con trim() eliminamos los espacios en blanco al principio y final de la cadena y por lo tanto la salida del echo es: 6.
Podemos realizar estos mismos pasos de la siguiente forma:


<?php
 $variable 
"Ooops! ";
 
$variable strlen(trim($variable));
 echo 
$variable;
?>


O podríamos hacerlo sobre el echo si no quisiéramos que la variable modificara su valor.
Al hacer comparaciones con if() (explicado más adelante) este distinguirá mayúsculas de minúsculas. Para que esto no ocurra usamos la función strcasecmp().

<?php
 
if ('hola' != 'Hola')
 {
    echo 
"son diferentes";
 }
 if (
strcasecmp('hola''Hola') == 0)
 {
    echo 
"son iguales";
 }
?>


En el primer if() si son diferentes muestra “son diferentes”, en el segundo usamos strcasecmp() para comprobar que son iguales, en caso de que lo sean strcasecmp() devuelve un valor 0, es decir, en el ultimo if quedaría así: if (0 == 0)… Por lo que la salida es: “son diferentes” y “son iguales” respectivamente.

Formatear texto:

La función por excelencia para formatear texto es printf(), a la cual se le pasa una cadena de formato y  un conjunto de elementos a imprimir.

<?php
   $precio 
5$recargo 0.075;
   
printf('La comida cuesta $%.2f'$precio * ($recargo));
?>


La salida es: La comida cuesta $5.38

Como se puede ver, la regla de formato es %.2f y el elemento a imprimir en esa regla es el resultado de $precio * (1 + $recargo). Y ese resultado se formatea con 2 decimales.
Las reglas de formatos de texto comienzan con % y luego incluyen algunos modificadores opcionales:

•   Un carácter de relleno: Si la cadena es más corta de lo esperada se usa este carácter para rellenar (suele ser un espacio o 0)
•   Un signo: Para números, un signo más (+), hace que printf escriba un + delante del número positivo. Para cadenas un menos (-) hace que printf alinee la cadena a la derecha.
•   Un ancho mínimo: El tamaño mínimo que debería tener el valor, si es más corto se usa el carácter de relleno.
•   Un punto y número de precisión: Para números de coma flotante indica cuantos decimales se mostrarán. El ‘.2’ en el ejemplo hace que se muestren 2 decimales.

Después de estos elementos opcionales viene un carácter obligatorio que indica el tipo de valor que se debe imprimir.

d    para números decimales (decimal)
s    para cadenas (string)
f    para números de coma flotante (float)


Para más información sobre printf y sus reglas de formato aconsejo: www.php.net/sprintf

Otras utilidades para formatear el texto están en convertir las mayúsculas y minúsculas de este. Las funciones strtolower() y strtoupper() crean las versiones en mayúsculas y minúsculas, respectivamente, de una cadena.

<?php
   
print strtolower("Hola, CaRola, EsTeBan");
   print 
strtoupper("Hola, CaRola, EsTeBan");
?>


Salida:
hola, carola, esteban
HOLA, CAROLA, ESTEBAN

También disponemos de la función ucwords() para poner en mayúscula la primera letra de cada palabra, es útil combinada con strtolower().

<?php
   
print ucwords(strtolower("FORO Bl4ck-P0rtal"));
?>


Salida: Foro Bl4ck-p0rtal

Otra función de utilidad es substr(), con ella podemos extraer parte de una cadena.


<?php
   
echo substr("HOla estoy aburrido y por eso escribo mucho
         no se olviden de visitar foro.el-hacker y ya que están
         bl4ck-p0rtal.org!!!"
7415);
?>


En este caso la salida es: foro.el-hacker. Es de mucha utilidad para un sistema de noticias o un blog en el cual se quiera mostrar el principio más no el texto completo.
Otra función de texto muy interesante es str_replace(), la cual cambia partes de una cadena.

<?php
   
echo str_replace('[censored]''Bl4ck-p0rtal''Estoy visitando el foro de [censored]!!!!');
?> 



Salida: Estoy visitando el foro de Bl4ck-p0rtal!!!! Esa función se usa mucho para BBCode y templates un tanto peculiares.
 
Números

Hemos acabado de repasar las cadenas de texto y sus principales funciones, así que vamos a tomarnos un tiempo con los números.

Operadores aritméticos

Esta parte no será complicada:



<?php
   
echo 2;
   echo 
17 3.5;
   echo 
10 3;
   echo 
9;
?>


Igual que en el colegio pero este no se equivoca.
Un operador que quizá aquellos que no suelen programar no conozcan es el de división de módulo (%) que no devuelve otra cosa que el resto de una división.

<?php
   
echo 3%2;
?>


El resto es: 1

De momento esto es todo en cuanto a números y operadores :p

Variables:


En todo lenguaje de programación siempre es necesario el guardar datos en un “contenedor”,  tenemos 2 tipos, a estos contenedores se les llama variables y constantes.
Las variables, como su propio nombre indica son “contenedores” de datos que durante el flujo del programa puede cambiar su valor, o contenido.

Todas las variables llevan el símbolo del dólar ($) antes de su nombre e identifica mayúsculas de minúsculas.

<?php
   $variable 
"hola";
   
$Variable "como estás?";
   echo 
$variable $Variable;
?>


Este programa produce la salida: “hola cómo estás?”, dado que ambas variables conllevan diferente nombre, en caso de ser el mismo nombre se substituiría el valor de $variable (“hola”) por el nuevo valor (“como estás”).
Los nombres de variables tienen las siguientes normas:

-   No pueden empezar por un número ($2hot)
-   No aceptan el carácter ‘-‘, ‘@’, ‘¡’, ‘+’ ($no-funciona)

Algunas variables aceptables son:
$_size, $to3at, $mi_comida, etc.

Las variables pueden contener diferentes tipos de datos (enteros, coma flotante, cadenas, booleanos), para asignarle valor a una variable simplemente basta con usar el signo de asignación (=) como se ve en ejemplos anteriores.
Para concatenar datos podemos usar el signo de concatenación (.) y aprovecho para mostrar alguna operación matemática


<?php
   $nombre 
'nax';
   
$apellido '_hh';
   
$completo $nombre $apellido;
   
$precio 20$iva 0.16;
   
$total $precio * ($iva);
?>


Donde $completo contiene: ‘nax_hh’

Adición combinada y concatenación


La adición combinada no es más que aumentar o disminuir el valor de una variable, se puede realizar como en el siguiente ejemplo o: $contador = $contador + 1;.
La concatenación es unir dos cadenas en una misma variable. También se podría hacer $palabra = $palabra. ‘ :D’.


<?php
   $contador 
1;
   
$contador += 1//$contador = 2   
   
$palabra 'hola'
   
$palabra .= ' :D'// $palabra = 'hola :D'
?>


A veces nos vemos en la necesidad de agregar una cadena seguida de una variable.
si tenemos el nombre Nax y queremos agregar una ‘s’ al final el siguiente ejemplo no funcionaria ya que hace referencia a la variable $names y no $name:


<?php
   $name 
'nax';
   echo 
"$names";
?>


Por eso accedemos al recurso de las corchetes para separar la variable del texto.

<?php
   $name 
'nax';
   echo 
"{$name}s";
?>


Actividades II

1.   Localiza los errores en el programa:

<?php
   
print 'How are you?';
   print 
'I'm fine.;
?
?>



2.   Escribe un programa PHP que calcule el coste total de esta comida: Dos hamburguesas a 4.95 € C/U, un batido a 1.95€ y una coca-cola a 85 céntimos. El IVA es de 7.5%.

3.   Modifica el programa anterior para imprimir la solución con formato (printf). Para cada artículo, imprime el precio, cantidad y coste total. Imprime el total de la comida y de la bebida antes del IVA, el total con el IVA.

4.   Escribe un programa que establezca dos variables ($nombre y $apellido). Imprime una cadena que contenga ambos separados con un espacio. Imprime también la longitud.





Versión .doc: II.Lo básico