You are on page 1of 15

PHP.

Introducin
Introduccin
Acrnimo: Originariamente (1994): "Personal Home Page" Actualmente: "PHP: Hipertext Preprocessor"

PHP. Introducin
Lenguaje orientado para la programacin en entorno web Lenguaje de scripting que se inserta en documentos html El cdigo PHP se interpreta en el Servidor Web, generando cdigo html que es enviado al browser

PHP. Introducin
Integracin en la web Embebido (embedded) en una pgina html Servidores Web que soportan PHP o Apache o Mdulo ISAPI para Microsoft Internet Information Server (IIS) o ...

PHP. Introducin
Multiplataforma (GNU/Linux, Windows, Mac) Independiente del Sistema Operativo!

PHP. Ejemplos
Primeros Ejemplos
"Hello World (I)"

El cdigo PHP se inserta dentro del cdigo html utilizando las marcas: o <?php y ?>

<html> <head> <title>PHP Hello World</title> </head> <body> <?php print("Hello World!"); ?> </body> </html>

PHP. Ejemplos
"Hello World" (II) Mostrar informacin : print / echo Aadir comentarios a una lnea: // Sentencias terminan con ;
<html> <head> <title>PHP Hello World</title> </head> <body> <?php // echo y print son equivalentes echo "Hello World!"; ?> </body> </html>

PHP. Ejemplos
"Hello World" (III) Declaracin de variables ($nombreVariable)
<html> <head> <title>PHP Hello World</title> </head> <body> <?php // las variables siempre empiezan con $ $strHello = "Hello"; /* las lneas de cdigo comentadas pueden ocupar ms de una lnea */ print("$strHello World!"); ?> </body> </html>

PHP. Ejemplos
"Hello World" (IVa) Combinacin de tags (etiquetas) html y cdigo PHP
<html> <head> <title>PHP Hello World</title> </head> <body> <b> <?php print("Hello World"); ?> </b> </body> </html>

PHP. Ejemplos
"Hello World" (IV-b) Insertar tags html dentro de un script PHP
<html> <head> <title>PHP Hello World</title> </head> <body> <?php print("<b>Hello</b> <i>World</i>"); ?> </body> </html>

PHP. Ejemplos
"Hello World" Ejemplo slo con PHP! Insertar TODOS los tags html dentro de un script PHP
<?php print print print print print print print print ?> ("<html>"); ("<head>"); (" <title>PHP Hello World</title>"); (" </head>"); (" <body>"); (" <p>Hello World!</p>"); (" </body>"); ("</html>");

PHP. Ejemplos
Con el ejemplo "Hello World" hemos aprendido: Mostrar datos por pantalla: echo o print (son equivalentes) Aadir comentarios o // Esto es un comentario que slo puede ocupar una lnea

/* Esto es un comentario que ocupa ms de una lnea */ Declaracin de variables: o $strHello = "Hello"; // Variable $strHello de tipo String Insertar Tags html dentro de un script PHP: o print("<b>Hello</b> <i>World</i>");

PHP. Ejercicios
Ejercicios Hacer un programa en PHP que escriba vuestro nombre (en negrita) y la ciudad dnde naciste. Hacer un programa en PHP que escriba el resultado de la suma de dos variables (x = -1 e y = 9, por ejemplo).

PHP. Ejercicios
Solucin Ejercicios Hacer un programa en PHP que escriba vuestro nombre (en negrita) y la ciudad dnde vives.
<?php $nombre = "Oscar"; $ciudad = "Barcelona"; print("<p>Mi nombre es: <b>$nombre</b> </p>"); print("<p>Nac en $ciudad</p>"); ?>

Resultado (HTML) del cdigo anterior (con un ejemplo de CSS): Mi nombre es: Oscar Nac en Barcelona Hacer un programa en PHP que escriba el resultado de la suma de dos variables con los valores: x=-1 , y=9.
<?php $x = -1; $y = 9; $suma = $x + $y; print("El valor de x es: <i>$x</i> <br />"); print("El valor de y es: <i>$y</i> <br />"); print("La suma de x e y es: <i>$suma</i>"); ?>

PHP. Ejercicios
Ejercicio de repaso: Detectar los 7 errores:
1. 2. 3. 4. 5. 6. 7. 8. 9. <?php $x = -1; $y = 9; $suma = x print("El <br /> print("El print("La ?>;

+ y; valor de x es <i>$x<i>") valor de y es <i>$y</i><br />"; suma es <b><i>$suma</i></b><br />");

PHP. Ejercicios

Detectar los 7 errores. Solucin:


1. 2. 3. 4. 5. 6. 7. 8. 9. <?php $x = -1; $y = 9; $suma = $x + $y; print("El valor de x es <i>$x</i>"); <br /> => Esto no hace nada aqu !!! print("El valor de y es <i>$y</i><br />"); print("La suma es <b><i>$suma</i></b><br />"); ?>; => Estamos fuera de PHP!. Cual sera el resultado?

PHP. Ejemplos
Trabajando con TAGS (etiquetas) html dentro de PHP El problema de las comillas dobles (")
<?php print("<p><font face="Verdana, sans-serif"> Mi nombre es: <b>scar</b> <br /> </font></p>"); ?> Solucin 1: cambiar " por ' dentro de los TAGS html <?php print("<p><font face='Verdana, sans-serif'> Mi nombre es: <b>scar</b> <br /> </font></p>"); ?> Solucin 2: cambiar " por \" dentro de los TAGS html <?php print("<p><font face=\"Verdana, sans-serif\"> Mi nombre es: <b>scar</b> <br /> </font></p>"); ?>

Solucin 3: Trabajar con CSS, para evitar poner parte del "diseo" dentro del cdigo HTML

PHP. Lenguaje y Sintaxis


PHP. Lenguaje y Sintaxis
Contenido Tipos de datos bsicos (enteros, strings, ...) Estructuras de control de flujo o Sentencias condicionales (if) o Sentencias iterativas (while y for) Tipos de datos estructurados Simples (arrays) Tipos de datos estructurados Complejos (arrays asociativos) Funciones

PHP. Lenguaje y Sintaxis


Tipos de Datos bsicos

Integer (entero, e.g: -1): $x = -1; Double (real, e.g: 1.2e4): $x = 1.2e4; String (cadena de caracteres, e.g: "Hello"): $x = "Hello"; Boolean (Valores posibles: true, false):
o o $x = true; $x = ( $precio1 > $precio2 );

PHP. Lenguaje y Sintaxis


Estructuras de control de flujo (I)
Sentencias condicionales: if [doc. php]
if ( $cantidad < 0 ) { print("Error:: La cantidad es negativa!"); } elseif ( $cantidad < 10 ) { print("La cantidad pedida es menor que 10"); } else { print("La cantidad es: $cantidad"); }

PHP. Lenguaje y Sintaxis


Operadores de comparacin aritmtica [doc. php]
if if if if ( ( ( ( $a $a $a $a == $b ) => IMPORTANTE!!! No hacer: if ( $a = $b ) <> $b ) => Equivalente a hacer: if ( $a != $b ) > $b ) < $b )

if ( $a >= $b ) if ( $a <= $b )

PHP. Lenguaje y Sintaxis


Operadores de comparacin booleana (cierto / falso) [doc. php]
AND ($x e $y son ciertos): $x && $y , $x and $y OR ($x o $y son ciertos): $x || $y , $x or $y NOT (negacin de $x): !$x

PHP. Lenguaje y Sintaxis


Estructuras de control de flujo (II)
Sentencias iterativas: while [doc. php]
$i = 1; while ( $i <= 5 ) { print("$i<br />"); $i++; // equivalente a hacer: $i = $i + 1; }

PHP. Lenguaje y Sintaxis


Sentencias iterativas: for [doc. php]
for ( $i = 1; $i <= 5; $i++ ) { print("$i<br />"); }

PHP. Lenguaje y Sintaxis


Sentencias iterativas: Diferencias entre while y for ?

PHP. Lenguaje y Sintaxis


Tipos de datos estructurados (simples): Array (vector o matriz)
$productos[0] = "Azcar"; $productos[1] = "Aceite"; $productos[2] = "Arroz"; Array (vector) $productos o Los valores 0, 1 y 2 son los ndices del array o "Azcar", "Aceite" y "Arroz" son los valores que contiene el o El vector contiene 3 posiciones pero se indexa de 0 a 2 (!) (otra posible) Inicializacin del array $productos $productos = array("Azcar", "Aceite", "Arroz"); ^ ^ ^ [ 0 ] [ 1 ] [ 2 ]

array

PHP. Lenguaje y Sintaxis


Mostrar el contenido del array $productos (for)
for ($i=0; $i<3; $i++){ print $productos[$i] . "<br />"; }

PHP. Lenguaje y Sintaxis


foreach: Mostrar el contenido del array $productos [doc. php]
$productos[0] = "Azcar"; $productos[1] = "Aceite"; $productos[2] = "Arroz"; print "<ul>"; foreach ( $productos as $producto ) { print "<li>" . $producto . "</li>"; } print "</ul>";

PHP. Lenguaje y Sintaxis


Algunas funciones tiles sobre arrays: count($array). Devuelve el nmero de posiciones del vector sort($array). Ordena el vector shuffle($array). Mezcla (desordena) el vector $array = range(-4, 7);. Genera un array, siendo sus elementos los valores del -4 al 7 (muchas) Ms funciones en la documentacin del lenguaje: http://www.php.net

PHP. Lenguaje y Sintaxis


Lectura de un fichero
$linias = file('datos.txt'); foreach ($linias as $num_linea => $linea) { // Mostrar el contenido de la lnea print htmlspecialchars($linea)."<br />"; }

PHP. Lenguaje y Sintaxis


Tipos de datos estructurados (complejos): Arrays Asociativos Indexar el array por tipos de datos complejos (en lugar de indexarlo con un nmero entero). Normalmente, el ndice del array asociativo es un string
// Definir un array que indique, para cada producto, // cul es su precio $precios["Azcar"] = 1; $precios["Aceite"] = 4;

$precios["Arroz"] = 0.5; (otra posible) Inicializacin del $precios = array( "Azcar" => 1, "Aceite" => 4, "Arroz" => 0.5 );

array $precios

PHP. Lenguaje y Sintaxis


Mostrar el contenido del array $precios (foreach)
$precios = array( "Azcar" => 1, "Aceite" => 4, "Arroz" => 0.5 ); foreach ( $precios as $producto => $precio ) { print "Producto: " . $producto . " Precio: " . $precio . "<br />"; }

PHP. Lenguaje y Sintaxis


Mostrar el contenido del array $precios (while)
$precios = array( "Azcar" => 1, "Aceite" => 4, "Arroz" => 0.5 ); while ( list( $producto, $precio ) = each( $precios ) ) { print "Producto: " . $producto . " Precio: " . $precio . "<br />"; } each($precios). Devuelve el elemento actual del array list($producto, $precio). Vincula el primer campo del array $precios (el nombre del producto) con la variable $producto, y vincula el segundo campo del array $precios (precio) con la variable $precio

PHP. Lenguaje y Sintaxis


Funciones [doc. php]
Declaracin de una funcin nombre_funcion function nombre_funcion ($param1, $param2, ...) { ... return $variable; } Llamada a la funcin nombre_funcion // Variables que se utilizarn

// como parmetros de la funcin $var1 = 3; $var2 = "texto"; // Llamada a la funcin $resultado = nombre_funcion($var1, $var2); // Ahora $resultado ya tieneun valor $var3 = $resultado + $var1;

PHP. Lenguaje y Sintaxis


Declaracin de la funcin sumatorio (suma los n-1 enteros anteriores function sumatorio ($n) { $resultado = 0; while ( $n >= 1 ) { $resultado = $resultado + $n; $n = $n - 1; } return $resultado; } Llamada a la funcin sumatorio(n) $n = rand(1, 20); print("Sumatorio de $n es: ".sumatorio ($n)."<br />");

a n)

PHP. Ejercicios
Ejercicios Implementar la funcin mayor(x, y) Implementar la funcin abs(x)

PHP. Lenguaje y Sintaxis


Envo de datos al servidor
Formularios Envo de parmetros en la URL

PHP. Lenguaje y Sintaxis


Gestin de Formularios html (POST)
Formulario = entrada (y envo) de datos Mediante el uso de formularios, el cliente puede enviar datos al servidor Ejemplos: Introducir un texto para realizar una bsqueda en uno -o varios- sitios web (www.google.com) Entrar en una Intranet (zona restringida), con un nombre de usuario y password Gestin del correo via Web-mail Participar en Foros ... En general, cualquier accin que requiera una comunicacin de datos con el servidor!

PHP. Lenguaje y Sintaxis


Ejemplo de Formulario en html:
<html> <head> <title>Ejemplo de Formularios</title> </head> <body> <FORM METHOD='POST' ACTION='procesar_mensaje.php'> Escribe tu nombre: <INPUT TYPE='text' NAME='nombre'> Escribe tu mail: <INPUT TYPE='text' NAME='mail'> Escribe el mensaje: <TEXTAREA rows='11' name='texto' cols='60'></textarea> <INPUT TYPE='submit' value='Enviar'> </FORM> </body> </html>

PHP. Lenguaje y Sintaxis


Cabecera de un FORMulario:
<FORM METHOD='POST' ACTION='procesar_mensaje.php'> Mtodo de envo (METHOD) = POST (tambin puede ser GET) Accin a realizar (ACTION) = Normalmente la URL de una pgina

web

Cuerpo de un FORMulario:
Escribe tu nombre: <INPUT TYPE='text' NAME='nombre'> ... <INPUT TYPE='submit' value='Enviar'> INPUT TYPE='submit'.

Botn de envo de datos (con el texto Enviar -campo 'value'-)

Cerrar un FORMulario:
</FORM>

PHP. Lenguaje y Sintaxis


Paso 1:
Usuario: 1) Rellena los campos con los datos 2) Enva los datos hacia el servidor

Paso 2:
Servidor: 1) Recibe el formulario con los datos 2) Accin (ACTION) a realizar: ir a la pgina procesar_mensaje.php

PHP permite recoger los valores introducidos en el formulario html Nosotros haremos:
$nombre = $HTTP_POST_VARS['nombre'];

A partir de PHP, versin 4.1.0:


$nombre = $_POST['nombre'];

Y as, del ejemplo anterior tendramos las variables: $nombre, $mail y $texto con los valores introducidos por el usuario

// Pgina formulario.html Escribe tu nombre:

Escribe tu mail:

Escribe el mensaje:

PHP. Lenguaje y Sintaxis


Envo de parmetros en HTTP (GET)
Protocolo HTTP: permite enviar datos al servidor, mediante el uso de paso de parmetros en la URL
http://www.prueba.org/productos.php?cod_prod=4

PHP permite obtener los valores enviados a travs de la pgina y trabajar con ellos Nosotros haremos:
$cod_pro = $HTTP_GET_VARS['cod_pro'];

A partir de PHP, versin 4.1.0:


$cod_pro = $_GET['cod_pro'];

Del ejemplo anterior recibiramos (en la pgina productos.php) la variable: $cod_prod y su valor sera 4

Paso de parmetros (ms de uno)


http://www.prueba.org/productos.php?cod_prod=4&precio=40 Separamos los parmetros mediante el smbolo &

PHP. Lenguaje y Sintaxis


Verificar si un parmetro tiene valor o no: funcin isset() Cuando recibimos parmetros (va POST o GET) en una pgina PHP, podemos verificar si el usuario ha asignado algn valor al parmetro, o bien lo ha dejado en blanco Importante para validar que los datos introducidos son correctos y podemos trabajar con ellos!!! Ejemplo: formluario.html
<FORM METHOD='POST' ACTION='procesar_formulario.php'> Escribe tu nombre: <INPUT TYPE='text' NAME='nombre'> <INPUT TYPE='submit' value='Enviar'> </FORM> procesar_formulario.php // Verificar que la variable $nombre tenga algn valor if ( !isset($HTTP_POST_VARS['nombre']) || $HTTP_POST_VARS['nombre'] == "" ) die("ERROR:: El nombre no tiene ningn valor!"); else $nombre = $HTTP_POST_VARS['nombre'];

PHP. Lenguaje y Sintaxis


Trabajando con Sesiones
Una sesin es la secuencia de pginas que un usuario visita en un sitio web. Desde que entra en el sitio, hasta que lo abandona. Aplicacin tpica: Acceso a una Intranet Una aplicacin tpica para usar sesiones de PHP es para el acceso a una Intranet. Una vez validado el usuario (con username y password), podr entrar en una zona privada del sitio web. Los pasos a seguir podran ser: 1. Formulario para autentificar al usuario (username y password) 2. Acceso a la BD (MySQL, en nuestro caso) para validar que el usuario existe y el password es correcto 3. Una vez validado, creamos una sesin que identifique al usuario (guardando en la sesin el username -por ejemplo-) 4. Durante el tiempo que el usuario est navegando por la Intranet no har falta validarse en cada pgina, sino simplemente verificar que previamente se cre una sesin, que contiene su username

PHP. Lenguaje y Sintaxis


Inicializar (o reiniciar) una sesin:
<? session_start(); print "He inicializado la sesin"; ?>

Aadir una variable a la sesin actual:


<? // Fichero: crear_sesion.php session_start(); $name = "Oscar"; $HTTP_SESSION_VARS["user"] = $name; // $_SESSION['name'] = $name; para versiones >= 4.1.0 print ("Acabo de aadir $name a la sesin actual"); print ("<a href='consultar_sesion.php'>Siguiente</a>"); ?>

Consultar si una variable ($name, por ejemplo) ha sido aadida a la sesin actual:
<? // Fichero: consultar_sesion.php // Reanudar la sesin session_start(); // Consultar si la variable $name existe en la sesin if ( isset($HTTP_SESSION_VARS['name']) ) // $_SESSION['name'] { $name = $HTTP_SESSION_VARS['name']; print("El nombre es $name"); } else { die("Error:: no existe la variable name en la sesin!"); } print ("<a href='terminar_sesion.php'>Terminar la sesin</a>"); ?>

Terminar la sesin actual:


<? // Fichero: terminar_sesion.php session_start(); // Terminamos la sesion actual con la funcion: unset() unset($HTTP_SESSION_VARS['name']); ?>

Cdigo de ejemplo

PHP. Lenguaje y Sintaxis


Algunos detalles (relacionados con el ejercicio Intranet)
session_start() La funcin: session_start() debe ir siempre al principio del fichero, antes de ninguna otra instruccin! header("Location: fichero.php") La funcin: header("Location: fichero.php") permite redireccionar la pgina actual hacia la pgina indicada en el Location: fichero.php Atencin! no se puede hacer ningn print antes de la instruccin header! die(Mensaje) La funcin: die(Mensaje) permite "cortar" la ejecucin del programa PHP -mostrando el mensaje, parmetro de la funcin-

PHP. Lenguaje y Sintaxis


Acceso a una Base de Datos MySQL
<? // Postgrado CPOM-2003 // Ejemplo codigo PHP + acceso a una BD MySQL // Datos de la conexin $host = "localhost"; $user = "userpomXX"; $password = "*****"; $database = "pomXX"; // 1) Abrir una conexin con la base de datos $db = mysql_connect($host, $user, $password); // 2) Seleccionar la base de datos con la cual trabajar mysql_select_db($database, $db); // 3) Consulta SQL $consulta = "select nombre, mail from guestbook"; // 4) Ejecutar la consulta $resultado_consulta = mysql_query($consulta, $db); // 5) Mostrar resultados while ( $fila = mysql_fetch_array($resultado_consulta) ) { print("$fila[mail]<br />"); print("$fila[nombre]<br />"); } // 6) Liberar recursos y cerrar conexin (opcional) mysql_free_result ( $resultado_consulta ); mysql_close ( $db ); ?>

You might also like