Funcionamiento de PHP:
Php se escribe directamente dentro del cdigo HTML utilizando etiquetas especiales de inicio y fin <?php?> o <?...?> <html> <head> <title> ejemplo de php</title> </head> <body> <?php echo "<h1 aling='center'> hola a todos!</h1>"; ?> </body> </html> scripts de lado del servidor: para ejecutar scripts del lado del servidor se necesita el interprete php (CGI o modulo), un servidor web y un navegador, es necesario que el servidor web se este ejecutando con php instalado. scripts en la lnea de comando: solo se necesita el interprete php. aplicaciones de interfaz grfica: probablemente php no sea el lenguaje ms apropiado para escribir aplicaciones graficas.
INFORMATICA II
Si el sistema operativo utilizado es Windows, la ruta del directorio raz del servidor es: C:/Apache/Home. All se deben guardar todos los archivos .html y .php, que se quieran ejecutar. Para que el servidor Apache muestre las paginas html o php, se debe hacer la solicitud al servidor web, colocando en la barra de direccin del navegador el siguiente url: http://localhost/archivo.php o http://localhost:#puerto/archivo.php http://localhost/directorio/archivo.php
Ejemplo:
la funcin print() emite o da salida a una cadena de caracteres simple, mientras que echo , da salida a una o ms cadena de caracteres. La instrucciones en php finalizan con el carcter de fin de sentencia ; <html> <head> <title> ejemplo de php</title> </head> <body> <?php echo "<h1 aling='center'> hola a todos!</h1>"; ?></body> </html>
Variables:
Es un contenedor de datos temporal. El nombre de las variables debe comenzar con el smbolo $ seguido con una letra o el carcter underscore (_) luego puede tener una combinacin de letras y numero. Las constante no debe empezar con el smbolo $ Tipo de variables Escalares Ejemplo
$edad
Pgina 2
INFORMATICA II
Pgina 3
INFORMATICA II
Asignacin de variable:
asignacin Por referencia
<?php $var; /*declaracin de una variable con valor nulo*/ $var0=NULL; $var1=esto es una cadena; $var2=2005; $var3=2150.35; $var4=(25*9+18); $var5=$var4; ?>
<?php $origen=valor inicial; $referencia=&$origen; $referencia=nuevo valor; Echo Variable \$referencia: , $referencia; Echo Variable \$origen: , $origen; // en ambos caso se imprime nuevo valor ?>
Arreglos:
Acceso a un Vector $var1=$vector[i]; $vector[j]= $var1; Acceso a una matriz $matriz[fila][columna]= $var;
creacin de un Vector $vector[0]=primer valor; $vector[1]= 2; $vector[2]= 3.2; $vector[n]= ultimo valor;
ING YELMIN PEREZ
INFORMATICA II
$matriz= array(0=>array(0=>00, $arreglo1= array(ana,juan,maria); 1=>01, 2=>02), 1=>array(0=>10, 1=>11, 2=>12), 2=>array(0=>20, $arreglo= array(0=>10, 1=>20, 1=>21, 2=>22)); 3=>30, 4=>40,5=>50); Echo $matriz[1][2]; //imprime 12 Echo $arreglo[3];//imprime 40
Por declaracin <?php $glob1=10; $glob2=20; Function suma(){ global $glob1, $glob2; $glob2=$glob1+$glob2; } Suma(); Echo $glob2; // imprime 30 ?> <?php
Usando $GLOBALS
$glob1=10; $glob2=20; Function suma(){ $GLOBALS[glob2]=$GLOBALS[glob1]+$GLOBALS[glob2]; } Suma(); Echo $glob2; // imprime 30 ?>
Secuencia de escape:
secuencia Significado
Pgina 5
INFORMATICA II
\n \r \t \\ \$ \ \
Nueva lnea Retorno de carro Tabulacin horizontal Barra invertida Signo dlar Comilla doble Comilla simple
Casting de tipo:
tipo (int),(integer) (real),(double),(float) (string) (boolean) (array) (object) conversin Convierte a entero Convierte a double Convierte a cadena Convierte a booleano Convierte a array Convierte a objeto
Significado Retorna true si el argumento es un arreglo Retorna true si el argumento es un booleano Retorna true si el argumento es un punto flotante Retorna true si el argumento es un objeto Retorna true si el argumento es una cadena Retorna true si el argumento es nulo
Operadores aritmticos:
operador
ING YELMIN PEREZ
Significado
ejemplo
Pgina 6
INFORMATICA II
+ * / %
Operadores de comparacin:
Significado
Idntico Diferente Diferente No idntico Mayor que Menor que Mayor igual que Menor o igual que
Operadores lgicos:
operador && And || Or Significado Y lgico Y lgico O lgico O lgico ejemplo $a && $b $a and $b $a || $b $a or $b
Pgina 7
INFORMATICA II
! xor
No O exclusivo
!$a $a xor $b
operador
Significado
ejemplo
Pre-incremento, aumenta el valor de $a en 1 y luego retorna ese valor Post-incremento Pre-decremento Post-decremento
$var=5; $var2=++$var; //$var=5 y $var2=6 $var=5; $var2=$var++; //$var=6 y $var2=5 $var=5; $var2=--$var; //$var=4 y $var2=4 $var=5; $var2=$var--; //$var=4 y $var2=5
Operadores combinados:
ING YELMIN PEREZ Pgina 8
INFORMATICA II
operador += -= *= /= %= .=
Significado Suma y asigna Resta y asigna Multiplica y asigna Divide y asigna Calcula el modulo y asigna Concatena y asigna
ejemplo $a=20; $a+=10; // $a=30 $a=20; $a-=10; // $a=10 $a=20; $a*=10; // $a=200 $a=20; $a/=10; // $a=2 $a=20; $a%=10; // $a=0 $a=hola; $a.=mundo; // $a=hola mundo
Estructuras de control:
Estructuras selectivas: if-else switch Estructuras repetitivas: while for foreach
Estructuras anidadas:
Pgina 9
INFORMATICA II
if (expr1) { sentencia1; } elseif (expr2) { sentencia; } Else{ sentencian; }; Mismo compor tamient o que en C . Las sentenc ias
Switch (expr) { case valor1: sentencia; break; case valor2: sentencia; break; default: }; sentencia;
compuestas se encierran entre llaves. elseif puede ir todo junto. Ejemplo de estructura selectiva if-else: <?PHP if ($sexo == M) $saludo = "Bienvenida, "; else $saludo = "Bienvenido, "; $saludo = $saludo . $nombre; ING YELMIN PEREZ Pgina 10
INFORMATICA II
switch ($extension) { case ("PDF"): $tipo = "Documento Adobe PDF"; break; case ("TXT"): $tipo = "Documento de texto"; break; case ("HTML"): case ("HTM"): $tipo = "Documento HTML"; break; default: } print ($tipo); $tipo = "Archivo " . $extension;
Ciclos:
while While (expr){ sentencia, } Do { sentencia; } while (expr); Do while
INFORMATICA II
Mismo comportamiento que en C Ejemplo de estructura repetitiva while: <?PHP print ("<UL>\n"); $i=1; while ($i <= 5) { print ("<LI>Elemento $i</LI>\n"); $i++; } print ("</UL>\n"); ?> Ejemplo de estructura repetitiva for:
<?PHP print ("<UL>\n"); for ($i=1; $i<=5; $i++) print ("<LI>Elemento $i</LI>\n"); print ("</UL>\n"); ?> Ejercicio 1: programa que muestra un mensaje Ilustra cmo incrustar cdigo PHP en un documento HTML y cmo imprimir desde PHP Ejercicio 2: programa que calcula una tabla de multiplicar Ilustra cmo manejar variables y cmo usar bucles
Funciones:
Los argumentos con valores por defecto deben ser siempre los ltimos: function muestranombre ($nombre, $titulo= "Sr.") ING YELMIN PEREZ Pgina 12
INFORMATICA II
{ print "Estimado $titulo $nombre:\n"; } muestranombre (Fernndez); muestranombre (Fernndez, "Prof."); Salida: Estimado Sr. Fernndez: Estimado Prof. Fernndez: Argumentos por defecto function muestranombre ($titulo = "Sr.") { print "Estimado $titulo:\n"; } muestranombre (); muestranombre ("Prof."); Salida: Estimado Sr.: Estimado Prof.:
Biblioteca de funciones:
Existen muchas bibliotecas de funciones en PHP. Algunos ejemplos: Funciones de manipulacin de cadenas Funciones de fecha y hora Funciones de arrays Funciones de ficheros Funciones matemticas Funciones de bases de datos ING YELMIN PEREZ Pgina 13
INFORMATICA II
Funciones de red Algunas bibliotecas requieren la instalacin de componentes adicionales. Todas las funciones de biblioteca estn comentadas en la documentacin de PHP. Funciones de manipulacin de cadenas explode() Divide una cadena en subcadenas array explode (string separator, string string [, int limit])
rtrim(), ltrim(), trim() Eliminan caracteres a la derecha, a la izquierda o por ambos lados de una cadena string rtrim ( string str [, string charlist])
strstr()
strcmp() / strcasecmp() strlen() Calcula la longitud de una cadena Compara dos cadenas con/sin distincin de maysculas
Funciones de fecha y hora date() Formatea una fecha segn un formato dado Ejemplo: $fecha = date ("j/n/Y H:i"); print ("$fecha"); Resultado: ING YELMIN PEREZ Pgina 14
INFORMATICA II
26/9/2005 17:36 strtotime() Convierte una fecha en un timestamp de UNIX Ejemplo: $fecha = date ("j/n/Y", strtotime(5 april 2001")); print ("$fecha"); Resultado: 5/4/2001 Funciones de arrays array_count_values() Calcula la frecuencia de cada uno de los elementos de un array array_search() Busca un elemento en un array count() Cuenta los elementos de un array sort(), rsort() Ordena y reindexa un array (r=decreciente) ksort(), krsort() Ordena por claves un array (r=decreciente) Variables de servidor:$_SERVER Variables de entorno: $_ENV Coookies HTTP:$_COOKIE Variables HTTP_GET:$_GET Variables HTTP_POST:$_POST Variables de solicitud: $_RESQUET Variables de sesion: $_SESION ING YELMIN PEREZ Pgina 15
INFORMATICA II
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']; Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la informacin de un sitio web Ventajas Proporcionar informacin actualizada Facilitar la realizacin de bsquedas Disminuir los costes de mantenimiento Implementar sistemas de control de acceso Almacenar preferencias de los usuarios
Pgina 16
INFORMATICA II
Instalacin y configuracin de MySQL. 1: descargar Conectarse a la pgina web de MySQL, www.mysql.com Seleccionar la pestaa Developer Zone y dentro de ella la seccin Downloads Elegir la versin estable ms reciente de MySQL Community Server. A fecha de febrero de 2009 es la 5.1 Seleccionar la plataforma Windows y descargar el archivo comprimido a una carpeta temporal
Instalacin y configuracin de MySQL. 2: descomprimir e instalar Descomprimir el archivo descargado en una carpeta temporal Pgina 17
INFORMATICA II
Ejecutar el archivo setup.exe y seguir las indicaciones: Seleccionar instalacin tpica Aceptar la carpeta de instalacin por defecto
Pulsar el botn Finish para terminar la instalacin y pasar a la configuracin del servidor
Instalacin y configuracin de MySQL. 3: configurar Al finalizar la instalacin se ejecuta el asistente para la configuracin del servidor. Seguir sus indicaciones: Elegir la configuracin estndar Seleccionar la instalacin como servicio Windows y Marcar la casilla para lanzar el servidor automticamente al arrancar el sistema Establecer una contrasea para el administrador (root) Pulsar el botn Execute para realizar la configuracin Pulsar el botn Finish para finalizar el asistente Instalacin y configuracin de MySQL. 4: arrancar Si se indic el arranque automtico en la configuracin, el servidor se inicia de forma automtica al arrancar el sistema En caso contrario hay que iniciarlo manualmente con Inicio > Programas > MySQL > MySQL Server 5.1 > MySQL Server Instance Config Wizard
Instalacin y configuracin de MySQL. 5: conectar Formas de establecer la conexin con el servidor: Desde la lnea de rdenes con Inicio > Programas > MySQL > MySQL Server 5.1 > MySQL Command Line Client Enter password: ******** mysql> mysql> exit
Pgina 18
INFORMATICA II
Mediante alguna herramienta que proporcione una interfaz grfica como phpMyAdmin Desde una pgina web mediante la interfaz que proporciona MySQL. Es lo que haremos con la biblioteca de funciones de MySQL que posee PHP
Instalacin y configuracin de MySQL. 5: conectar Para conectar con el servidor hay que crear antes una cuenta de usuario y asignarle los correspondientes permisos de acceso. En general para una base de datos es conveniente definir al menos dos usuarios: Un usuario annimo que tenga permisos de lectura sobre las tablas que se estime adecuado Un usuario administrador que tenga permisos para insertar, modificar o eliminar elementos de las tablas de la base de datos
En cada conexin hay que indicar el nombre del usuario, su contrasea y la mquina desde la que se realiza la conexin (localhost si es la propia mquina donde reside el servidor, que es lo habitual en el acceso desde la Web) Instalacin y configuracin de MySQL. 6: MySQL-PHP En PHP 5 no se instala por defecto la extensin para el acceso a bases de datos MySQL y hay que hacerlo manualmente Se hace de la siguiente manera: Editar el fichero php.ini y habilitar la extensin: extension=php_mysql.dll Aadir la ruta c:\php al PATH del sistema (ver las instrucciones para hacerlo en el fichero install.txt que hay en la carpeta c:\php)
Herramientas de administracin:
PHPMyAdmin: phpMyAdmin es una herramienta para la administracin del servidor de bases de datos MySQL Dispone de una interfaz grfica y es de libre distribucin Permite realizar todo tipo de operaciones sobre bases de datos: crear, borrar y modificar tablas Pgina 19
INFORMATICA II
consultar, insertar, modificar y eliminar datos definir usuarios y asignar permisos realizar copias de seguridad etc
Est escrita en php y se ejecuta desde el navegador Si est instalada en la carpeta phpmyadmin, se ejecuta escribiendo en la barra de direcciones del navegador la url http://localhost/phpmyadmin/ Puede administrar bases de datos locales y remotas
INFORMATICA II
Configurar Ejecutar
Instalacin y configuracin de phpMyAdmin. 1: descargar Conectarse a la direccin http://www.phpmyadmin.net Seleccionar Download Seleccionar la versin ms reciente. A fecha de febrero de 2009 es la 3.1.2
Instalacin y configuracin de phpMyAdmin. 2: descomprimir Descomprimir debajo de la carpeta raz de la web Cambiar el nombre de la carpeta creada a phpmyadmin
Instalacin y configuracin de phpMyAdmin. 3: configurar El fichero de configuracin se llama config.inc.php Este fichero no existe sino que hay que crearlo. Para ello se hace una copia del fichero config.sample.inc.php, situado en la carpeta donde se haya instalado phpMyAdmin, y se le pone como nombre config.inc.php Seguidamente se modifica el fichero config.inc.php Configuracin tpica para un servidor local:
...
$cfg['Servers'][$i]['password'] = 'clave'; //MySQL password ... siendo clave la contrasea asignada al administrador (root) de MySQL durante su instalacin Instalacin y configuracin de phpMyAdmin. 4: ejecutar Ejecutar Apache Abrir el navegador y teclear la url http://localhost/phpmyadmin
Pgina 21
INFORMATICA II
Select Sintaxis:
SELECT expresin FROM tabla [WHERE condicin] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] row_count | row_count OFFSET offset] Ejemplo: SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC Obtiene las noticias del da con un tope mximo de 10, ordenadas de la ms reciente a la ms antigua Insert Sintaxis: INSERT [INTO] nombre_tabla [(nombre_columna,...)] VALUES ((expresin | DEFAULT),...), (...),... INSERT [INTO] nombre_tabla SET nombre_columna=(expresin | DEFAULT), ... Ejemplo: ING YELMIN PEREZ Pgina 22
INFORMATICA II
INSERT INTO noticias (id, titulo, texto, categoria, fecha) VALUES (37, Nueva promocin en Nervin, 145 viviendas de lujo en urbanizacin ajardinada situadas en un entorno privilegiado, promociones, CURDATE()) Inserta una noticia con los valores indicados Update: Sintaxis: UPDATE nombre_tabla SET nombre_columna1=expr1 [, nombre_columna2=expr2 ...] [WHERE condicin] [ORDER BY ...] [LIMIT row_count] Ejemplo: UPDATE noticias SET categoria = ofertas WHERE id=37 Modifica la categora de la noticia con id=37 de la tabla Delete: Sintaxis: DELETE FROM nombre_tabla [WHERE condicin] [ORDER BY ...] [LIMIT row_count] Ejemplo: DELETE FROM noticias WHERE fecha < CURDATE()-10 Borra las noticias con ms de 10 das de antigedad
INFORMATICA II
Enviar la instruccin SQL a la base de datos Obtener y procesar los resultados Cerrar la conexin con el servidor de bases de datos
Las funciones concretas de MySQL que realizan estas operaciones son: Conectar con el servidor de bases de datos: mysql_connect() odbc_connect(dns,userid,password) Seleccionar una base de datos: mysql_select_db() Enviar la instruccin SQL a la base de datos: mysql_query() Obtener y procesar los resultados: mysql_num_rows() y mysql_fetch_array() Cerrar la conexin con el servidor de bases de datos: mysql_close() Odbc_close() Odbc_close_all() Conectar con el servidor de bases de datos: mysql_connect() Devuelve un identificador de la conexin en caso de xito y false en caso contrario Sintaxis: $conexion = mysql_connect (servidor, username, password); Ejemplo: $conexion = mysql_connect (localhost, cursophp, ) or die (No se puede conectar con el servidor);
Pgina 24
INFORMATICA II
$conexion = mysql_connect (localhost, cursophp-ad, php.hph) or die (No se puede conectar con el servidor); Seleccionar una base de datos: mysql_select_db() Devuelve true en caso de xito y false en caso contrario
Sintaxis: mysql_select_db (database); Ejemplo: mysql_select_db (lindavista) or die (No se puede seleccionar la base de datos); Enviar la instruccin SQL a la base de datos: mysql_query() Devuelve un identificador o true (dependiendo de la instruccin) si la instruccin se ejecuta correctamente y false en caso contrario
Sintaxis: $consulta = mysql_query (instruccin, $conexion); Ejemplo: $consulta = mysql_query (select * from noticias, $conexion) or die (Fallo en la consulta); Obtener y procesar los resultados: mysql_num_rows(), mysql_fetch_array() En el caso de que la instruccin enviada produzca unos resultados, mysql_query() devuelve las filas de la tabla afectadas por la instruccin mysql_num_rows() devuelve el nmero de filas afectadas Para obtener las distintas filas del resultado se utiliza la funcin mysql_fetch_array(), que obtiene una fila del resultado en un array asociativo cada vez que se invoca
Sintaxis: $nfilas = mysql_num_rows ($consulta); $fila = mysql_fetch_array ($consulta); Ejemplo: ING YELMIN PEREZ Pgina 25
INFORMATICA II
Obtencin de las filas: $nfilas = mysql_num_rows ($consulta); if ($nfilas > 0) { for ($i=0; $i<$nfilas; $i++) { $fila = mysql_fetch_array ($consulta); procesar fila i-sima de los resultados } } Obtener los resultados: mysql_num_rows(), mysql_fetch_array() Para acceder a un campo determinado de una fila se usa la siguiente sintaxis: $fila*nombre_campo+ $fila[$i] ING YELMIN PEREZ // por ser un array asociativo
INFORMATICA II
Ejemplo: for ($i=0; $i<$nfilas; $i++) { $fila = mysql_fetch_array ($consulta); print Ttulo: . $fila*titulo+; print Fecha: . $fila*fecha+; } Cerrar la conexin con el servidor de bases de datos: mysql_close() Sintaxis: mysql_close ($conexion); Ejemplo mysql_close ($conexion); Ejercicio 1: consulta de noticias Ejercicio simple de acceso a una tabla de una base de datos. Ilustra cmo conectar con una base de datos, enviar una consulta, recuperar los resultados y mostrarlos en pantalla. Pasos previos: Crear la base de datos lindavista Crear la tabla noticias en la base de datos lindavista Crear el usuario cursophp (sin contrasea) Dar al usuario cursophp permiso SELECT sobre la tabla noticias de la base de datos lindavista Ejercicio 2: encuesta Ilustra cmo actualizar una tabla y cmo generar grficos simples Pasos previos: Crear la tabla votos en la base de datos lindavista Dar al usuario cursophp permisos SELECT y UPDATE sobre la tabla votos de la base de datos lindavista
Pgina 27
INFORMATICA II
Ejercicio 3: insercin de noticias Se crear un formulario para insertar las noticias en la base de datos Pasos previos: Crear el usuario cursophp-ad (contrasea: php.hph) Dar al usuario cursophp-ad permisos SELECT e INSERT sobre la tabla noticias de la base de datos lindavista Ejercicio 4: eliminacin de noticias Se crear un formulario para eliminar noticias de la base de datos Primero se seleccionarn las noticias a eliminar de entre todas las existentes y a continuacin se eliminarn Paso previo: Dar al usuario cursophp-ad permiso DELETE sobre la tabla noticias de la base de datos lindavista
Consultas avanzadas:
Objetivo: mostrar los resultados de la consulta divididos en bloques de un nmero determinado de elementos (por ejemplo, de 5 en 5)
Requisitos: Recuperar un nmero limitado de elementos de la tabla Implementar un mecanismo de navegacin que permita avanzar al siguiente o volver al anterior bloque de elementos
Para recuperar un nmero fijo de elementos de una tabla se utiliza la opcin LIMIT de la orden SELECT. As, por ejemplo, SELECT * from noticias LIMIT 0, 5 recupera los 5 primeros elementos de la tabla. Y en general, SELECT * from noticias LIMIT $comienzo, $num recupera $num elementos a partir de la posicin $comienzo
Pgina 28
INFORMATICA II
La variable $num tendr un valor constante (en este caso 5), mientras que la variable $comienzo se incrementar o decrementar en 5 unidades al pasar a la pgina siguiente o anterior Para ello se pasar la variable como parmetro en el enlace asociado al botn correspondiente Por ejemplo, el cdigo para el botn siguiente ser:
"<A HREF='" . $_SERVER['PHP_SELF'] . "?comienzo=" . ($comienzo + $num) . "'>Siguiente</A>" Habr que comprobar previamente que el nuevo valor de comienzo es vlido, es decir, que se encuentra dentro de los lmites de la tabla devuelta por la consulta Ejercicio 5: consulta de noticias con paginado de resultados Ejercicio que ilustra cmo dividir los resultados de una consulta en varias pginas y permitir desplazarse entre ellas Objetivo: Mostrar los resultados de una consulta de manera que se puedan filtrar en funcin del valor de una determinada columna de la tabla Requisitos: Recuperar de una tabla los elementos que cumplan una determinada condicin Permitir seleccionar un valor de entre los valores posibles de una columna Para recuperar los elementos de una tabla que cumplen una condicin se utiliza la opcin WHERE de la orden SELECT. Por ejemplo, SELECT * from noticias WHERE categoria=ofertas recupera las noticias cuya categora tiene el valor ofertas. Y en general, SELECT * from noticias WHERE categoria =$categoria recupera las noticias cuya categora tiene el valor dado por la variable $categoria La variable $categoria se obtendr de un elemento SELECT
Pgina 29
INFORMATICA II
Ejercicio 6: consulta de noticias con filtrado de resultados Ejercicio que ilustra cmo mostrar los resultados de una consulta filtrados en funcin del valor de una columna de tipo enumerado con actualizacin manual al pulsar un botn
Pgina 30