Está en la página 1de 92

Universidad de Cantabria

Introduccin al PHP

Febrero-2006
Programacion en Lenguaje PHP

Ricardo Sez Marta Zorrilla


1

I- Aspectos Generales
Orgenes PHP (Personal Home Page), 1994, inventado por Rasmus Lerdof. Basado en scripts desarrollados en perl, luego reescritos en C. Versin actual PHP5 (sept 2004), presente en 20% de servidores web en internet. 6 lenguaje mas utilizado (C,Java, C++, VB, Perl)

Programacion en Lenguaje PHP

I- Aspectos Generales Caractersticas


Lenguaje interpretado del lado Servidor. Los programas son ejecutados a travs de un intrprete antes de transferir al cliente el resultado en forma de HTML puro. Programas embebidos directamente en el cdigo HTML. Sigue corriente Open Source. Tanto intrprete como cdigo fuente accesibles de forma gratuita en la red (http://www.php.net). Sintaxis muy similar a C, Perl o Java. Lenguaje fcil de aprender

Programacion en Lenguaje PHP

I- Aspectos Generales Caractersticas


Lenguaje multiplataforma (trabaja sobre la mayora de servidores Web y est preparado para interactuar con ms de 20 tipos de bases de datos). Uso de maysculas, minsculas indiferente (!!! Excepcin: identificadores de variables) Formato libre. Las instrucciones deben terminar con ; Comparado con otro tipo de tecnologas similares resulta mas rpido, independiente de la plataforma y ms sencillo de aprender y utilizar.

Programacion en Lenguaje PHP

I- Aspectos Generales Caractersticas


Lenguaje multiplataforma (trabaja sobre la mayora de servidores Web y est preparado para interactuar con ms de 20 tipos de bases de datos). Innumerable cantidad de funciones predefinidas
Correo electrnico. Administracin gestin de base de datos. Gestin de directorios y ficheros. Tratamiento de imgenes. Generacin y lectura de cookies. Generacin de ficheros PDF...

Programacion en Lenguaje PHP

I- Aspectos Generales
Necesidades para programar en PHP
PC Sistema Operativo: Linux, Unix, Microsoft Windows, Mac OS X ...
AppServ Open Project 2.4.5 (MySQL, Apache y PHP)

Servidor Web: Editor de Texto Plano: Apache, IIS, WPS Notepad. Vi, Edit... NotePad++
Apache

Interprete de PHP

Sistema Gestor de BD: MySQL, Ms Access, (http://www.php.net) Informix...


MySQL

Intrprete PHP

Programacion en Lenguaje PHP

I- Aspectos Generales
Primer programa en PHP

< HTML> < HTML> <HEAD> <HEAD> <TITLE>Primer Programa</TITLE> <TITLE>Primer Programa</TITLE> </HEAD> </HEAD> <BODY> <BODY> <?PHP <?PHP echo Mi primer programa; echo Mi primer programa; ?> ?> </BODY> </BODY> </HTML> </HTML> Programa1.php

Programacion en Lenguaje PHP

I- Aspectos Generales
Cmo incrustar cdigo en PHP

Forma ms recomendable

<?PHP .................... .................... .................... ?>

Siempre disponible (no depende de configuracin del Servidor. Especfica de PHP. nica que permite incrustar cdigo PHP en XML y XHTML

Otras formas
<SCRIPT LANGUAGE=php> ......................................... ............... ......................................... ............... </SCRIPT> <? ..................... ........ ..................... ........ ?> <% ..................... ........ ..................... ........ %>

Programacion en Lenguaje PHP

I- Aspectos Generales
Cmo incrustar cdigo en PHP
<?php <?php if ($x<0) { if ($x<0) { $y=1; $y=1; echo Nmero echo Nmero negativo; negativo; } } else { else { $y=2; $y=2; echo Nmero echo Nmero positivo; positivo; } } ?> ?>

<?php <?php if ($x<0) { if ($x<0) { $y=1; $y=1; ?> ?> Nmero negativo Nmero negativo <?php <?php } } else { else { $y=2; $y=2; ?> ?> Nmero positivo Nmero positivo <?php <?php } } ?> ?>

Los scripts pueden ser divididos en bloques y escribir entre ellos HTML puro.

Programacion en Lenguaje PHP

I- Aspectos Generales Elementos bsicos


Identificador: Nombre utilizado para
designar variables, etiquetas, funciones, y dems objetos del programa. Combina letras, dgitos y subrayado. Significativos los 6 31 primeros.

Comentario: Texto explicativo en el


cdigo fuente. Se enmarca entre secuencias /* ..*/, b) // , c) # ..... Son ignorados por el compilador.

Tipos de datos: Naturaleza de los


datos que manipula el programa. entero coma flotante cadena array o matriz objetos

Programacion en Lenguaje PHP

10

I- Aspectos Generales Elementos bsicos


Tipo de dato entero decimal 1 123 2100 -12 90 entero hexadecimal 0x80 /* 128 en dec.*/ 0x21B /* 539 en dec.l */ entero octal 0x12; /* 10 en decimal */ coma flotante 123.23, -76.00001, 1.4e3 cadena programa en PHP programacion OO Ejemplos de valores

Programacion en Lenguaje PHP

11

I- Aspectos Generales Elementos bsicos


Variables: Posicin de memoria con nombre. Mantiene valores que pueden variar en el programa. No necesitan declararse. No tienen tipo predefinido, puede asignarse cualquier valor. Nombres de variables comienzan con $ En nombres de variables si se distingue maysculas-minsculas. Se forman por combinacin de letras, dgitos y subrayado. Vlidas letras acentuadas y Una variable puede reutilizarse asignndose datos, incluso de tipos distintos.

Programacion en Lenguaje PHP

12

I- Aspectos Generales Elementos bsicos


Variables: Se pueden reutilizar en el tiempo, incluso dndoles valores de diferentes tipos. Adems de variables definidas por el programador, existen variables predefinidas a las que se tiene acceso desde los scripts. Puede haber nombre de variables que sean a su vez variables
<?PHP <?PHP $variable=x; $variable=x; .... .... $$variable=150; $$variable=150; $x=150 $x=150 ?> ?>

//equivale a //equivale a

Programacion en Lenguaje PHP

13

I- Aspectos Generales Elementos bsicos


Ejemplos Variables vlidas: $x, $da_de_maana, $variable2 Variables no vlidas: x, $da-de-maana, $2variable, $dto%

Asignacin de variables:

<?PHP <?PHP $x=5; $x=5; $y=3; $y=3; echo x=$x<BR>y=$y; echo x=$x<BR>y=$y; $x=5*$x*$y; $x=5*$x*$y; echo x=$x<BR>y=$y; echo x=$x<BR>y=$y; ?> ?>

Programacion en Lenguaje PHP

14

I- Aspectos Generales Elementos bsicos


Variables Funciones para conocer el tipo de dato que guarda una variable: gettype() is_array() devuelve el tipo de la variable. determina si contiene un array.

is_float() determina si contiene un nm. en coma flotante. is_int() determina si contiene un nmero entero. is_object() determina si hace referencia a un objeto. is_string() determina si contiene una cadena de caracteres.
Programacion en Lenguaje PHP 15

I- Aspectos Generales Elementos bsicos


Otras funciones de inters: isset() Permite conocer si una variable ha sido definida. Importante para saber si se han recibido todos los datos de un formulario. unset() Permite eliminar una variable. Borra el contenido de la misma y libera el espacio en memoria que ocupaba.

empty() Permite saber si una variable que existe tiene un valor nulo o vaco

Programacion en Lenguaje PHP

16

I- Aspectos Generales Elementos bsicos


Variables La primera vez que se usa una variable y se le da un valor, automticamente PHP le asigna un tipo a dicha variable. Si el valor asignado cambia de tipo, implcitamente se produce una conversin de tipo en la variable.

El programador puede forzar la conversin de una variable de dos formas Mediante el uso de la funcin settype() $b=settype($a, string); Mediante el operador de conversin $b=(integer)$a; tambin llammado cast

Programacion en Lenguaje PHP

17

I- Aspectos Generales Elementos bsicos


3 localizaciones: - fuera de todas las funciones, en el script del documento (globales) - en cuerpo de las funciones (locales) - en definicin de parmetros (parmetros formales) Ambito de una variable; en que lugares una variable es conocida y puede ser usada (*) Por defecto tienen mbito global

Variables globales:
Se conocen en todo el programa documento Se declaran fuera de las funciones Existen en todo el documento, incluso si hay varios scripts. Pueden ser referenciadas dentro de una funcin solo si se declaran como global dentro de la funcion.
Programacion en Lenguaje PHP 18

I- Aspectos Generales Elementos bsicos


Ejemplo1: Uso de variables globales <? PHP .. $radio=100; $pi=3.141568; .. ?> . <? PHP . $area= $radio*$pi; ................ ?> Ejemplo2: Uso de variables globales dentro de una funcin $iva=1.17; function importe_total ($bruto) { global $iva; $i=$bruto*$iva; return $i; }
Programacion en Lenguaje PHP 19

I- Aspectos Generales Elementos bsicos


Variables locales:
Se declaran dentro de la funcin Slo pueden ser referenciadas dentro de la funcin o bloque donde fueron declaradas Slo existen mientras se ejecuta el bloque donde estn declaradas. el uso de variables locales ayuda a prevenir fenmenos no deseados las variables locales no pueden retener sus valores entre llamadas a la funcin

Parmetros formales:
Si una funcin utiliza argumentos, debe declarar las variables que van a aceptar los valores de los argumentos (parmetros formales). Se comportan como var. locales
Programacion en Lenguaje PHP 20

I- Aspectos Generales Elementos bsicos


Ejemplo-1: uso de variables locales y parametros .. function importe_final ($precio) { $x=$precio*1.17; return $x; } function descuento ($importe) { $x=$importe; if ($importe > 20000) $x=$importe-$importe*0.25; return $x; } .. Ejemplo-2: uso de parametros function cuadrado ($valor) { return ($x*$x); }
Programacion en Lenguaje PHP

21

I- Aspectos Generales Elementos bsicos


Constantes: Valores fijos no alterables
por el programa. Son los valores que asignamos a las variables. Solo pueden definirse constantes con valores escalares (nmeros o cadenas) La definicin de constantes se realiza con la funcion define() Los identificadores de constantes no comienzan con $ de las variables Por convenio se usan maysculas para los identificadores de constantes. Las constantes no tienen restriccion de mbito.

Programacion en Lenguaje PHP

22

I- Aspectos Generales Elementos bsicos


Ejemplo-1: uso de constantes define(NOMBRE_EJERCICIO, Ej-1); define (DESCUENTO, 0.25); define(TIPO_IVA,1.17); define (IMPORTE_MAXIMO, 20000); echo NOMBRE EJERCICIO; $importe=$importe*(1+TIPO_IVA); if ($importe >IMPORTE_MAXIMO) { $importe =$importe*(1-DESCUENTO); } echo $importe; ..

Programacion en Lenguaje PHP

23

I- Aspectos Generales Elementos bsicos


Secuencias de Escape: permiten representar caracteres no imprimibles (retorno de carro, tabulacin, etc), y confiere portabilidad al cdigo. \n salto de lnea \r retorno de carro \ comilla doble \ comilla simple \0 nulo \t tabulacin horiz. \\ barra invertida \N carcter cuyo codigo ASCII en octal es N \xN carcter cuyo codigo ASCII en hexadecimal es N Ejemplo: echo El radio=$radio\tArea=$area\nFin; El radio=1 Fin Area=3.14

Programacion en Lenguaje PHP

24

I- Aspectos Generales Elementos bsicos


Cadenas de caracteres: Las cadenas son arrays de caracteres por lo que se puede acceder a los diferentes caracteres que la forman de manera individual mediante su ndice. cadena[1] accede al segundo carcter guardado en la variable cadena Para su definicin se pueden utilizar como delimitadores las comillas simples o las dobles pero no ambas a la vez. La diferencia entre el uso de comillas dobles y simples como delimitadores de cadenas es, adems de las secuencias de escape que acepta, que las variables dentro de una cadena con comillas dobles se expanden (se sustituyen por su valor).
Programacion en Lenguaje PHP 25

I- Aspectos Generales Elementos bsicos


Cadenas de caracteres y variables: Existe otra forma de expandir variables dentro de cadenas que PHP hereda de Perl <<<NOMBRE_IDENTIFICADOR ............................ NOMBRE_IDENTIFICADOR

<?PHP $edad=54; <?PHP $edad=54; echo mi edad es $edad<BR>; echo mi edad es $edad<BR>; echo mi edad es ..$edad .. echo mi edad es $edad <BR>; <BR>; echo <<<TEXTO echo <<<TEXTO mi edad es $edad<BR> mi edad es $edad<BR> TEXTO; ?> TEXTO; ?>

Programacion en Lenguaje PHP

26

I- Aspectos Generales Elementos bsicos


Operadores:
En PHP hay 5 clases - aritmticos - relacionales - lgicos - a nivel de bits - especiales

Programacion en Lenguaje PHP

27

I- Aspectos Generales Elementos bsicos


aritmticos: pueden aplicarse a casi todos los tipos de datos numricos.
operadores - resta, tambin monario + suma * multiplicacin / divisin (si operandos enteros, divisin entera) % divisin en mdulo (resto divisin entera) -- decremento (precede/sigue a operando) ++ incremento (precede/sigue a operando)
Ejemplo1: $x=10; $y=++$x; /* x=11, y=11 */ Ejemplo2: x=10; $y=$x++; /*x=11, y=10 */

Ejemplo3: $x=10; $y=2*--$x; $z= ++$x-$y--; /* x=10, y=17, z=-8 */

Programacion en Lenguaje PHP

28

I- Aspectos Generales Elementos bsicos


relacionales : pueden aplicarse sobre los datos predefinidos y dan como resultado un valor lgico.
operadores > mayor que >= mayor o igual que < menor que <= menor o igual que == igual que === igual que + son del mismo tipo != distinto de !== distinto que + son de distinto tipo

Programacion en Lenguaje PHP

29

I- Aspectos Generales Elementos bsicos


Ejemplo-1: $x=10; $y=30; if ($x=$y) /* $x ==$y */ echo los dos valores son iguales; else echo los dos valores son diferentes; Resultado-1: ??????????? Ejemplo-2: $x=10000; $y=10000; if ($x==$y) /* $x ===$y */ echo verdadero; else echo falso; Resultado-2: ???????????

Programacion en Lenguaje PHP

30

I- Aspectos Generales Elementos bsicos


lgicos: se aplican sobre operandos lgicos y dan como resultado un valor lgico.
operadores && Y $x&&$y cierto si tanto $x como $y son cierto and Y $xand$y cierto si tanto $x como $y son cierto || O $x || $y cierto si $x $y son cierto or O $x or $y cierto si $x $y son cierto xor O exclusivo $x xor $y cierto si $x $y cierto, no ambos ! negacin !$x cierto si $x tiene valor falso
Programacion en Lenguaje PHP 31

I- Aspectos Generales Elementos bsicos


a nivel de bits vlidos para tipo entero.
operadores & AND $x & $y | OR $x | $y ^ O exclusiva &x ^ & - complemento a 1 -$x >> desplazamiento a derecha << desplazamiento a izquierda

nota: variable >> nmero posiciones en bits /* dividir */ variable << nmero posiciones en bits /*multiplicar */

Programacion en Lenguaje PHP

32

I- Aspectos Generales Elementos bsicos


otros operadores: operador ? (condicional) se utiliza con sentencias condicionales
formato exp1?exp2:exp3;
evala exp1, si cierto, se evala exp2 y toma ese valor para la expresin. Si exp1 es falsa, evala exp3 tomando ese valor para la expresin. Ejemplo $par= ($n %2 ==0) ? 1:0;

operador . (concatenacin) permite concatenar cadenas


formato cadena1.cadena2
Ejemplo $titulo1= Lenguaje; $titulo2=PHP; $titulo=$titulo1. de programacion.$titulo2;
Programacion en Lenguaje PHP 33

I- Aspectos Generales Elementos bsicos


operador @ (supresin de error)
el interprete PHP no genera mensajes de error aunque detecte situaciones errneas Ejemplo $y= @(1/0);

operador ` (ejecucin)
la expresin encerrada entre acentos debe ser tratada como una sentencia a ejecutar directamente por el sistema operativo Ejemplo <?php $x=`dir`; echo <pre> $x </pre>; ?> /* genera una pagina web con el contenido del directorio donde est */
Programacion en Lenguaje PHP 34

I- Aspectos Generales Elementos bsicos


operador cast (conversin de tipo)
formato (tipo) expresion;
Ejemplo $x=(int) 15.65; $p= (string) 2006;

Programacion en Lenguaje PHP

35

I- Aspectos Generales Elementos bsicos


operadores parntesis y corchetes
los primeros cambian la precedencia natural de los operadores, los segundos llevan a cabo la indexacin de arrays (proporcionan el ndice del array)

Resumen de precedencias:
Mayor () [ -> . ++ --(cast), @ */% +. (concatenacion) << >> << = >> = ==, ! =, === &, ^, |,&&,|| condicional asignacion and, or, xor Menor I-D D-I I-D (aritmticos) I-D (aritmticos) I-D I-D (relacionales) I-D (relacionales) I-D (relacionales) I-D (lgicos) I-D I-D (lgicos)

Programacion en Lenguaje PHP

36

I- Aspectos Generales Elementos bsicos


Expresiones: Es cualquier combinacin vlida de operadores, variables y constantes.

Programacion en Lenguaje PHP

37

II- PHP y los Formularios


HTML
Formularios HTML: Forma principal de interactuacin con el usuario. Cada dato que el usuario introduzca en el correspondiente campo del mismo El parmetro NAME de los campos de un formulario sirven para poder identificar cada campo dentro del formulario Envo de datos a programas PHP 1. Indicar en el parmetro ACTION, de la etiqueta FORM, el nombre del documento PHP al que deben ser enviados los datos. 2. El documento PHP recibir variables con los datos que el usuario introdujo en los campos del formulario. El nombre de las variables coincidir con el nombre de los campos del formulario.
Programacion en Lenguaje PHP 38

II- PHP y los Formularios


HTML
Mtodo de acceso a las variables del formulario Primer mtodo (vlido desde php 4.1): $_REQUEST[nombre_control], $_POST[nombre_control], $_GET[nombre_control]. Segundo mtodo o estilo corto: Necesidad de configurar en archivo php.ini del intrprete de php el siguiente parmetro : register_globals=on. $nombre_control. Tercer mtodo (vlido independientemente del servidor): $HTTP_POST_VARS[nombre_variable], $HTTP_GET_VARS[nombre_variable].
Programacion en Lenguaje PHP 39

II- PHP y los Formularios


HTML
Tratamiento de formularios con listas de seleccin multiples
Si se desea que se transfieran al script todas las opciones seleccionadas por el usuario, el correspondiente campo no puede tener un nombre simple si no que debe tener un nombre acabado en [] para indicar que lo que se va a guardar es un array de valores.

Ejemplo de paso de valores a formulario


<HTML> <HTML> <HEAD> <HEAD> <TITLE>Numero par oo <TITLE>Numero par impar</TITLE> impar</TITLE> </HEAD> </HEAD> <BODY> <BODY> <FORM <FORM ACTION=procesar.php ACTION=procesar.php METHOD=post> METHOD=post> Introduzca un nmero Introduzca un nmero entero: entero: <INPUT type=text <INPUT type=text name=txtNumero> name=txtNumero> <br> <br> <INPUT type=submit <INPUT type=submit name=btnAceptar> name=btnAceptar> </FORM> </FORM> </BODY> </BODY> </HTML> </HTML> <HTML> <HTML> <HEAD> <HEAD> <TITLE>Numero par oo <TITLE>Numero par impar</TITLE> impar</TITLE> </HEAD> </HEAD> <BODY> <BODY> <?php <?php ifif (!is_int($_POST[txtNumero])) (!is_int($_POST[txtNumero])) print Valor introducido print Valor introducido no es entero; no es entero; elseif elseif ($_POST[txtNumero]%2 == 0) ($_POST[txtNumero]%2 == 0) print El nmero es par; print El nmero es par; else else print El nmero es print El nmero es impar; impar; ?> ?> </BODY></HTML> </BODY></HTML>
40

Programacion en Lenguaje PHP

III- Sentencias de Control introduccin


Son aquellas que permiten alterar el orden secuencial habitual en la ejecucin de sentencias.
condicionales (if, switch) iterativas (while, for, do-while, foreach) de salto (break, continue, goto, return) de etiquetado (case, default, label) de expresin (expresiones vlidas) de bloque ({})

En php cualquier valor distinto de 0 se considera true, 0 se considera falso. Sentencia. Puede ser simple, bloque o ninguna.

Programacion en Lenguaje PHP

41

III- Sentencias de Control condicionales


if
forma general if (expresin) sentencia; else sentencia;
Descripcin si expresin es cierta (cualquier valor distinto de 0), se ejecuta la/s sentencia/s objeto del if, sino las del else

if anidado
Es una variante del if consistente en una sentencia if objeto de otro if o else. En PHP, al igual que en C, el else est asociado al if ms prximo que no tenga sentencia else asociada

Programacion en Lenguaje PHP

42

III- Sentencias de Control condicionales


escala if-else-if
Es una variante del if consistente en una sentencia if objeto de otro if o else. Si todas las condiciones fallan se ejecuta la sentencia else final (o nada si no hay) Formato if (expresin1) sentencia; else if (expresion2) sentencia; else if (expresin3) sentencia; . . else sentencia;

Programacion en Lenguaje PHP

43

III- Sentencias de Control condicionales


Si en lugar de tratar una sentencia simple en una clusula if, es preciso tratar un conjunto de ellas se emplear el bloque
{ sentencia1; ... sentencian; }

Sintaxis alternativa: PHP admite sintaxis alternativa para delimitar el bloque (til para fraccionar una estructura en dos scripts)
if (condicion) : sentencia1; .. sentencian; endif;
Programacion en Lenguaje PHP 44

III- Sentencias de Control condicionales


if (condicin1) : sentencia(s) a ejecutar si la condicin 1 se cumple elseif (condicin2) : sentencia(s) a ejecutar si la condicin 2 se cumple ... else : sentencia(s) a ejecutar si ninguna de las condiciones anteriores se cumplen endif;

Programacion en Lenguaje PHP

45

III- Sentencias de Control condicionales


switch
sentencia de seleccin multiple forma general switch (expresin) { case constante1: secuencia de sentencias break; case constante2: secuencia de sentencias break; .... default: secuencia de sentencias; }
Descripcin Se comprueba el valor de expresin y se compara por orden con las constantes especificadas en las clasulas. Cuando se encuentra correspondencia se ejecuta la secuencia de sentencias asociadas a ese case hasta el break o hasta el final de switch. Si no hay correspondencia se ejecuta las correspondientes a default.
Programacion en Lenguaje PHP 46

III- Sentencias de Control condicionales


La sentencia switch se diferencia de la if en que slo puede comprobar la igualdad No puede haber dos constantes case en el mismo switch que tengan igual valor. Si se utilizan constantes carcter en las clasulas switch, se transforman a sus valores enteros Puede haber case con sentencias vacas Si no hay break, la ejecucin de un case continua en el siguiente, hasta que se encuentre o termine el switch La sentencia switch dispone de una sintaxis alternativa (: ....end switch)
Programacion en Lenguaje PHP 47

III- Sentencias de Control condicionales


switch (expresin) { case valor1: sentencia(s) a ejecutar si se cumple la condicin break; case valor2a: case valor2b: sentencia(s) a ejecutar si se cumple la condicin break; ... default: sentencia(s) a ejecutar si ninguna de las condiciones anteriores se cumplen }

Programacion en Lenguaje PHP

48

III- Sentencias de Control iterativas


Permiten que un conjunto de instrucciones sea ejecutado hasta que se alcance una condicin (predefinida como en el for, o sin final determinado como en while o do-while)+ foreach

for
forma general for (inicializacin; condicin; incremento) sentencia; Descripcin inicializacin-> sentencia de asignacin para iniciar variable de control de ciclo. condicin -> expresin relacional. incremento -> determina como cambia la variable de control.

Programacion en Lenguaje PHP

49

III- Sentencias de Control iterativas


while
forma general while (condicion) sentencia;
Descripcin se evala condicin, si es cierta se ejecuta sentencia. Si condicin es falsa se sale del bucle

do-while
analiza la condicin a final del ciclo. forma general do { sentencia; } while (condicion);
Descripcin el bucle itera hasta que la condicin se hace falsa.

Programacion en Lenguaje PHP

50

III- Sentencias de Control iterativas


foreach
forma general
foreach (nombre_array as nombre_variable) { sentencia(s) a ejecutar para cada elemento del array }

Sentencia incorporada en la versin php 4.0. (*) Permite recorrer todos los elementos de un array de una forma muy simple. En la primera iteracin la variable contendr el valor del primer elemento del array nombre_array en las siguientes iteraciones los sucesivos valores hasta recorrer todos los elementos del array

Programacion en Lenguaje PHP

51

III- Sentencias de Control iterativas


while (expresin) { sentencia(s) a ejecutar si se cumple la condicin } while (expresin) : sentencia(s) a ejecutar si se cumple la condicin endwhile;
for (inicializacin; condicin; modificacin) { sentencia(s) a ejecutar si se cumple la condicin }

for (inicializacin; condicin; modificacin) : sentencia(s) a ejecutar si se cumple la condicin endfor; do { sentencia(s) a ejecutar si se cumple la condicin } while (expresin);
Programacion en Lenguaje PHP 52

III- Sentencias de Control salto


Sentencia BREAK y CONTINUE Permiten alterar la ejecucin prevista de una estructura iterativa
BREAK: - Cancela completamente la ejecucin del bucle. - Es utilizada, adems, en la sentencia SWITCH. CONTINUE: - Cancela una de las iteraciones pasando directamente a la siguiente.

Dentro de un bucle, ambas sentencias admite el uso de un parmetro opcional que indica: Nmero de estructuras de control de las que hay que salir o Nmero de niveles a saltar para continuar la ejecucin (break n; continue n;).

Programacion en Lenguaje PHP

53

III- Sentencias de Control otras


de expresin cualquier expresin vlida C seguida de punto y coma
Ejemplo: func(); a=b+c; b+f(); ;

de bloque grupo de sentencias relacionadas que se tratan como una unidad Los bloques comienzan con { y concluyen con } Se pueden colocar en cualquier punto de programa
Programacion en Lenguaje PHP 54

IV- Funciones Introduccin


Es la base de toda actividad de programa forma general function NombreFuncion (argumentos) { sentencias; return ValorDevuelto; } Ejemplo-3.1 /* calcula basen */ function potencia ($base, $n) { int i,p; $p=1; for ($i=1;$i<=$n; $i++) $p=$p*$base; return $p; }

Programacion en Lenguaje PHP

55

IV- Funciones llamada


Llamada a las funciones: La funcin debe de estar definida antes de realizar la llamada (en PHP 4 y 5, no) En la llamada, los argumentos deben pasarse en el orden en que aparecen en la definicin de parmetros. Si se pasan menos argumentos que parmetros definidos, los ltimos se asumirn nulos Si la funcin devuelve un valor, este puede asignarse a yuan variable o ser usado en otra expresin. Ejemplo-3.2 con la funcin anterior, las siguientes llamadas son validas $x=2; $y=3; $z=potencia($x,$y); $z=potencia(2,3); $x=2; Echo POTENCIA($x,3); $z=suma(2,3);
Programacion en Lenguaje PHP 56

IV- Funciones Argumentos


argumentos: es una de las formas en que dos funciones intercambian informacin. argumento: valor usado en una llamada a funcin (tambin parmetro actual) parmetro: nombre de las variables locales que aparecen entre parntesis en la declaracin de la funcin (tambin parmetro formal). En PHP todos los argumentos pueden ser considerados opcionales

Programacion en Lenguaje PHP

57

IV- Funciones Argumentos


Ejemplo-3.3 /* Potencias */
<? PHP

function Potencia ($base, $exp) { $p=1; for ($i=1;$i<=$exp;$i++) $p=$p*$base; return $p; }
?> <HTML> <HEAD> <TITLE> Ejemplo de potencias </TITLE> </HEAD> <BODY> <? PHP

$b1=2; $b2=-2; for ($i=0;$i<10; $i++) { echo potencia($b1,$i); echo potencia($b2,$i); echo potencia(potencia($b1,$b2),$i); } ?>
</BODY> </HTML>
Programacion en Lenguaje PHP 58

IV- Funciones Argumentos


- los parmetros formales y actuales deben ser del mismo tipo. - al definir funciones pueden darse valores por defecto a los argumentos: si no est presente en la llamada se le asigna ese valor defecto (asignar parmetro a valor) - listas de argumentos de longitud variable: permitido a partir de PHP4 (ejemplo 3.4)

Programacion en Lenguaje PHP

59

IV- Funciones Argumentos


Ejemplo-3.4 /* Listas de argumentos de longitud variable */
<? PHP

function suma () { $n=func_num_args(); $aux=0; for ($i=1;$i<$n;$i++) $aux += func_get_arg($i); return aux; } print suma (2,5,6). <BR>; print suma (1,5,7,2). <BR>; print suma ().<BR>; ?> Resultado: 13 15 0

Programacion en Lenguaje PHP

60

IV- Funciones Paso de parmetros


Paso de parmetros: definen la forma en que pasan argumentos a las funciones. Llamada por valor: se copia el valor del argumento en el parmetro formal de la funcin. Los cambios en los parmetros de la funcin no afectan a las variables que se usan en la llamada. Llamada por referencia: se copia la direccin del argumento en el parmetro formal de la funcin. Los cambios en los parmetros de la funcin afectan a las variables que se usan en la llamada.
Programacion en Lenguaje PHP 61

IV- Funciones Paso de parmetros


- Para indicar que un argumento se pasa por referencia, se debe anteponer & al nombre de la variable en la lista de parmetros. Ejemplo-3.5: /* ppv-cuadrado de un valor dado */ function cuadrado ($x) { $x=$x*$x; return $x; } ..... $t=10; print ($t,cuadrado($t)); ....

Programacion en Lenguaje PHP

62

IV- Funciones Paso de parmetros


Ejemplo-3.6: /* suma de dos nmeros */ <? PHP Opcin-1: function suma($x,$y) { Opcin-2: function suma(&$x,&$y) { $c=$x+$y; $x+=10; $y*=3; return ( $c); } ?> <HTML> <HEAD> <TITLE> Ejemplo de SUMAS </TITLE> </HEAD> <BODY> <? PHP $a=10; $b=10; $c=0; echo valores a sumar: a=$a,b=$b); print (Antes: suma=$c, a=$a, b=$b <BR>); $c=suma($a,$b); print (Despues: suma=$c, a=$a, b=$b <BR>); ?> </BODY> </HTML>
Programacion en Lenguaje PHP 63

IV- Funciones Paso de parmetros


Ejemplo de SUMAS opcion-1: (ppv) Valores a sumar: a=10, b=10 Antes: suma=0, a=10, b=10 Despues: suma=20, a=10, b=10 opcion-2: (ppr) Valores a sumar: a=10, b=10 Antes: suma=0, a=10, b=10 Despus: suma=20, a=20, b=30

Programacion en Lenguaje PHP

64

IV- Funciones Paso de parmetros


Ejemplo-3.7 intercambio de dos valores <? PHP function intercambio (&$x, &$y) { $temp=$x; $x=$y; $y=$temp; } ?> <HTML> <HEAD> <TITLE> Ejemplo INTERCAMBIO </TITLE> </HEAD> <BODY> <? PHP $x=10;$y=20; print(valores iniciales x=$x,y=$y <BR>); inter($x,$y); printf(valores finales x=$x,y=$y BR>); ?> </BODY> </HTML>
Programacion en Lenguaje PHP 65

IV- Funciones Ambito de las variables


reglas de mbito: controlan si un fragmento de cdigo conoce o tiene acceso a otro segmento de cdigo o datos. - Toda variable definida dentro de una funcin tiene mbito local. - Una variable declarada fuera de una funcin tiene un mbito global y no puede ser usada dentro si no se declara global - Variable esttica local: tipo especial de variable local que no pierde su valor cuando termina la ejecucin de la funcin. Precisa usar static en su declaracin

Programacion en Lenguaje PHP

66

IV- Funciones conceptos varios


sentencia return: tiene dos usos: - forzar la salida inmediata de la funcin - devolver valor clasulas include y require: permiten insertar en un programa cdigo que se encuentra en un fichero externo. sintaxis include(mifichero.php); require(mifichero.php); diferencias En caso de no localizar mifichero.php, require produce -Error Fatal- y no ejecuta el resto del programa. Include genera aviso y contina con ejecucin del resto de programas.

Programacion en Lenguaje PHP

67

IV- Funciones conceptos varios


funciones variables: el nombre de una funcin puede ser almacenado en una variable durante la ejecucin del programa (ejemplo-3.8) valores retornables por una funcion: puede ser de cualquier tipo: cadena de caracteres, valor numrico, valor booleano, array, ...Siempre ir asociado con la sentencia return

Programacion en Lenguaje PHP

68

IV- Funciones conceptos varios


Ejemplo-3.8 Funciones Variables <? PHP function suma (&$x, &$y) { return ($a+$b); } function resta (&$x, &$y) { return ($a-$b); } function producto (&$x, &$y) { return ($a*$b); } function cociente (&$x, &$y) { return ($a/$b); } ?>
<HTML> <HEAD> <TITLE> Operaciones aritmticas </TITLE> </HEAD> <BODY> <? PHP

$operador=array(+,-,*,/); $x=10; $b=100;


Programacion en Lenguaje PHP 69

IV- Funciones conceptos varios


for ($i=0;$i<4;$i++) { switch ($operador[i]) { case +: $accion=suma; break; case -: $accion=resta; break; case *: $accion=producto; break; case /: $accion=cociente; break; } $resultado=$accion($a,$b); print(Resultado: $a $operador[i] $b=$resultado <BR>); } ?>
</BODY> </HTML>

Programacion en Lenguaje PHP

70

IV- Funciones conceptos varios


recursividad: es la propiedad que en C tienen las funciones de llamarse a si mismas caractersticas de la recursividad: - en las funciones recursivas existir un if que permite a la funcin volver sin ejecutar de nuevo la funcin. - las versiones recursivas no minimizan tamao de cdigo ni ahorran espacio de almacenamiento de variables. - las versiones recursivas son mas lentas que las iterativas equivalentes. - Un nmero elevado de llamadas a funcin pueden desbordar la pila. - Determinados algoritmos de ordenacin (quitsort) son idneos para tratarlos con funciones recursivas. Tambin problemas de inteligencia artificial.
Programacion en Lenguaje PHP 71

IV- Funciones conceptos varios


Ejemplo-3.9 Funcion Factorial /* version factorial-iterativa */ function factorial($n) { $respuesta=1; for ($t=1; $t<=$n;$t++) $respuesta *=$t; return $respuesta; } /* version factorial-recursiva */ function factorial($n) { if ($n==1) return 1; $respuesta=factorial($n-1)*$n; return $respuesta; }

Programacion en Lenguaje PHP

72

IV- Funciones predefinidas


PHP cuenta con mas de 700 funciones predefinidas que pueden ser utilizadas en el programa sin necesidad de invocar librera alguna. Una breve clasificacin: Matemticas Trabajo con fechas Trabajo con cadenas Trabajo con arrays Ficheros y directorios (*) Acceso a bases de datos (*) Comunicaciones (*)

(*) Se vern en los correspondientes captulos Todo en http://www.php.net Otras referencias especficas de inters:
http://www.interec.com/tutoriales/manuales/php.phtml
Programacion en Lenguaje PHP 73

IV- Funciones predefinidas


Matemticas
abs (n) round (n) ceil (n) floor (n) cos (n) sin (n) tan (n) exp (a) log (n) min (n1, n2, ...) ; min (array) max (n1, n2, ...) ; max (array) pow (a, b) rand (min, mx), mtrand (min, mx) sqrt (a)

Trabajo con fecha y hora


time () mktime (hora, minuto, segundo, mes, da ao) checkdate (mes, da ao) date (formato, instante)

Programacion en Lenguaje PHP

74

IV- Funciones predefinidas


Trabajo con cadenas
Reconocimiento de caracteres ctype_alnum (cadena) ctype_space (cadena) ctype_alpha (cadena) ctype_digit (cadena) ctype_lower (cadena) ctype_upper (cadena) ctype_print (cadena) ctype_punct (cadena) Conversin cadena-array explode (separador, cadena, lmite) implode (separador, array) join (separador, array) str_word_count (cadena, formato) Prolongacin de cadena str_pad (cadena, longitud, cadena_aad, clase_ad) str_repeat (cadena, nmero)

Programacion en Lenguaje PHP

75

IV- Funciones predefinidas


Modificacin de cadena str_replace (buscar, reemplazar, cadena) strrev (cadena) strtolower (cadena) strtoupper(cadena) substr_replace (cadena, reemplazar, posic, long) ucfirst (cadena) ucwords (cadena) Comparacin de cadenas strcasecmp (cadena1, cadena2) strcmp (cadena1, cadena2) strnatcasecmp (cadena1, cadena2) strnatcmp (cadena1, cadena2) Bsqueda de datos strchr (cadena, carcter) strrchr (cadena, carcter) stristr (cadena, fragmento) strstr (cadena, fragmento) strpos (cadena, fragmento, inicio_bsqueda) strrpos (cadena, carcter) substr (cadena, longitud_inicial, longitud) substr_count (cadena, fragmento)
Programacion en Lenguaje PHP 76

IV- Funciones predefinidas


Subdivisin de cadenas wordwrap (cadena, ancho, separacin) strtok (cadena, delimitador) Longitud de una cadena strlen (cadena)

Trabajo con arrays

Transformacin de los ndices array_change_key_case (array, caso) Subdivisin array_chuck (array, dimensin, valor_booleano) Contabilizacin de elementos array_count_values (array) count (array)

Programacion en Lenguaje PHP

77

IV- Funciones predefinidas


Bsqueda de datos array_filter (array, funcin) array_keys (array, elementos) array_key_exists (indice, array) array_rand (array, num_elementos) array_search (elemento_buscado, array, v_logico) array_values (array) in_array (elemento, array) Generacin de arrays array_combine (indices, elementos) compact (ListaVariables) extract (array, extraccin) range (inicio, final, aumento) array_slice (array, fragmento, dimensin) array_splice (array, frag, dim, nuevo) Combinacin de arrays array_merge (array1, array2, array3, ...) array_diff_assoc (array1, array2, array3, ...) array_diff (array1, array2, array3, ...) array_intersect_assoc (array1, array2, array3, ...) array_intersect (array1, array2, array3, ...)
Programacion en Lenguaje PHP 78

IV- Funciones predefinidas


Prolongacin/truncamiento de array array_fill (indice, cantidad, elemento) array_pad (array, tamao_final, elemento_nuevo) array_pop (array) array_push (array, elemento1, elemento2, ...) array_shift (array) array_unique (array) array_unshift (array, elemento1, elemento2, ...) Aplicacin de funciones array_map (funcin, array1, array2, array3, ...) array_walk (array, nombreFuncin, argumentos) asort (array), arsort (array) ksort (array), krsort (array) natsort (array) , natcasesort (array) array_reverse (array) sort (array), rsort (array)

Programacion en Lenguaje PHP

79

V- ARRAYS Introduccin
Un array es una coleccin de datos que se referencian con un nombre comn En PHP los datos pueden ser de diferente tipo A cada elemento especifico del array se accede mediante un ndice No es necesario determinar la dimensin antes de inicializarlo Existen multitud de funciones que permiten la gestin y manipulacin de arrays. Constan de posiciones de memoria consecutivas; la direccin mas baja es la del primer elemento Pueden tener una o varias dimensiones
Programacion en Lenguaje PHP 80

V- ARRAYS conceptos
Arrays unidimensionales son en esencia listas de informacin heterognea guardadas en posiciones contiguas de memoria
formatos y ejemplos de uso $nombre_variable[indice]=valor; valor= contenido del elemento indce= elemento del array nombre_variable= identificador del arrary

Programacion en Lenguaje PHP

81

V- ARRAYS conceptos
Ejemplo.4.1.1- //Array lineal de 4 elementos

$X[0]=1; $X[1]=una cadena; $X[2]=3; $X[ ]=ultimo elemento


Ejemplo.4.1.2- //Array lineal de 4 elementos

$X= array (1,una cadena,3,ultimo elemento);


Ejemplo.4.1.3- //gestin de elementos

$z= $x[0] + 5*$x[2];


Ejemplo.4.1.4- //mi cuenta bancaria

$micuenta[numero_cuenta]=20001; $micuenta[titular]=Jose Perez; $micuenta[saldo=12000; $micuenta[fecha_pago]=01012006;


Ejemplo.4.1.5- //mi cuenta bancaria

$micuenta=array([numero_cuenta=>200, titular=>Jose Perez, saldo=>12000,u_pago=>01012006) ;


Programacion en Lenguaje PHP 82

V- ARRAYS conceptos
Arrays multidimensionales es un array cuyos elementos son a su vez nuevos arrays
formatos y ejemplos de uso $nombre_variable[indice1][indice2]..[indic eN]= valor;
Ejemplo.4.2.1- //Array de 2x2 elementos

$X[0][0]=1; $X[0][1]=0; $X[1][0]=-1; $X[1][1]=-2;


Ejemplo.4.2.2- //Array de 2x2 elementos

$X=array(array(1,0),array(-1,-2));

Programacion en Lenguaje PHP

83

V- ARRAYS conceptos
Aspectos varios: La funcion print_r ( ) muestra los elementos de un array La manipulacin de los elementos requiere uso de sentencias iterativas (foreach, for, etc.) Funciones para manipulacin de arrays (ver captulo III) La manipulacin de los elementos requiere uso de sentencias iterativas (foreach, for, etc.)

Programacion en Lenguaje PHP

84

VI- Conectividad a Base de Datos MySQL


Conexin con MysSQL:
Apertura de conexin
mysql_connect (servidor, usuario, contrasea) La funcin devuelve un valor entero que servir como identificador de la conexin en las operaciones posteriores. Si se produce un error en la conexin la funcin devuelve 0.

Cierre de conexin
mysql_close (identificador) En caso de no poner el identificador se cerrar la ltima conexin abierta. La funcin devuelve un valor entero, que ser nulo si se produce algn error en el proceso.

Programacion en Lenguaje PHP

85

VI- Conectividad a Base de Datos MySQL


Conexin con MysSQL: Esquema general de una conexin
$c = mysql_connect (localhost, root, laclave); if (!$c) { die (Conexin no realizada); } else { // conexin realizada correctamente } /* Operaciones a realizar sobre la base de datos ................................................... */ mysql_close($c); En caso de no utilizar la funcin mysql_close(), la conexin se cerrar al finalizar el script.

Programacion en Lenguaje PHP

86

VI- Conectividad a Base de Datos MySQL


Seleccin de la Base de Datos:
Una vez abierta la conexin con el Servidor MySQL, el siguiente paso es la seleccin de la(s) base(s) de datos sobre la que queremos actuar. mysql_select_db (nombreBD, identificador)

El identificador de la conexin es opcional. En caso de no utilizarlo se utilizar la ltima conexin abierta. Si se produce un error, la funcin devolver valor 0. Una vez seleccionada la base de datos, sta pasa a ser la base de datos activa, y cualquier operacin posterior se dirigir a ella. Para cambiar de base de datos se deber volver a utilizar la funcin antes de cerrar la conexin.

Programacion en Lenguaje PHP

87

VI- Conectividad a Base de Datos MySQL


Ejecucin de sentencias SQL sobre la base de datos seleccionada
Realizacin de una consulta sobre la base de datos activa. mysql_query (sentencia, identificador) El identificador de la conexin es opcional. En caso de no utilizarlo se utilizar la ltima conexin abierta. Si se produce un error, la funcin devolver el valor 0 en caso de una ejecucin correcta se devuelve un entero. En caso de ser una consulta de seleccin, este entero se utilizar para acceder al resultado de la consulta. mysql_db_query (nombreBD, sentencia, identificador) sentencia idntica a la anterior pero que permite ejecutar la sentencia sobre cualquier base de datos.
Programacion en Lenguaje PHP 88

VI- Conectividad a Base de Datos MySQL


Obtencin de errores en el acceso a BD
mysql_error ( ) Devuelve una cadena de caracteres explicando el ltimo error producido en la operacin de acceso a datos.

Insercin de datos mediante formulario


La verdadera utilidad de las funciones de conectividad a bases de datos desde PHP radica en la posibilidad de construir sentencias SQL de forma dinmica.

Programacion en Lenguaje PHP

89

VI- Conectividad a Base de Datos MySQL


Recuperacin de los resultados de consultas
Para acceder a los resultados de una consulta de seleccin. mysql_fetch_row (resultado) Para acceder al resultado de la consulta de seleccin se utiliza el valor que devuelve la funcin mysql_query(). Cada vez que se produce la llamada a la funcin se genera un array con los valores de una fila de la tabla de resultados. Cuando no hay ms filas que mostrar la funcin devuelve un valor nulo. Para saber cuantas filas o registros incluye el resultado de la consulta. mysql_num_rows (resultado)

Programacion en Lenguaje PHP

90

VI- Conectividad a Base de Datos MySQL


Recuperacin de los resultados de consultas
Para conocer el nmero de registros afectados en una consulta de insercin, actualizacin o borrado mysql_affected_rows ( )

Ejemplo de acceso a los datos de una consulta de seleccin.

$c = mysql_connect (localhost, root, ); $c = mysql_connect (localhost, root, ); mysql_select_db (Compras, $c); mysql_select_db (Compras, $c); $strSQL= SELECT **FROM Articulos;; $strSQL= SELECT FROM Articulos;; $rs = mysql_query ($strSQL, $c); $rs = mysql_query ($strSQL, $c); while ($registro = mysql_fetch_row($rs)) {{ while ($registro = mysql_fetch_row($rs)) print(Codigo: $registro[0].<br>); print(Codigo: $registro[0].<br>); print(Articulo: $registro[1].<br>); print(Articulo: $registro[1].<br>); print(Descripcin: $registro[2].<br>); print(Descripcin: $registro[2].<br>); print(Precio: $registro[3] euros.<br>); print(Precio: $registro[3] euros.<br>); }} mysql_close ($c); mysql_close ($c);

Programacion en Lenguaje PHP

91

VI- Conectividad a Base de Datos MySQL


Recuperacin de los resultados de consultas
En el ejemplo anterior se necesit saber el orden de los campos dentro de la tabla de la base de datos. Para facilitar el acceso a los datos PHP dispone de otra funcin. mysql_fetch_array (resultado) Funcin similar a mysql_fetch_row(). Principal ventaja:datos son devueltos en un array asociativo en el que en lugar de utilizar ndices numricos de pueden utilizar los propios nombres de los campos.
... ... while ($registro = mysql_fetch_array($rs)) {{ while ($registro = mysql_fetch_array($rs)) print(Codigo: $registro[codigart].<br>); print(Codigo: $registro[codigart].<br>); print(Descripcin: print(Descripcin: $registro[descrart].<br>); $registro[descrart].<br>); print(Precio: $registro[precart] print(Precio: $registro[precart] euros.<br>); euros.<br>); }} ... ...

Programacion en Lenguaje PHP

92

También podría gustarte