You are on page 1of 64

El Lenguaje PHP PHP es un lenguaje interpretado(el compilador ejecuta lnea por lnea) del lado del servidor que

se caracteriza por su potencia, versatilidad, robustez y modularidad. Los programas escritos en PHP son embebidos directamente en el cdigo HTML y ejecutados por el servidor web a travs de un intrprete antes de transferir al cliente que lo ha solicitado un resultado en forma de cdigo HTML puro. Al ser un lenguaje que sigue la corriente open source, tanto el intrprete como su cdigo fuente son totalmente accesibles de forma gratuita en la red. En concreto, la direccin oficial en la que puede descargarse es: http://www.php.net/ Por su flexibilidad, PHP resulta un lenguaje muy sencillo de aprender; especialmente para programadores familiarizados con lenguajes como C, Perl o Java, debido a la similitud de sintaxis entre ellos. Por supuesto es un lenguaje multiplataforma; los programas funcionan igual sobre diferentes plataformas, trabajando sobre la mayora de servidores web y estando preparado para interactuar con ms de 20 tipos de bases de datos. No obstante, al ser un lenguaje inicialmente concebido para entornos UNIX, es sobre este sistema operativo sobre el que se pueden aprovechar mayor sus prestaciones. Primer Ejemplo de PHP En un nuevo documento escriba el siguiente cdigo y grabarlo con el nombre primer.php <HTML> <HEAD> <TITLE>Primer Ejemplo de PHP</TITLE>4 </HEAD> <BODY> <U> <?PHP echo(o print:) "Este es mi primer programa en PHP"; ?> </U> </BODY> </HTML>

FORMAS DE INCRUSTAR EL CODIGO PHP EN LOS DOCUMENTOS HTML Existen 4 formas de incrustar cdigo PHP, dos de ellas estn siempre disponible y las dos restantes dependen da la configuracin particular del servidor. Las dos formas siempre disponibles de delimitar cdigo PHP son: <?PHP Instrucciones PHP ?> o <SCRIPT LANGUAGE=php> Instrucciones PHP </SCRIPT > De estas dos formas, la primera es la sintaxis especifica del lenguaje PHP, mientras que la segunda es la sintaxis general que se utiliza para insertar scripts programados en diferentes lenguajes Las otras dos formas de incrustar el cdigo PHP son: <? Instrucciones PHP ?> o <% Instrucciones PHP %> La primera de estas sintaxis es la que se denomina de etiquetas de formato corto y requiere que el servidor tenga configurado su fichero php.ini para aceptarlas. Finalmente la ltima sintaxis es la que resulta compatible con ASP, pero tampoco es aceptada por todos los servidores. De las 4 formas de incrustar el cdigo PHP, la ms recomendable es la primera (<?php .. ?>), por varias razones: por ser la especifica de PHP, por estar disponible en cualquier servidor, y por ser adems la nica que permite incrustar cdigo PHP tambin en XML y en XHTML.

ASPECTOS SOBRE LA SINTAXIS DEL LENGUAJE La sintaxis del Lenguaje PHP es muy similar a la de otros lenguajes conocidos como C o Perl, algunos aspectos iniciales sobre la sintaxis que deben ser considerados a la hora de ahondar la escritura del cdigo fuente de los programas son: El uso de las maysculas y minsculas es indiferente(solo instrucciones). A diferencia de otros lenguajes similares, PHP permite que las diferentes sentencias estn escritas con cualquier combinacin de letras maysculas o minsculas. Por ejemplo con las estructuras condicionales sera totalmente equivalente utilizar la palabra if o IF. Una excepcin importante a esta regla se produce en los nombres de las variables, no es lo mismo nombrar una variable con letras maysculas que hacerlo con minsculas. Se pueden colocar todos los espacios en blanco y cambios de lnea que se deseen con objeto de hacer mas legible el cdigo fuente. Estos espacios adicionales no tienen efecto alguno en la ejecucin del programa, el interprete de PHP los ignora. Las diferentes instrucciones deben terminar con ;. Sin embargo PHP admite cierta flexibilidad a este respecto, ya que el terminador punto y coma no sera necesario en la ltima sentencia del script antes del terminador ?>, ni en los casos en los que al final de la instruccin se cierre un bloque de cdigo con una llave, por ejemplo en las estructuras condicionales o bucles Las instrucciones se pueden partir en tantas lneas como se desee a efectos, de nuevo, de mejorar la legilibilidad. Esta divisin de las instrucciones no afecta a la ejecucin. En una misma lnea se pueden colocar, si as se desea, varias instrucciones diferentes separadas por ;. Esto puede ser til en el caso, por ejemplo, de tener que hacer varias sentencias de asignacin diferentes INSERCION DE COMENTARIOS EN EL CODIGO Comentarios de una lnea : // Comentarios de varias lneas /* */

ELEMENTOS BASICOS DEL LENGUAJE TIPOS DE DATOS Como todo lenguaje de programacin, PHP puede trabajar con una serie de tipos de datos bsicos. En concreto los tipos de datos admitidos son: Nmeros enteros: los enteros pueden ser dados tanto en base decimal como en base octal o hexadecimal ( un 0 inicial indica que el valor esta representado en octal, un 0x indica que es

hexadecimal. Ejemplos Ejemplos de nmeros de en base en 10 : 45 -142 0123 (equivale a 783 83) numero octal:

- Ejemplos de nmeros en hexadecimal: 0x12 (equivale a 18) Nmeros reales: Los nmeros reales se pueden dar en dos formatos; como parte entera y parte decimal, usando el punto 1.4e3 como -78.5e-4 separador, o en notacin cientfica. Ejemplos: 14.67 -76.0023

Cadenas de Caracteres: Las cadenas de caracteres pueden ser dadas en dos formatos usando comillas dobles o usando comillas simples. El uso de una u otra forma de delimitacin afecta a la forma en la que se tratan las posibles variables que puedan haber dentro de la propia cadena. Ejemplo: Casablanca, cantando bajo la lluvia

Arrays o Matrices: Constituyen colecciones de datos que se referencian bajo un mismo nombre comn. Como se ver al captulo dedicado a estas estructuras de datos, PHP admite la posibilidad de construir dos tipos de arrays: arrays asociativos e indexados.

Objetos: finalmente PHP admite tambin la posibilidad de crear objetos y realizar accin con ellos. Mediante el uso de objetos se puede entender como una misma entidad los datos y las acciones que se realizan con ellos. Esta es la base de la programacin orientada a objetos.

VARIABLES Algunas de las peculiaridades de las variables en PHP son: No es necesario declarar explcitamente, sino que basta con utilizarlas cuando se necesite. En principio las variables no tienen un tipo predefinido, puede asignarse cualquier tipo de valor. La asignacin de valores a las variables se hace con el singo =. Los nombres de las variables en PHP siempre comienzan con el signo $. Se pueden usar nombres de variables de cualquier longitud, formados por letras, digitos y carcter de subrayado, pero nunca comenzando por un digito. Entre las letras que pueden utilizarse se encuentran los caracteres cuyo cdigo ASCII se encuentran entre 127 y 255 por lo que se pueden utilizar letras acentuadas o en los nombres de variables . En los nombres de variables si se distingue el uso de maysculas y minusculas , de manera que $area y $AREA serian variables diferentes. Una variable se puede utilizar asignndole a la lo largo del tiempo datos incluso de distinto tipo. Ejemplo de nombres de variables validas $titulo $fecha_nacimiento $ao $precio En cambio no serian validos los siguientes: $dir-pelicula $4fila genero $dto% Ejemplo: <html> <head> <title>Variables en PHP </title> </head> <body> <?php $titulo="Buscando a Nemo"; $sala=2; echo "En la sala $sala se proyectar la pelicula $titulo"; ?> </body> </html>

En este caso, a la primera variable se le asigna una cadena de caracteres y a la segunda un nmero entero. Las dos variables se utilizan dentro de la cadena a imprimir, cuando dicha cadena est delimitada por comillas dobles como en este caso, la variables que se encuentran en su interior sern sustituidas por sus valores. Ejemplo: <html> <head> <title>Variables en PHP</title> </head> <body> <?php $x="Importe: "; echo $x; $x=5; echo $x . " (precio normal) "; (el . sirve para concatenar cadenas) //tambin echo $x (precio normal) "; $x = $x * 0.85; echo $x . " (precio reducido) "; ?> </body>

</html>

Como puede observarse, en este programa se ha utilizado una nica variable $x a la que inicialmente se le asigno una cadena de caracteres, despus se le asigno un numero entero y finalmente, el resultado de una expresin que devuelve un numero real. En este caso se ha utilizado el operador punto para realizar concatenaciones entre cadenas de caracteres y variables. Esto es una alternativa a la inclusin de las variables directamente dentro de las cadenas. Ejemplo: <html>

<head> <title>Variables en PHP</title> </head> <body> <?php $a="10 euros"; $b= 2.25; $c= $a - $b; echo "Valor de c = $c<br>"; $d = (integer)$c; echo "Valor de d = $d<br>"; $e = $d/2; echo "Valor de e = $e<br>"; ?> </body>

</html>

La conversin de tipo explicita se puede realizar mediante el operador cast: (tipo) expresin; O mediante la funcin settype(); $telef= (string) 949567894; $x= (integer) 5.97; $y=12.5; settype($y,integer); settype($y,float);

AMBITO DE LAS VARIABLES El mbito de las variables determina desde que lugares la variable es visible y, por tanto, puede ser utilizada. Las variables por defecto tienen un mbito global que abarcara el documento completo en el que son definidas, a no ser que sean definidas dentro de una funcin, en cuyo caso solo pueden ser utilizadas dentro de la propia funcin (mbito local) Esto significa que una variable definida en un script del documento fuera de cualquier funcin, puede ser utilizada en cualquier otro lugar de ese script o incluso en otros posibles scripts que se encuentren en el mismo documento. <html>

<head> <title>Ambito de las Variables en PHP</title> </head> <body> <h1>Ambito de las variables </h1> <hr> <?php $fila=12; $num=6; ?> luego de haber declarado en un script<br> las variables pueden ser usadas en otro script<br> <?php echo "fila = $fila<br>"; echo "numero = $num<br>"; ?> </body>

</html>

Una variable global puede ser utilizada dentro de cualquier funcin, pero para hacer referencia a ella debe declararse dentro de la funcin con la palabra global delante de su nombre. Ejemplo: $precio = 4.5; function calcular_importe($num_entradas){ global $precio; $i = $precio * $num_entradas; return $i; } En este caso la variable $precio est definida fuera de la funcin y es utilizada dentro de la funcin calcular_importe(). Por otro lado, la variable $i est definida dentro de la funcin y no puede ser utilizada fuera de ella. Funciones usadas con variables isset() : Permite averiguar si una variable ha sido definida. Esta funcin es especialmente til cuando se quiere comprobar si se han recibido los valores correspondientes a todos los campos de un formulario. unset(): Permite eliminar una variable, no solo borra el contenido de la variable sino que tambin libera el espacio de memoria reservado para ella. Cualquier intento posterior de acceso a esa variable generara un error. gettype(): Devuelve el tipo de variable. is_array(): determina si la variable contiene un array. is_float(): Determina si la variable contiene un numero de coma flotante. is_int(): Determina si la variable contiene un numero entero. is_object(): Determina si la variable hace referencia a un objeto. is_string(): Determina si la variable contiene una cadena de caracteres. CONSTANTES Una constante es un valor que permanece inalterable a lo largo de la ejecucin del script y a la que se le asigna un identificador. Solo puede definirse constantes con valores escalares (nmeros o cadenas de caracteres). Por ejemplo no podra definirse una constante cuya valor fuese un array. La definicin de constantes de realiza con la funcin define(), y una vez definidas su valor no puede cambiarse. En cuanto a los identificadores de las constantes, estos siguen las mismas reglas que los identificadores de las variables salvo que no comienzan con el smbolo $. Aunque no es una regla obligatoria por convenio se suele utilizar identificadores con letras maysculas para las constantes.

Otra diferencia con las variables est en la ausencia de cualquier restriccin de mbito en las constantes. Una constante definida en un documento ser accesible desde cualquier punto de cualquier script que est en el mismo documento. Ejemplo: <html>

<head> <title>Constantes en PHP</title> </head> <body> <h1>Constantes en php</h1> <hr> <?php define("NOMBRE","Juan"); define("EDAD",19); define("PESO",72.85); echo "constantes definidas <br>"; echo "nombre : ". NOMBRE . "<BR>"; echo "edad : ". EDAD . "<BR>"; echo "peso : ". PESO . "<BR>"; ?> </body>

</html>

El uso de constantes puede resultar especialmente adecuado para definir determinados parmetros del programa que no se espera que cambien.

CADENAS DE CARACTERES Y VARIABLES Las cadenas de caracteres constituyen uno de los tipos de datos bsicos del lenguaje PHP. En su definicin se pueden utilizar como delimitadores tanto las comillas simples como las dobles, lo que no es posible combinar ambos tipos de delimitadores, por ejemplo abriendo la cadena con comillas dobles y cerrndola con comillas simples. La inclusin de determinados caracteres en las cadenas exige la utilizacin de las denominadas secuencias de escape. Entre estos caracteres especiales estn las comillas, el signo dlar, la barra invertida y los caracteres de tabulacin y retorno de carro. En la siguiente tabla se muestran algunas de estas secuencias de escape. Secuencia de Escape Significado \n Nueva lnea \r Retorno de Carro \t Tabulador \\ Barra invertida \ Comillas simples \ Comillas dobles \xNum Carcter cuyo cdigo ASCII en hexadecimal es Num \Num Carcter cuyo cdigo ASCII en octal es Num Ejemplo: <html> <head> <title>Cadenas de caracters en PHP</title> </head> <body> <h1>Cadenas de caracteres en php</h1> <hr> <?php echo "Pagina creada por :\n \"cinemas\" \t \xA9 2004"; ?> </body> </html>

En la cadena anterior se utilizan dos secuencias de escape que no tienen reflejo en la pagina que sera visualizada por el navegador del cliente, pero si en el cdigo fuente HTML: el carcter de nueva lnea y el tabulador se incluiran en el cdigo fuente HTML, pero, como todos los espacios extra, serian ignorados por el navegador. Las otras secuencias de escape que han sido utilizadas en el ejemplo son las que permiten incluir comillas en la propia cadena y que generan el signo copyright (correspondiente al carcter de cdigo ASCII 169 o A9 en hexadecimal). La diferencia entre el uso de comillas dobles o simples como delimitadores de las cadenas de caracteres est en la forma en la que se tratan los posibles identificadores de variables que aparezcan dentro de la cadena: Con las comillas dobles, las variables dentro de la cadena se expanden, es decir, se sustituyen por su valor. Con las comillas simples las variables no se expanden y por tanto en la propia cadena aparecern sus identificadores como cualquier otro carcter de la misma. Adems de eso, en este caso las nicas secuencias de escape reconocidas son \\ y \. Ejemplo: <html> <head> <title>Cadenas de caracters en PHP</title> </head> <body> <h1>Comillas dobles en php</h1> <hr> <?php $titulo="Todo sobre mi madre"; $director="Pedro Almodovar"; $ao=1999; print "Sesion Especial : \"$titulo\" de $director ($ao)"; ?> </body>

</html>

Observar como al utilizar las comillas dobles, los nombres de variables que aparecen dentro de la cadena son sustituidos por sus valores. Esta caracterstica de PHP es especialmente til y evita tener que recurrir a engorrosas operaciones de concatenacin de cadenas con variables. En cambio la sentencia print Sesion Especial : \"$titulo\" de $director ($ao);

Escribira el siguiente mensaje Sesion Especial: \$titulo\de $director ($ao) En este caso se observa como las secuencias de escape no son reconocidas y se escriben los nombres de las variables dentro de la cadena y no sus valores. Operador de Asignacin En diversos ejemplos previos ya se ha utilizado el operador de asignacin para dar valores a las variables, este operador se representa mediante el signo =. Su sentido es el evidente; la variable de la izquierda del operador tomar el valor resultado de la expresin que se encuentra a la derecha. $variable = valor o expresin; Tambin se puede asignar varias asignaciones en una sola sentencia. $a = $b = $c =1; Operadores Aritmticos Los operadores aritmticos bsicos son los habituales de cualquier lenguaje de programacin + * / % Suma Resta Multiplicacin Divisin Modulo: Residuo de la divisin de dos nmeros enteros.

Adems de los operadores anteriores se dispone de los operadores de incremento y decremento que existen tambin en lenguajes C o C++ ++$x $x++ --$x $x-Incrementa una unidad el valor de $x Incrementa una unidad el valor de $x, pero despus de evaluar el resto de la expresin. Disminuye una unidad el valor de $x Disminuye una unidad el valor de $x, pero despus de evaluar el resto de la expresin

PHP Y LOS FORMULARIOS HTML formulario01.html <html> <head> <title>Rectangulo</title> </head> <body> <h1>Rectangulo</h1> <hr> <form action="calculo01.php" method="POST"> <table> <tr> <td>BASE : </td> <td><INPUT TYPE="TEXT" NAME="BASE"></td> </tr> <tr> <td>ALTURA : </td> <td><INPUT TYPE="TEXT" NAME="ALTURA"></td> </tr> <tr> <td><INPUT TYPE="SUBMIT" VALUE="CALCULAR"> </td> <td><INPUT TYPE="RESET" VALUE="BORRAR"></td> </tr> </table> </form> </body>

</html>

calculo01.php <html>

<head> <title>Rectangulo</title> </head> <body> <h1>Rectangulo</h1> <hr> <?php $base=$_POST["BASE"]; $altura=$_POST["ALTURA"]; $area= $base*$altura; $perimetro = 2*($base + $altura); $diagonal = sqrt(pow($base,2) + pow($altura,2)); print "base : $base <br>"; print "altura : $altura <br>"; print "area : $area <br>"; print "perimetro : $perimetro <br>"; print "diagonal : $diagonal <br>"; ?> <a href="formulario01.html">regresar al formulario </a> </body>

</html>

Variables de Formularios Para acceder a las variables de formulario se puede hacer de dos maneras usando las variables predefinidas $_ REQUEST[] que es un arreglo asociativo donde se guardan los valores de las variables o con las variables $_POST[] Y $_GET[] dependiendo del mtodo utilizado para el envo de datos del formulario.

Variables de peticin: $_REQUEST Una matriz asociativa que consiste en los contenidos de $_GET, $_POST, y $_COOKIE. Esta es una variable 'superglobal', o global automtica. Esto simplemente quiere decir que est disponible en todos los contextos a lo largo de un script. No necesita hacer global $_REQUEST; para acceder a ella dentro de funciones o mtodos. Variables HTTP GET: $_GET Una matriz asociativa de variables pasadas al script actual a travs del mtodo HTTP GET. Global automticamente en cualquier contexto. Esta es una variable 'superglobal', o global automtica. Esto simplemente quiere decir que est disponible en todos los contextos a lo largo de un script. No necesita hacer global $_GET; para acceder a ella dentro de funciones o mtodos, como lo hace con $HTTP_GET_VARS. $HTTP_GET_VARS contiene la misma informacin inicial, pero no es autoglobal. (Note que HTTP_GET_VARS y $_GET son variables diferentes y que PHP las trata como tal) Variables HTTP POST: $_POST una matriz asociativa de variables pasadas al script actual a travs del mtodo HTTP POST. Global automticamente en cualquier contexto. Esta es una variable 'superglobal', o global automtica. Esto simplemente quiere decir que est disponible en todos los contextos a lo largo de un script. No necesita hacer global $_POST; para acceder a ella dentro de funciones o mtodos, como lo hace con $HTTP_POST_VARS. $HTTP_POST_VARS contiene la misma informacin inicial, pero no es autoglobal. (Note que HTTP_POST_VARS y $_POST son variables diferentes y que PHP las trata como tal)

Mtodos de transferencia de datos en Formularios Los datos que el usuario introduzca en un formulario de una pgina web pueden ser transferidos al servidor para su procesamiento con dos mtodos diferentes. Mtodo GET: los datos son enviados dentro del URL de localizacin del destino Mtodo POST: los datos son enviados de manera invisible para el usuario haciendo uso del protocolo http y en un encabezado independiente. El mtodo de transferencia se especifica en la definicin del formulario mediante el parmetro METHOD, asignndole el valor Get o Post en funcin del mtodo elegido. En caso de ausencia de ese parmetro, se considera como mtodo por defecto el mtodo GET. En el caso de que los datos deban ser transferidos por correo electrnico, es obligatorio el uso del mtodo POST.

OPERADORES DE COMPARACION Sirven para comparar 2 valores devolviendo un valor verdadero si la comparacin es positiva o falsa en otro caso: $x == $y $x === $y $x != $y $x !== $y $x < $y $x > $y $x <= $y $x >= $y Compara si $x e $y tienen el mismo valor (operador de igualdad) Compara si $x e $y son iguales adems si son del mismo tipo (operador de identidad) Comprueba si $x e $y tienen distinto valor (negacin de igualdad) Comprueba si $x e $y tienen distinto valor y/o tipo (negacin de identidad) Comprueba si el valor de $x es menor que el valor de $y Comprueba si el valor de $x es mayor que el valor de $y Comprueba si el valor de $x es menor o igual que el valor de $y Comprueba si el valor de $x es mayor o igual que el valor de $y OPERADORES LOGICOS y o negacin

&& || ! And Or Not

ESTRUCTURAS CONDICIONALES Sentencia if.. else Sirve para escoger uno de dos caminos en un programa de acuerdo al resultado de una comparacin if(expresin) Instruccion1; else Instruccion2; Si expresin es verdadera se ejecuta Instruccin1, si es falsa se ejecuta Instruccion2. En PHP toda expresin que produzca como resultado un valor numrico distinto de cero, una cadena diferente de la cadena vacia o un array no vacio, si aparece dentro de un contexto lgico es tratado como el valor booleano verdadero (true). Si se desea ejecutar un conjunto de Instrucciones al resultar verdadero o falsa la expresin, las instrucciones se deben colocar entre llaves if(expresin) { Instrucciones1; } else { Instrucciones2; } La sentencia else es Opcional

If(expresin) { Instrucciones; } Ejemplo: <html>

<head> <title>Estructuras Condicionales</title> </head> <body> <h1>Estructura Selectiva Simple : if ... else</h1> <hr> <font color="blue">verifica Si un numero es par o impar</font><br> <?php $num=12; if($num % 2==0) echo "el valor $num es par <br>"; else echo "el valor de $num es impar<br>"; ?> <br> <font color="blue">verifica si un numero es positivo, negativo o cero </font><br> <?php $x=-20; if($x>0) echo "El numero es positivo<br>"; else if($x<0) echo "El numero es negativo<br>"; else echo "El numero es cero <br>"; ?> <br> <font color="blue">calcula las raices reales de una ecuacion cuadratica <br> con coeficientes a=1 b=5 c=6<br> </font> <?php $a=1; $b=5; $c=6; if($a!=0) { $d = pow($b,2) - 4*$a*$c; if($d>=0) { $x1 = (-$b + sqrt($d)) /(2*$a);

$x2 = (-$b - sqrt($d)) /(2*$a); echo "Valor de x1 = $x1 <br> "; echo "Valor de x2 = $x2 <br> "; } else echo "Raices imaginarias<br>"; } else echo "No se puede calcular<br>"; ?> </body> </html>

Sentencia ifelseif..else if(condicion1) { Instrucciones1; } elseif (condicion2) { Instrucciones2; } elseif(condicion3) { Instrucciones3; } else

{ Instrucciones a ejecutar si ninguna de las condiciones anteriores es cierta } El funcionamiento de esta sentencia es el siguiente: Si la primera condicin es evaluada como cierta entonces se ejecutan las sentencias del bloque correspondiente y tras ello finaliza la ejecucin de la sentencia, En el caso de que la primera condicin sea falsa, el interprete continuar evaluando de manera consecutiva las siguientes hasta encontrar la primera que es cierta, en cuyo caso se ejecutan las sentencias de su bloque y se finaliza. Si ninguna de las condiciones es cierta se ejecutan las Instrucciones que siguen a else. Ejemplo: <html> <head> <title>Estructuras Condicionales</title> </head> <body> <h1>Sentencia if... elseif ... else</h1> <hr> <br> <font color="blue">verifica si un numero es positivo, negativo o cero </font><br> <?php $x=-20; if($x>0) echo "El numero es positivo<br>"; elseif($x<0) echo "El numero es negativo<br>"; else echo "El numero es cero <br>"; ?> <br> <font color="blue"> Calcula el precio de acuerdo a la edad de la persona</font><br> <?php $edad=35; if ($edad<3) $precio=0; elseif($edad<=16) $precio=8; elseif($edad<65) $precio=12; else $precio=10; echo "El precio de la entrada es : $precio <br>"; ?> </body> </html>

Sentencia switch La sintaxis bsicas de la sentencia es : switch(expresin) { case valor1: Instrucciones 1; break; case valor2: Instrucciones 2; break; ... case valorN: Instrucciones N; break; default: Instrucciones; } Esta instruccin evala la expresin y sucesivamente compara el valor devuelto con los valores que van apareciendo en cada una de las clausulas case, cuando el valor coincide ejecuta las instrucciones que van a continuacin hasta llegar al final de la estructura o encontrarse con una sentencia de finalizacin break. La clausula default es opcional y permite indicar las sentencias a ejecutar cuando la expresin no toma ninguno de los valores anteriores. La expresin que se evala y compara en la sentencia switch puede ser cualquier expresin que se evalu a un tipo simple, es decir, nmeros enteros o de punto flotante y cadenas de caracteres Ejemplo: <html> <head> <title>Estructuras Condicional Multiple</title> </head> <body> <h1>Sentencia swich</h1> <hr> <font color="blue">Reporta el dia que le corresponde de acuerdo un numero</font><br> <?php $num=4; switch($num) { case 1: echo "Domingo <br>"; break; case 2: echo "Lunes <br>"; break; case 3: echo "Martes <br>"; break; case 4: echo "Miercoles <br>"; break;

case 5: echo "Jueves <br>"; break; case 6: echo "Viernes <br>"; break; case 7: echo "Sabado <br>"; break; default: echo "Numero fuera de rango<br>"; } ?> <br> <font color="blue">Calculo de precio de acuerdo al dia de la semana <br> En caso de que la variable $dia no coincida con ninguno de los valores predefinidos<br> (L,M,X,J,V,S y D) la variable $precio no tendra ningun valor asignado.<br> </font> <br>

<?php $dia="M"; switch($dia) { case "L": $precio=4; break; case "M": $precio=3; break; case "X": case "J": case "D"; $precio=4.5; break; case "V": case "S": $precio=5; break; default: $precio=0; } echo "El precio es : $precio<br>";

?> <br>

<p><font color="blue"> Calculo del numero de dias que tiene un mes concreto, considerando ademas si el ao es bisiesto o no (un ao es bisiesto cuando es multiplo de 4 pero no de 100, o bien cuando es multiplo de 400) </font></p> <?php

$mes=2; $ao=2004; switch($mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: $nd=31; break; case 4: case 9: case 11: $nd=30; break; case 2: if(($ao%4==0 && $ao%100!=0) || $ao % 400==0) $nd=29; else $nd=28; break; } echo "el numero de dias del mes es : $nd <br>"; ?> </body>

</html>

Estructuras Repetitivas
1) while (mientras) while(expresin) { Instrucciones } Las instrucciones se ejecutan mientras la condicin es verdadera. En otras palabras termina cuando la expresin es falsa. 2) do . . . while (Hacer mientras)

do{ Instrucciones; }while(condicin); 3) for for(expresion1;expresion2; expresion3) { Instrucciones; } 4) foreach Permite recorrer todos los elementos de un array de una forma muy simple. La sintaxis es la siguiente: foreach( nombre_array as nombre_variable) { Sentencias a efectuar para cada elemento del array } Como puede apreciarse, debe indicarse el nombre del array en el que estn almacenados todos los datos y el nombre de una variable, En la iteracin inicial esta variable contendr el valor del primer elemento del array y en las sucesivas iteraciones del bucle esta variable har referencia a los siguientes elementos.

Ejemplo: <html> <head> <title>Estructuras Repetitivas</title> <STYLE type="text/css">

<!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1>Estructuras Repetitivas</h1> <hr> <p> Reportar los numeros 5, 10, 15, 20, ... 95, 100</p>

<?php $n=5; while($n<=100) { print "$n "; $n +=5; }

?> <p> Reportar los numeros 40, 50, 60, ... 150</p> <?php $c=40; do{ print "$c "; $c +=10; }while($c<=150); ?> <p> Reportar los numeros 40, 50, 60, ... 150</p> <?php $c=40; do{ print "$c "; $c +=10; }while($c<=150); ?> <p> Calculo del factorial de un numero </p> <?php $n=5; $fact=1;

for($i=1;$i<=$n;$i++) $fact=$fact * $i; print "El factorial de $n es : $fact <br>"; ?> <p> Listar los elementos de un arreglo usando foreach</p> <?php $lista=array("Juan","Carlos","Pedro","Susana"); foreach($lista as $valor) print "$valor <br>"; ?> </body>

</html>

Ejercicios 1) Construir en forma aleatoria, una contrasea formada por 8 letras. Se puede utilizar la funcin rand() para generar un numero aleatorio entre 97 y 122 (cdigos ASCII correspondientes a la letras minusculas) y la funcin chr() para obtener el carcter asociado a un cdigo ASCII dado. 2) Construir la tabla de multiplicar del 1 al 10 en forma de tabla. Solucin <html>

<head> <title>Estructuras Repetitivas</title> <STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1>Estructuras Repetitivas</h1> <hr>

<p>Construir en forma aleatoria, una contrasea formada por 8 letras. Se puede utilizar la funcin rand() para generar un numero aleatorio entre 97 y 122 (cdigos ASCII correspondientes a la letras minusculas) y la funcin chr() para obtener el carcter asociado a un cdigo ASCII dado. </p> <?php $codigo=""; for($i=1;$i<=8;$i++) { $letra=chr(rand(97,122)); $codigo=$codigo.$letra; } print("Contrasea asignada es : <b>$codigo</b>");

?> <p> Construir la tabla de multiplicar desde el 1 al 10 en forma de tabla </p> <?php

print ("<table border=1>"); // Generacion de la fila de la cabecera print "<tr align='center'> <th> * </th>"; for($i=1;$i<=10;$i++) print "<th> $i </th>"; print "<tr>"; for($i=1; $i<=10; $i++) { print "<tr align='CENTER'><th>$i</th>"; for($j=1;$j<=10;$j++) print "<td>". $i*$j . "</td>"; print "</tr>"; } print "<table>"; ?> </body>

</html>

Sentencias break y continue Las sentencias break y continue permiten alterar la ejecucin prevista de una estructura iterativa; la primera de ellas permite cancelar completamente la ejecucin del bucle y la segunda permite cancelar una de las iteraciones y pasar directamente a la siguiente. La sentencia break, adems de permitir abandonar una estructura iterativa se utiliza tambin dentro de la estructura switch para terminar cuando se cumple una condicin.

FUNCIONES EN PHP
PHP permite al programador la creacin de sus propias funciones, ahorrando tiempo y esfuerzo y facilitando un mejor diseo de los programas implementados. La sintaxis que debe adoptarse a la hora de definir una funcin en PHP es: function NombreFuncion(argumentos) { Instrucciones return valorDevuelto;

} Como puede apreciarse, toda definicin de funcin comienza con la palabra reservada function seguida del nombre asignado, la lista de argumentos y el bloque de definicin de la funcin. En los nombres de las funciones no se distingue entre maysculas y minsculas aunque siempre es aconsejable efectuar la llamada a una funcin tal y como ha sido definida. Respecto a los argumentos estos son parmetros formales que vienen representados por variables. Recordar que en PHP no se declaran tipos para las variables, por tanto en los argumentos de la funcin tampoco es necesario indicar tipo alguno. Es posible definir funciones sin argumentos, en este caso, a continuacin del nombre deberan colocarse los parntesis vacios. function nombreFuncion() La sentencia return permite que la funcin devuelva un valor de retorno. Una vez ejecutada esa sentencia se abandona la funcin, sin ejecutar cualquier sentencia posterior que se encuentre en el cuerpo de la misma. El valor devuelto puede ser una cadena de caracteres , un valor numrico, un valor booleano, un array. Debe destacarse que a la hora de definir una funcin no es indispensable que esta devuelva valores; en este sentido en PHP no hay distincin sintctica entre lo que en otros lenguajes son funciones y procedimientos. Ejemplos: <?php function mayor($x,$y,$z) { $may=$x; if($y>$may) $may=$y; if($z>$may) $may=$z; return $may; } function factorial($n) { if($n<0) return "Solo se admiten valores positivos"; elseif($n==0) return 1; else { $f=1; for($i=1;$i<=$n;$i++) $f=$f * $i; return $f; } } function saluda() {

print "Bienvenido<br>"; print "Como estas?<br>";

function generaArray($vi,$vf) { $x=array(); for($valor=$vi;$valor<=$vf;$valor++) $x[]=$valor; return $x; }

?>

<html> <head> <title>Funciones en PHP</title> <STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1>Funciones en PHP</h1> <hr>

<p>Calcular el mayor de 3 numeros</p> <?php $a=12; $b=15; $c=4; $m=mayor($a,$b,$c); print "el mayor de $a, $b y $c es: $m <br>";

?>

<p>Calcular el factorial de un numero </p> <?php $num=6; $r=factorial($num); print "el factorial de $num es : $r <br>";

?>

<p> Funcion que permite saludar, no tiene parametros </p> <?php print saluda(); ?> <p> Funcion que permite generar un array a partir de dos valores numericos dados un valor inicial y un valor final </p> <?php $x=generaArray(5,30); print_r($x); ?> </body>

</html>

Llamadas a las funciones Se debe tener en cuenta lo siguiente La funcin debe encontrarse definida antes del lugar en el que se efectuar la llamada. No obstante es prctica habitual y recomendable definir las funciones incluso antes de cualquier cdigo HTML, por ejemplo, colocar los scripts que definen las funciones antes del comando <HTML> o dentro del encabezado del documento. En la llamada los parmetros, en el caso de que existan, deben ser pasados en el mismo orden en el que aparecen en la definicin. Como parmetros pueden pasarse variables, valores o expresiones. Los valores numricos pueden ser escritos directamente o entrecomillados. En el caso de las funciones que tienen parmetros, en la llamada deben colocarse los parntesis vacios. Si se pasan menos parmetros que los que tiene la funcin, los ltimos parmetros se asumirn como nulos, la funcin ejecutar las instrucciones pero se generaran mensajes de aviso (warnings) Si la funcin devuelve un valor, este puede ser asignado a una variable en la llamada o utilizando directamente en otra expresin.

PARAMETROS DE UNA FUNCION PARAMETROS OPCIONALES En php todos los parmetros de las funciones pueden ser considerados opcionales de manera que a la hora de realizar la llamada a una funcin, pueden pasarse un numero de argumentos distinto del que acepta la funcin. Si se pasan menos argumentos de los esperados, los ltimos se asumirn que tienen valor nulo. En el caso de pasarse ms argumentos de los esperados, los que sobran pueden ser ignorados. Al ejecutar la funcin se generan unos mensajes de aviso notificando el hecho de recibir menos parmetros de los previstos. <?php function suma($a,$b,$c) { return $a+$b+$c; } ?>

<html>

<head> <title>Funciones con parametros opcioneles en PHP</title> <STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1> Funciones con parametros opcionales en PHP </h1> <hr>

<?php print "La suma print "La suma print "La suma print "La suma ?> </body> </html>

es : " es : " es : " es : "

.suma() . "<br>"; .suma(6) . "<br>"; .suma(6,15) . "<br>"; .suma(6,15,4) . "<br>";

Ejemplo: Considere una funcin que reciba el valor de 3 nmeros y retorne la suma de ellos.

PARAMETROS CON VALORES POR DEFECTO Al definir funciones pueden darse valores por defecto para los parmetros , de tal forma que si un parmetro no est presente en la llamada, se le asigna ese valor por defecto en lugar de tomar el valor nulo. Para indicar un valor por defecto basta asignar dicho valor con el signo = en la lista de argumentos de la cabecera de la funcin. Si la funcin tiene argumentos que no llevan valor por defecto y otros que si lo llevan, estos ltimos deben estar situados al final en la lista de argumentos de la funcin. Ejemplo: <?php function suma($a=6,$b=15,$c=4) { return $a+$b+$c; } ?> <html> <head> <title>Funciones con parametros con valores por defecto en PHP</title>

<STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1> Funciones con parametros con valores por defecto en PHP </h1> <hr> <?php print "La suma es : " .suma() . "<br>"; print "La suma es : " .suma(8) . "<br>"; print "La suma es : " .suma(8,20) . "<br>"; print "La suma es : " .suma(8,20,32) . "<br>"; ?> </body> </html>

LISTA DE PARAMETROS DE LONGITUD VARIABLE Las funciones definidas por el usuario pueden recibir lista de argumentos de longitud variable. En este caso a la hora de definir la funcin se puede dejar la lista de argumentos vaca y utilizar una serie de funciones predefinidas para recuperar los argumentos que realmente han sido pasados a la hora de efectuar la llamada a la funcin. La primera de las funciones que puede ser utilizada es : func_num_args() que devuelve el numero de parmetros que efectivamente han sido pasados. Una vez que se sabe cuantos parmetros han sido pasados, es necesario tambin disponer de algn mecanismo para recuperar los valores de los mismos. La siguiente funcin permite recuperar el valor del argumento numero n: func_get_arg(n), debe tenerse en cuenta que la numeracin de los argumentos comienza en 0. Si lo que se desea es recuperar todos los valores de los argumentos en una estructura de datos y en una sola operacin, puede usarse la funcin func_get_args() que devuelve un array con todos los valores de los argumentos. Ejemplo: A continuacin definimos una funcin que calcula la suma de los valores de todos los argumentos.

<?php function suma() { $n=func_num_args(); $aux=0; for($i=0;$i<$n;$i++) $aux = $aux+ func_get_arg($i); return $aux; } ?>

<html> <head> <title>Funciones con parametros de longitud variable en PHP</title> <STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1> Funciones con parametros de longitud variable </h1> <hr> <?php print "La suma es : " .suma(2,5,8) . "<br>"; print "La suma es : " .suma(1,2) . "<br>"; ?> </body> </html>

PASO DE PARAMETROS POR VALOR O POR REFERENCIA A la hora de efectuar la llamada a una funcin, los argumentos pueden ser pasados por valor o por referencia. En el primer caso, lo que se pasa es realmente es una copia del correspondiente valor para que la funcin lo reciba y realice con l las correspondientes operaciones. En el segundo caso, en cambio, cuando se pasa una variable como argumento, no se pasa a la funcin una copia de su valor sino la direccin de memoria donde se encuentra dicha variable. De esta forma la funcin puede acceder directamente a esa zona de memoria y leer o modificar el valor de la variable. Para indicar que es un parmetro por referencia se debe preceder el smbolo & a la variable. <?php function fValor($x) { $x= $x + 2; } function fReferencia(&$x) { $x= $x + 2; } ?> <html>

<head> <title>Funciones con parametros con valores por defecto en PHP</title> <STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1> Funciones con parametros por valor y referencia </h1> <hr> <?php print "Llamando a la funcion con parametro por valor <br>"; $a=12; fValor($a); print "El valor de a es : $a <br>"; print "Llamando a la funcion con parametro por referencia<br>"; $a=12; fReferencia($a); print "El valor de a es : $a <br>"; ?> </body>

</html>

AMBITO DE LAS VARIABLES VARIABLES LOCALES Toda variable definida dentro de una funcin tiene un mbito local a la misma; es decir, nicamente podr ser utilizada dentro de la propia funcin. VARIABLES GLOBALES Una variable declarada fuera de una funcin tiene un mbito global, y no puede ser utilizada dentro de una funcin, a no ser que se declare explcitamente su globalidad. Ejemplo: $director=Amenbar; function prueba() { global $director; print $director; } VARIABLES ESTATICAS Otro aspecto importante relacionado con el mbito de las variables es la posibilidad de definir variables estticas. Una variable esttica tiene un mbito local a la funcin en la que se define pero no pierde su valor cuando se termina la ejecucin de la misma. Es decir conserva el valor entre llamadas sucesivas a la funcin; en contra de lo que ocurre con las variables locales, que pierden su valor una vez que la ejecucin de la funcin ha finalizado. Ejemplo: La siguiente funcin declara una variable estatica, con valor inicial 0, y en cada llamada se incrementa una unidad y escribe su nuevo valor. <?php function pruebaEstatica() { static $n=0; $n++; print "$n "; } ?> <html>

<head> <title>Variables estaticas en PHP</title> <STYLE type="text/css"> <!-H1 {text-decoration: underline; text-align:center} P {font-Family:arial,verdana; color: blue;} // --> </STYLE </head> <body> <h1> variables estaticas en php </h1> <hr> <?php for($i=1;$i<=10;$i++) pruebaEstatica(); ?> </body>

</html>

CLAUSULAS INCLUDE Y REQUIRE Al programar es bastante frecuente que unas mismas lneas de cdigo o conjunto de funciones se necesiten en varios documentos. Puede tratarse por ejemplo de: Funciones de validacin de datos Funciones para mostrar cabeceras o pies de paginas Cdigo de configuracin para acceso a una base de datos Definicin de determinados parmetros del programa. En lugar de copiar el cdigo, se puede optar por escribir el cdigo correspondiente en ficheros externos e incluirlos tantas veces como se quiera en otros ficheros diferentes. Las clausulas include y require permiten incluir y ejecutar el contenido del fichero indicado en aquel que contiene la clausula. De esta forma pueden escribirse completas libreras de funciones y facilitar la portabilidad y reusabilidad. La sintaxis de las dos sentencias de inclusin es idntica: include(fichero.php); require(fichero.php); La inclusin puede realizarse en cualquier punto del programa, incluso puede depender del flujo de ejecucin, por ejemplo, una inclusin dentro de un bloque if.

La nica diferencia entre include y require es que, en caso de no localizar el fichero a incluir, require produce un Error Fatal y no ejecuta el resto del programa ni contina con la c arga de la pagina. En cambio con include, si el fichero no se encuentra se genera un aviso pero se sigue con la ejecucin del resto del programa y carga de la pagina. Ejemplo A continuacin se muestra el uso de la clausula require para incluir en un programa las asignaciones realizadas en el fichero de nombre definiciones.php Fichero: definiciones.php <?php $titulo="Los increibles"; $director="Brad Bird"; $genero="aventuras"; ?> Si otro documento quiere incluir estas definiciones, deber hacerlo de la siguiente manera: <html> <head> <title>Include y Require </title> </head> <body> <?php require("definiciones.php"); print "Nuestro proximo extreno : $titulo<br>"; print "pelicula de genero : $genero<br> "; print "dirigida por : $director<br>"; ?> </body> </html> ARRAYS Un array o matriz es un conjunto de datos que se almacena bajo un nombre comn y a los que se puede acceder utilizando uno o mas ndices. En PHP los datos que componen el array pueden ser de diferente tipo, de manera que en un nico array pueden almacenarse indistintamente cadenas de caracteres, valores numricos, otros arrays,.. Una de las particularidades que distinguen a PHP de otros lenguajes de programacin surge a la hora de crear el array: no es necesario determinar la dimensin antes de inicializarlo. Esto dota de una gran flexibilidad a los programas pues permite la modificacin posterior del array, suprimiendo o aadiendo nuevos elementos cuando sea necesario. Construccion de Arrays Los elementos que componen un array, como cualquier otro elemento, son almacenados en una variable, para indicar que dicha variable contiene un array se utilizan los caracteres [], situando entre ellos un ndice numrico que permitir identificar a cada uno de los elementos individuales. Ejemplo:

$x[0]=12; $x[1]=Hola; $x[2]=25.8; $x[]=Ultimo; A la hora de aadir un ultimo elemento no es necesario indicar el ndice correspondiente. En este ejemplo, automticamente se asigna a la posicin 3. Adems, puede observarse como el array puede contener datos de tipos diferentes, en este caso dos valores numricos y dos cadenas de caracteres. Otra manera de crear arreglos es con ayuda de la funcin array() $x = array(12,Hola,25.8,Ultimo); En este caso no se han considerado ndices y se consideran por defecto los valores 0,1,2,. Arrays Asociativos Supngase que se desea almacenar los aos de un conjunto de pelculas. Se puede construir un array de elementos numricos (los aos) indexados mediante una cadena de caracteres (el titulo de la pelcula correspondiente) $peliculasAo[La costilla de Adan]=1949; $peliculasAo[La gran Ilusion]=1937; $peliculasAo[Roma, la ciudad Abierta]=1944; $peliculasAo[Sabrina]=1954; $peliculasAo[Vive como quieras]=1938; Otra manera de generar este arreglo seria con la funcin array() $peliculasAo = array(La Costilla de Adan => 1949, La gran Ilusion, => 1937, Roma, la ciudad Abierta => 1944, Sabrina => 1954, Vive como quieras => 1938); En este caso, al construir el array debe indicarse tanto la palabra clave que actua de ndice como el valor asociado a ese elemento del array. Aunque el array se haya construido con la funcin array, en cualquier momento se puede aadir un nuevo elemento $peliculasAo[West Side Story] = 1961; Arrays Multidimensionales El lenguaje PHP permite la creacin de arrays ultimensionales, es decir, arrays cuyos elementos son nuevos arrays. La sintaxis es similar al caso de una dimensin, siendo necesario indicar los dos ndices por separado. Ejemplo: A continuacin creamos un array de nombre $M y de dos dimensiones. $M[0][0] = 5; $M[0][1] = 3; $M[1][0] = -2; $M[1][1] = 7; La definicin equivalente usando la funcin array() seria:

$M = array( array(5,3), array(-2,7)); Es posible definir arrays asociativos multidimensionales, e incluso combinar ndices numricos y alfabticos. $pelicula[George Lucas][1949]= La costilla de Adan; $pelicula[Jean Renoir][1937]= La gran Ilusion; $pelicula[Roberto Rosselini][1944] = Roma, Ciudad Abierta; $pelicula[Billy Wilder][1954] = Sabrina; $pelicula[Frank Capra][1938] = Vive como quieras; Tambien es posible indexar los elementos de un array multidimensional $pelicula = array( La costilla de Adan => array(Director =>G. Cukor, Ao => 1949), La gran Ilusion => array(Director =>Jean Renoir, Ao => 1937), Roma, Ciudad Abierta => array(Director =>Roberto Rosselini, Ao => 1944), Sabrina => array(Director =>Billy Wilder, Ao => 1954), Vive como quieras => array(Director =>Frank Capra, Ao => 1938) ) Recorrido de todos los elementos de un array Una vez creado e inicializado un array unidimensional o multidimensional, pude que se est interesado en mostrar o manipular todos sus elementos. Para mostrar todos los elementos de un array, una primera opcin es el uso de la funcin print_r(), que aplicada sobre un array muestra en la pagina la estructura del mismo de acuerdo al siguiente esquema: ( [ndice] => elemento1 [ndice] => elemento2 ... [ndice] => elementon) Para la manipulacin de los elementos de arrays se dispone de estructuras iterativas que simplifican la tarea en particular, es de destacar una sentencia especifica para recorrer todos los elementos de un array: foreach( array as valor) Ejemplo: El siguiente cdigo recorre todos los elementos de un arreglo y los muestra en la pagina $actores = array(Marlon Brando,Gary Cooper,Cary Grant,James Stewart); foreach( $actores as $nombre) echo $nombre <br>; Si adems de recuperar los elementos del array, se desea tambin conocer el ndice, tanto en el caso de ndices numricos como en array asociativos, se puede una sintaxis alternativa del bucle foreach foreach(array as ndice => valor) Ejemplo: Si tenemos el arreglo y queremos reportarlo

$peliculasAo = array (La Costilla de Adan => 1949, La gran Ilusion, => 1937, Roma, la ciudad Abierta => 1944, Sabrina => 1954, Vive como quieras => 1938); foreach($peliculasAo as $indice => $valor) echo <i>$indice,</i> ($valor) <br>; Tambien es posible utilizar estas estructuras iterativas anidadas para recorrer arrays multidimensionales. Ejemplo: $peliculas = array( La costilla de Adan => array(Director =>G. Cukor, Ao => 1949), La gran Ilusion => array(Director =>Jean Renoir, Ao => 1937), Roma, Ciudad Abierta => array(Director =>Roberto Rosselini, Ao => 1944), Sabrina => array(Director =>Billy Wilder, Ao => 1954), Vive como quieras => array(Director =>Frank Capra, Ao => 1938) ); foreach($peliculas as $indice => $titulo) { echo Datos de $indice : <br>; foreach($titulo as $indice =>$valor) echo &nbsp&nbsp $indice; $valor <br>; }

Ejercicio1: Crear y mostrar los arreglos unidimensionales anteriores <html> <head> <title>Arreglos</title> </head> <body> <h1>Arreglos</h1> <hr> <font color="blue">Mostrar los elementos de un arreglo</font><br> <?php $x[0]=12; $x[1]="Hola"; $x[2]=25.8; $x[]="Ultimo"; for($i=0;$i<count($x);$i++) print " elemento $i : $x[$i]<br>"; ?> <br> <font color="blue">Mostrar un arreglo de nombres creado con array </font><br> <?php $actores = array("Marlon Brando","Gary Cooper","Cary Grant","James Stewart");

?> <br> <font color="blue">Mostrar un arreglo asociativo </font><br> <?php $peliculasAo=array("La Costilla de Adan" => 1949, "La gran Ilusion" => 1937, "Roma, la ciudad Abierta" => 1944,"Sabrina" => 1954, "Vive como quieras" => 1938); foreach($peliculasAo as $indice => $valor) echo "<i>$indice,</i> ($valor) <br>\n"; ?> </body> </html>

foreach($actores as $nombre) echo " $nombre <br>";

Ejercicio2: Crear y mostrar las matrices de los ejemplos. <html>

<head> <title>Matrices</title> </head> <body> <h1>Matrices</h1> <hr> <font color="blue">Mostrar los elementos de una matriz</font><br> <?php $M[0][0] = 5; $M[0][1] = 3; $M[1][0] = -2; $M[1][1] = 7;

for($i=0;$i<2;$i++)

{ for($j=0;$j<2;$j++) print $M[$i][$j]." "; print "<br>";

?> <br> <font color="blue">Mostrar un arreglo asociativo multidimensional </font><br> <?php $peliculas = array("La costilla de Adan" => array("Director" =>"G. Cukor", "Ao" => 1949),"La gran Ilusion" => array("Director" =>"Jean Renoir", "Ao" => 1937), "Roma, Ciudad Abierta" => array("Director" =>"Roberto Rosselini", "Ao" => 1944), "Sabrina" => array("Director" =>"Billy Wilder", "Ao" => 1954), "Vive como quieras" => array("Director" =>"Frank Capra", "Ao" => 1938) ); foreach($peliculas as $indice => $titulo) { echo "Datos de : $indice : <br>"; foreach($titulo as $indice =>$valor) echo "&nbsp&nbsp $indice : $valor <br>"; } ?> </body> </html>

PROGRAMACION ORIENTADA A OBJETOS Crear una clase Rectngulo con atributos base y altura y mostrar el rea, permetro y diagonal <?php class Rectangulo{ private $largo,$ancho; public function __construct($l,$a) { $this->largo=$l; $this->ancho=$a; } public function setLargo($l) { $this->largo=$l; } public function setAncho($a) { $this->ancho=$a; }

public function getLargo() { return $this->largo; } public function getAncho() { return $this->ancho; } public function area() { return $this->largo*$this->ancho; } public function perimetro() { return 2*($this->largo + $this->ancho); } public function diagonal() { return sqrt(pow($this->largo,2) + pow($this->ancho,2)); } }

class Caja extends Rectangulo{ private $altura; public function __construct($l,$a,$h) { parent::__construct($l,$a); $this->altura=$h; } public function setAltura($h) { $this->altura=altura; } public function getAltura() { return $this->altura; } public function volumen() { return parent::area()*$this->altura; }

?>

<html> <head> <title>Programacion Orientada a Objetos en PHP</title> </head> <body> <h1>Programacion Orientada a Objetos</h1> <hr> <font color="blue">Crear un Objeto Rectangulo y mostrar area, perimetro, diagonal</font><br> <?php $r= new Rectangulo(3,4); echo "Rectangulo <br>"; echo " Largo: ".$r->getLargo() . "<br>"; echo " Ancho: ".$r->getAncho() . "<br>"; echo " Area: ".$r->area() . "<br>"; echo " Perimetro : ".$r->perimetro() . "<br>"; echo " Diagonal : ".$r->diagonal() . "<br>"; echo "<br>"; ?> <font color="blue">Nuevos valores de atributos</font><br> <?php $r->setLargo(5); $r->setAncho(12); echo " Largo : ".$r->getLargo() . "<br>"; echo " Ancho : ".$r->getAncho() . "<br>"; echo " Area: ".$r->area() . "<br>"; echo " Perimetro : ".$r->perimetro() . "<br>"; echo " Diagonal : ".$r->diagonal() . "<br>"; ?> <font color="blue">Creacion del Objeto caja</font><br> <?php $c= new Caja(6,9,10); echo "Largo : ". $c->getLargo() . "<br>"; echo "Ancho : ". $c->getAncho() . "<br>"; echo "Altura : ". $c->getAltura(). "<br>"; echo "Volumen : ". $c->volumen() . "<br>"; ?>

</html>

</body>

Problema: Implementar una clase con atributos una lista de direcciones y una lista de ttulos y muestre una lista de hipervnculos en forma horizontal (bsicamente un men de opciones) Lo primero que debemos pensar es que valores almacenar la clase, en este caso debemos cargar una lista de direcciones web y los ttulos de los enlaces. Podemos definir dos vectores paralelos que almacenen las direcciones y los ttulos respectivamente. Definiremos dos mtodos: cargarOpcion y mostrar. <html> <head>

<title>Pruebas</title> </head> <body> <?php class Menu { private $enlaces=array(); private $titulos=array(); public function cargarOpcion($en,$tit) { $this->enlaces[]=$en; $this->titulos[]=$tit; } public function mostrar() { for($f=0;$f<count($this->enlaces);$f++) { echo '<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>'; echo "-"; } } } $menu1=new Menu(); $menu1->cargarOpcion('http://www.google.com','Google'); $menu1->cargarOpcion('http://www.yahoo.com','Yhahoo'); $menu1->cargarOpcion('http://www.msn.com','MSN'); $menu1->mostrar(); ?> </body> </html>

Problema: Confeccionar una clase Tabla que permita indicarle en el constructor la cantidad de filas y columnas. Definir otra responsabilidad que podamos cargar un dato en una determinada fila y columna. Finalmente debe mostrar los datos en una tabla HTML. <html> <head>

<title>Pruebas</title> </head> <body> <?php class Tabla { private $mat=array(); private $cantFilas; private $cantColumnas; public function __construct($fi,$co) { $this->cantFilas=$fi; $this->cantColumnas=$co; } public function cargar($fila,$columna,$valor) { $this->mat[$fila][$columna]=$valor; } public function inicioTabla() { echo '<table border="1">'; } public function inicioFila() { echo '<tr>'; } public function mostrar($fi,$co) { echo '<td>'.$this->mat[$fi][$co].'</td>'; } public function finFila() { echo '</tr>'; } public function finTabla() { echo '</table>'; } public function graficar() { $this->inicioTabla(); for($f=1;$f<=$this->cantFilas;$f++) {

$this->inicioFila(); for($c=1;$c<=$this->cantColumnas;$c++) { $this->mostrar($f,$c); } $this->finFila(); } $this->finTabla(); } }

$tabla1=new Tabla(2,3); $tabla1->cargar(1,1,"1"); $tabla1->cargar(1,2,"2"); $tabla1->cargar(1,3,"3"); $tabla1->cargar(2,1,"4"); $tabla1->cargar(2,2,"5"); $tabla1->cargar(2,3,"6"); $tabla1->graficar(); ?> </body> </html>

Problema: Una pgina web es comn que contenga una cabecera, un cuerpo y un pi de pgina. Estas tres secciones podemos perfectamente identificarlas como clases. Tambin podemos identificar otra clase pgina. Ahora bien cmo podemos relacionar estas cuatro clases (pagina, cabecera, cuerpo, pie), como podemos imaginar la cabecera, cuerpo y pie son partes de la pagina. Luego podemos plantear una clase pagina que contenga tres atributos de tipo objeto <html> <head> <title>Pruebas</title> </head> <body> <?php class Cabecera {

private $titulo; public function __construct($tit) { $this->titulo=$tit; } public function graficar() { echo '<h1 style="text-align:center">'.$this->titulo.'</h1>'; } } class Cuerpo { private $lineas=array(); public function insertarParrafo($li) { $this->lineas[]=$li; } public function graficar() { for($f=0;$f<count($this->lineas);$f++) { echo '<p>'.$this->lineas[$f].'</p>'; } } } class Pie { private $titulo; public function __construct($tit) { $this->titulo=$tit; } public function graficar() { echo '<h4 style="text-align:left">'.$this->titulo.'</h4>'; } } class Pagina { private $cabecera; private $cuerpo; private $pie; public function __construct($texto1,$texto2) { $this->cabecera=new Cabecera($texto1); $this->cuerpo=new Cuerpo(); $this->pie=new Pie($texto2); } public function insertarCuerpo($texto) {

$this->cuerpo->insertarParrafo($texto); } public function graficar() { $this->cabecera->graficar(); $this->cuerpo->graficar(); $this->pie->graficar(); } } $pagina1=new Pagina('Ttulo de la Pgina','Pie de la pgina'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 1'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 2'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 3'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 4'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 5'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 6'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 7'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 8'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la pgina 9'); $pagina1->graficar(); ?> </body> </html>

Base de datos con PHP y MYSQL Apertura de la conexin El primer paso para conseguir acceder a los datos de una base de datos MySQL es establecer la conexin con el servidor de base de datos. Desde PHP esta conexin se realiza con la funcin. mysql_connect(servidor,usuario,contrasea); Los tres parmetros anteriores permiten identificar el servidor sobre el que est instalado MySQL, y el nombre de usuario y contrasea necesarios para conectarse. Por supuesto, estos dos ltimos datos deben coincidir con los de un usuario registrado en MySQL La funcin mysql_connect() devuelve un valor entero que se utilizara como identificador de la conexin en las operaciones posteriores. Si se produce un error en la conexin, el valor devuelto por la funcin ser 9. Cierre de la Conexin La conexin realizada se cierra automticamente al terminar la ejecucin del script en el que se ha establecido, o bien explcitamente con la funcin mysql_close(). Esta funcin recibe como nico argumento el identificador de la conexin. mysql_close(identificador); El identificador de la conexin en la funcin mysql_close() es opcional, en caso de que no se indique se cerrara la ultima conexin abierta. La funcin mysql_close() devuelve un valor entero que ser nulo en el caso de que se produzca algn error en el proceso. De esta manera, el esquema general de un programa que realiza conectividad con MySQL seria: $c = mysql_connect(localhost,root,); if(!$c) die(Lo siento, error en la conexion); else print Conexin establecida correctamente; ... ... mysql_close(); Seleccin de la Base de Datos Una vez abierta la conexin con el servidor MySQL, el siguiente paso ser la seleccin de una base de datos disponibles para la realizacin de las operaciones posteriores sobre ella. La funcin que permite seleccionar una base de datos es : mysql_select_db(nombreBaseDeDatos,identificadorConexion);

El primer parmetro ser el nombre de la base de datos a seleccionar y el segundo el identificador de la conexin. De nuevo, como en todas las funciones de conexin, si se produce un error, por ejemplo, porque la base de datos no existe, la funcin mysql_select_db() devolver el valor 0. $c=mysql_connect(localhost,root,); $bd = mysql_select_db(bdejemplo,$c); if( !$c ) die(Base de datos no existente); Ejecucin de sentencias SQL sobre la base de datos seleccionada La seleccin mysql_query() permite ejecutar cualquier sentencia SQL sobre la base de datos activa. Esta funcin admite dos argumentos, el primero es una cadena de caracteres con el cdigo SQL de la consulta a realizar; el segundo argumento ser el identificador de la conexin. mysql_query(sentencia, identificadorDeConexion); Esta funcin devuelve 0 si se produce algn error o un numero entero positivo en caso de ejecucin correcta. En las sentencias de seleccin, este valor devuelto se utilizar posteriormente para acceder el resultado de la consulta. En el caso de sentencias de creacin, insercin, eliminacin o actualizacin, este valor devuelto nicamente sirve para comprobar si la sentencia se ejecuto correctamente.

Ejemplo: $c = mysql_connect(localhost, root, ); if(!$c) die(conexion fallida); $ok = mysql_select_db(bdejemplo, $c); if(!$ok) die(error en la seleccion de la base de datos); $consulta = alter table producto add tipo varchar(20) not null; $resultado=mysql_query($consulta, $c); if($resultado) print(Tabla actualizada); else printt(No se ha podido actualizar la tabla); mysql_close($c); Funciones usadas en el manejo de base de datos mysql_num_rows() : Devuelve el numero de filas de un resultado. Ejemplo: $resultado= mysql_query($consulta, $c); if(mysql_num_rows($resultado)) { ... } die(mensaje): La funcin die() se encarga de imprimir un mensaje, pero adems detiene hasta ese punto la ejecucin del script.

mysql_fetch_array(id_resultado): Extrae la fila de resultado como un array asociativo. Devuelve una matriz que corresponde a la sentencia extraida, o falso si no quedan ms filas_

Ejemplo: <?php $c= mysql_connect($host,$user,$password); $ok= mysql_select_db(bdejemplo, $c); $consulta=select * from producto; $resultado = mysql_query($consulta, $c); while($row = mysql_fetch_array($resultado)) { echo $row["idproducto"]; echo $row["nombreproducto"]; } mysql_free_result($resultado); ?> mysql_fetch_object ( id_resultado ) : Extrae una fila de resultado como un objeto. Devuelve un objeto con las propiedades que corresponden a la ltima fila extrada, o FALSE si no quedan ms filas. mysql_fetch_object() es similar a mysql_fetch_array(), con la diferencia que un objeto es devuelto en lugar de un array asociativo. Indirectamente, quiere decir que solo se puede aceder a los datos por el nombre del campo, y no por su posicin. Nota: Los nombres de campos retornados por esta funcin diferencian entre maysculas y minsculas.

Ejemplo: <?php $c = mysql_connect("hostname", "user", "password"); $ok=mysql_select_db("mydb"); $result = mysql_query("select * from mytable", $c); while ($row = mysql_fetch_object($result)) { echo $row->user_id; echo $row->fullname; } mysql_free_result($result); ?> mysql_fetch_row(id_resultado); Devuelve una fila de resultado como matriz. Devuelve: Una matriz que corresponde a la fila selecionada, o FALSE si no quedan ms filas. mysql_fetch_row() seleciona una fila de datos del resultado asociado al identificador de resultado especificado. La fila es devuelta como una matriz. Cada columna del resultdo es guardada en un offset de la matriz, empezando por el offset 0. La llamada a mysql_fetch_row() deber devolver la proxima fila del resultado, o FALSE si no quedan mas filas. Ejemplo: <?php

$c = mysql_connect("hostname", "user", "password"); $ok=mysql_select_db("mydb"); $result = mysql_query("select * from mytable", $c); while ($row = mysql_fetch_row($result)) { echo $row[0]; echo $row[1]; } Ejercicio Crear una base de datos llamada empresa, y luego una tabla llamada producto con los siguientes atributos; idproducto, descripcin, precio y stock. Luego hacer un men de opciones con los siguiente: Registrar Productos Mostrar Productos Consultar Producto Eliminar Producto Modificar Producto

formularioRegistro.html
<html > <head> <title>Registro de Productos</title> </head> <body> <h1>Registro de Productos</h1> <hr color="#CC0000"/> <form action ="insertaproducto.php" method="post"> idproducto <input type="text" name="idproducto"><br> descripcion <input type="text" name="descripcion"><br> precio <input type="text" name="precio"><br> stock <input type="text" name="stock"><br> <input type="submit" value="registrar"> <input type="reset" value="borrar"> </form> <p>&nbsp;</p> </body> </html>

insertaproducto.php
<html> <head> <title>registro de nuevo producto</title> </head> <body> <?php // Comprobacion de la recepcion de las variables $idproducto=$_POST["idproducto"];

$descripcion=$_POST["descripcion"]; $precio=$_POST["precio"]; $stock = $_POST["stock"]; if(isset($idproducto,$descripcion,$precio,$stock)) { $host="localhost"; $usuario="root"; $password=""; $db="empresa"; $c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error()); mysql_select_db($db,$c) or die("Error ". mysql_error()); $consulta="INSERT INTO producto(idproducto,descripcion,precio,stock) VALUES ('$idproducto','$descripcion','$precio','$stock')"; // Ejecucion de la consulta if(mysql_query($consulta,$c)) print("<center><h2> PRODUCTO REGISTRADO</h2></center>"); } else print("No se han definido las variables"); ?> </body> </html>

mostrarProductos.php
<html > <head> <title>Lista de Productos </title> </head> <body> <h1 align="center"><font color="#CC0000">Lista de Productos Disponibles</font></h1> <hr color="#0066CC" /> <?PHP $host="localhost"; $usuario="root"; $password=""; $db="empresa"; $c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error()); mysql_select_db($db,$c) or die("Error ". mysql_error());

$consulta="SELECT * FROM producto"; $resultado = mysql_query($consulta,$c); if($resultado) { echo "<table border width=100%>

<tr> <th>numero</th> <th>idproducto</th> <th>descripcion</th> <th>precio</th> <th>stock</th> </tr> "; $cont=0; while($registro=mysql_fetch_array($resultado)) { $cont++; echo "<tr align=center> <td>$cont</td> <td>$registro[0]</td> <td>$registro[1]</td> <td>$registro[2]</td> <td>$registro[3]</td> </tr>"; } echo "</table>"; } mysql_close($c); ?> </body> </html>

formularioConsultaProducto.html
<html> <head> <title>ConsultaProducto</title> </head> <body> <div align="center"> <h1>Consulta de Productos </h1> </div> <hr color="#0066FF"/> <form action="consultaproducto.php" method="post"> idproducto : <input type="text" size="8" name="idproducto" ><br /> <input type="submit" value="enviar" /> <input type="reset" value="borrar" /> </form> </body> </html>

consultaproducto.php
<html>

<head> <title>mostrar Producto </title> </head> <body> <h1>Datos del Producto </h1> <hr color="#CC0000"/> <?php $host="localhost"; $usuario="root"; $password=""; $db="empresa"; $c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error()); mysql_select_db($db,$c) or die("Error ". mysql_error()); $idproducto=$_POST["idproducto"]; $consulta="SELECT * FROM producto WHERE idproducto='$idproducto'"; $resultado=mysql_query($consulta,$c); // comprobacion de la existencia de algun registro resultado if(mysql_num_rows($resultado)) { // se recupera el registro resultado en array $registro=mysql_fetch_row($resultado); echo " <P align=center> <table border=1 width=40% bgcolor=##99CCFF> <tr> <td>idproducto </td> <td>$registro[0]</td> </tr> <tr> <td>descripcion </td> <td>$registro[1]</td> </tr> <tr> <td>precio </td> <td>$registro[2]</td> </tr> <tr> <td>stock </td> <td>$registro[3]</td> </tr> <table> </p> <br> <A HREF=\"formularioConsultaProducto.html\"> Volver a Consultar Producto</A>"; } else

echo("EL ID DEL PRODUCTO NO EXISTE"); ?> </body> </html>

formularioEliminaProducto.html
<html > <head> <title>elimina productos </title> </head> <body> <div align="center"> <h1>Eliminacion de Productos </h1> </div> <hr color="#FF0000"/> <form action="eliminaproducto.php" method="post"> idproducto : <input type="text" size="8" name="idproducto" ><br /> <input type="submit" value="enviar" /> <input type="reset" value="borrar" /> </form> </body> </html>

eliminaproducto.php
<html > <head><title>elimina producto </title> </head> <body> <?php $host="localhost"; $usuario="root"; $password=""; $db="empresa"; $c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error()); mysql_select_db($db,$c) or die("Error ". mysql_error());

$idproducto=$_POST["idproducto"]; $consulta="select * from producto where idproducto='$idproducto'"; $resultado=mysql_query($consulta,$c);

if(mysql_num_rows($resultado)) { $consulta = "DELETE FROM producto where idproducto='$idproducto'"; $resultado=mysql_query($consulta,$c); if($resultado) echo "<center><I> registro eliminado </I><center>"; } else echo "<center><I> no existe el id del producto </I><center>"; mysql_close($c); ?> <hr> <div align="justify"><a href="formularioEliminaProducto.html"> Volver a eliminar </a> </div> </body> </html>

formularioModificaProducto.html
<html > <head> <title> Modificar Producto</title></head> <body> <body> <div align="center"> <h1>Modificacion de Productos </h1> </div> <hr color="#0066FF"/> <form action="modificaproducto.php" method="post"> idproducto : <input type="text" size="8" name="idproducto" ><br /> <input type="submit" value="enviar" /> <input type="reset" value="borrar" /> </form> </body> </html>

modificaproducto.php
<html> <head> <title> Modificacion de datos de un Producto</title> </head> <body> <?php $host="localhost"; $usuario="root"; $password=""; $db="empresa";

$c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error()); mysql_select_db($db,$c) or die("Error ". mysql_error());

$idproducto=$_POST["idproducto"]; if(isset($_POST["modificar"])) { $descripcion=$_POST["descripcion"]; $precio=$_POST["precio"]; $stock = $_POST["stock"]; $consulta = "UPDATE producto SET descripcion='$descripcion', precio=$precio, stock=$stock where idproducto='$idproducto' "; $resultado=mysql_query($consulta,$c); if($resultado) echo "<center><I> Datos actualizados </I><center>";

} else {

$consulta="select * from producto where idproducto='$idproducto'"; $resultado=mysql_query($consulta,$c); // comprobacion de la existencia de algun registro resultado if(mysql_num_rows($resultado)) { // se recupera el registro resultado en array $registro=mysql_fetch_row($resultado); mostrarpagina($registro); } else echo "<h2 align=center> Contrasea incorrecta</h2>"; } mysql_close($c); ?> <?php function mostrarpagina($datos) { echo "<form action=modificaproducto.php method=post>"; echo "<table width=80% border bgcolor=##99CCFF> <tr> <th bgcolor=cyan>idProducto</th> <td> $datos[0] </td> </tr> <tr> <th bgcolor=cyan>descripcion</th> <td> <input type=text size=50 name=descripcion value='$datos[1]'></td> </tr>

<tr> <th bgcolor=cyan>precio</th> <td> <input type=text size=50 name=precio value=$datos[2]></td> </tr> <tr> <th bgcolor=cyan>stock</th> <td> <input type=text size=50 name=stock value=$datos[3]></td>

} ?>

</tr> </table>"; echo " <input type=hidden name=modificar value=1> <input type=hidden name=idproducto value=$datos[0]> <br><input type=submit value=Actualizar> </form> ";

<hr> <div align="justify"><a href="formularioModificaProducto.html"> Volver a modificar </a> </div> </body> </html>

You might also like