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.
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
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 (/* , */)
Cadenas de texto
Para mostrar una cadena de texto por pantalla podemos utilizar el comando print o echo, entre otros.
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 ‘\’.
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:
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.
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:
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
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:
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().
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.
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.
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().
Salida: Foro Bl4ck-p0rtal
Otra función de utilidad es substr(), con ella podemos extraer parte de una cadena.
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.
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:
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.
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.
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
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’.
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:
Por eso accedemos al recurso de las corchetes para separar la variable del texto.
Actividades II
1. Localiza los errores en el programa:
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
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 * (1 + $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!!!", 74, 15);
?>
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 + 2;
echo 17 - 3.5;
echo 10 / 3;
echo 6 * 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 * (1 + $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
Publicar un comentario