El lenguaje php

847 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
847
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

El lenguaje php

  1. 1. El Lenguaje PHP PHP es un lenguaje interpretado(el compilador ejecuta línea por línea) del lado del servidor que se caracteriza por su potencia, versatilidad, robustez y modularidad. Los programas escritos en PHP son embebidos directamente en el código HTML y ejecutados por el servidor web a través de un intérprete antes de transferir al cliente que lo ha solicitado un resultado en forma de código HTML puro. Al ser un lenguaje que sigue la corriente open source, tanto el intérprete como su código fuente son totalmente accesibles de forma gratuita en la red. En concreto, la dirección 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 mayoría de servidores web y estando preparado para interactuar con más 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 código 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>
  2. 2. FORMAS DE INCRUSTAR EL CODIGO PHP EN LOS DOCUMENTOS HTML Existen 4 formas de incrustar código PHP, dos de ellas están siempre disponible y las dos restantes dependen da la configuración particular del servidor. Las dos formas siempre disponibles de delimitar código 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 código 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 código PHP, la más recomendable es la primera (<?php ….. ?>), por varias razones: por ser la especifica de PHP, por estar disponible en cualquier servidor, y por ser además la única que permite incrustar código PHP también en XML y en XHTML.
  3. 3. 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 código fuente de los programas son: - El uso de las mayúsculas y minúsculas es indiferente(solo instrucciones). A diferencia de otros lenguajes similares, PHP permite que las diferentes sentencias estén escritas con cualquier combinación de letras mayúsculas o minúsculas. Por ejemplo con las estructuras condicionales sería totalmente equivalente utilizar la palabra if o IF. Una excepción importante a esta regla se produce en los nombres de las variables, no es lo mismo nombrar una variable con letras mayúsculas que hacerlo con minúsculas. - Se pueden colocar todos los espacios en blanco y cambios de línea que se deseen con objeto de hacer mas legible el código fuente. Estos espacios adicionales no tienen efecto alguno en la ejecución 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 sería necesario en la última sentencia del script antes del terminador ?>, ni en los casos en los que al final de la instrucción se cierre un bloque de código con una llave, por ejemplo en las estructuras condicionales o bucles - Las instrucciones se pueden partir en tantas líneas como se desee a efectos, de nuevo, de mejorar la legilibilidad. Esta división de las instrucciones no afecta a la ejecución. - En una misma línea 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 asignación diferentes INSERCION DE COMENTARIOS EN EL CODIGO - Comentarios de una línea : // - Comentarios de varias líneas /* */ ELEMENTOS BASICOS DEL LENGUAJE TIPOS DE DATOS Como todo lenguaje de programación, PHP puede trabajar con una serie de tipos de datos básicos. En concreto los tipos de datos admitidos son: - Números 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
  4. 4. hexadecimal. - Ejemplos de números Ejemplos de en numero base en 10 : 45 -142 octal: 0123 783 (equivale a 83) - Ejemplos de números en hexadecimal: 0x12 (equivale a 18) - Números reales: Los números reales se pueden dar en dos formatos; como parte entera y parte decimal, usando Ejemplos: 14.67 - el -76.0023 punto 1.4e3 como separador, o en notación científica. -78.5e-4 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 delimitación 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 común. Como se verá al capítulo dedicado a estas estructuras de datos, PHP admite la posibilidad de construir dos tipos de arrays: arrays asociativos e indexados. - Objetos: finalmente PHP admite también la posibilidad de crear objetos y realizar acción 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 programación orientada a objetos. VARIABLES Algunas de las peculiaridades de las variables en PHP son: No es necesario declarar explícitamente, sino que basta con utilizarlas cuando se necesite. En principio las variables no tienen un tipo predefinido, puede asignarse cualquier tipo de valor. La asignación 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 carácter de subrayado, pero nunca comenzando por un digito. Entre las letras que pueden utilizarse se encuentran los caracteres cuyo código 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 mayúsculas y minusculas, de manera que $area y $AREA serian variables diferentes. Una variable se puede utilizar asignándole a la lo largo del tiempo datos incluso de distinto tipo. Ejemplo de nombres de variables validas $titulo $fecha_nacimiento $año $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>
  5. 5. En este caso, a la primera variable se le asigna una cadena de caracteres y a la segunda un número 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 serán sustituidas por sus valores. Ejemplo: <html> <head> </html> <title>Variables en PHP</title> </head> <body> <?php $x="Importe: "; echo $x; $x=5; echo $x . " (precio normal) "; (el . sirve para concatenar cadenas) //también echo “$x (precio normal) "; $x = $x * 0.85; echo $x . " (precio reducido) "; ?> </body>
  6. 6. Como puede observarse, en este programa se ha utilizado una única variable $x a la que inicialmente se le asigno una cadena de caracteres, después se le asigno un numero entero y finalmente, el resultado de una expresión 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 inclusión 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 conversión de tipo explicita se puede realizar mediante el operador cast: (tipo) expresión; O mediante la función settype(); $telef= (string) 949567894; $x= (integer) 5.97; $y=12.5; settype($y,”integer”); settype($y,”float”);
  7. 7. AMBITO DE LAS VARIABLES El ámbitode 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 abarcaría el documento completo en el que son definidas, a no ser que sean definidas dentro de una función, en cuyo caso solo pueden ser utilizadas dentro de la propia función (ámbito local) Esto significa que una variable definida en un script del documento fuera de cualquier función, 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>
  8. 8. Una variable global puede ser utilizada dentro de cualquier función, pero para hacer referencia a ella debe declararse dentro de la función 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 función y es utilizada dentro de la función calcular_importe(). Por otro lado, la variable $i está definida dentro de la función y no puede ser utilizada fuera de ella. Funciones usadas con variables isset() : Permite averiguar si una variable ha sido definida. Esta función 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 también libera el espacio de memoria reservado para ella. Cualquier intento posterior de acceso a esa variable generaría 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 ejecución del script y a la que se le asigna un identificador. Solo puede definirse constantes con valores escalares (números o cadenas de caracteres). Por ejemplo no podría definirse una constante cuya valor fuese un array. La definición de constantes de realiza con la función 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 símbolo $. Aunque no es una regla obligatoria por convenio se suele utilizar identificadores con letras mayúsculas para las constantes.
  9. 9. Otra diferencia con las variables está en la ausencia de cualquier restricción 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 parámetros del programa que no se espera que cambien.
  10. 10. CADENAS DE CARACTERES Y VARIABLES Las cadenas de caracteres constituyen uno de los tipos de datos básicos del lenguaje PHP. En su definición 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 cerrándola con comillas simples. La inclusión de determinados caracteres en las cadenas exige la utilización de las denominadas secuencias de escape. Entre estos caracteres especiales están las comillas, el signo dólar, la barra invertida y los caracteres de tabulación y retorno de carro. En la siguiente tabla se muestran algunas de estas secuencias de escape. Secuencia de Escape Significado n Nueva línea r Retorno de Carro t Tabulador Barra invertida ‟ Comillas simples ” Comillas dobles xNum Carácter cuyo código ASCII en hexadecimal es Num Num Carácter cuyo código 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>
  11. 11. En la cadena anterior se utilizan dos secuencias de escape que no tienen reflejo en la pagina que sería visualizada por el navegador del cliente, pero si en el código fuente HTML: el carácter de nueva línea y el tabulador se incluirían en el código 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 carácter de código 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 aparecerán sus identificadores como cualquier otro carácter de la misma. Además 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"; $año=1999; print "Sesion Especial : "$titulo" de $director ($año)"; </html> ?> </body>
  12. 12. Observar como al utilizar las comillas dobles, los nombres de variables que aparecen dentro de la cadena son sustituidos por sus valores. Esta característica de PHP es especialmente útil y evita tener que recurrir a engorrosas operaciones de concatenación de cadenas con variables. En cambio la sentencia print „Sesion Especial : "$titulo" de $director ($año)‟; Escribiría el siguiente mensaje Sesion Especial: ”$titulo”de $director ($año) 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 Asignación En diversos ejemplos previos ya se ha utilizado el operador de asignación 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 expresión que se encuentra a la derecha. $variable = valor o expresión; También se puede asignar varias asignaciones en una sola sentencia. $a = $b = $c =1; Operadores Aritméticos Los operadores aritméticos básicos son los habituales de cualquier lenguaje de programación + * / % Suma Resta Multiplicación División Modulo: Residuo de la división de dos números enteros. Además de los operadores anteriores se dispone de los operadores de incremento y decremento que existen también en lenguajes C o C++ ++$x $x++ --$x $x-- Incrementa una unidad el valor de $x Incrementa una unidad el valor de $x, pero después de evaluar el resto de la expresión. Disminuye una unidad el valor de $x Disminuye una unidad el valor de $x, pero después de evaluar el resto de la expresión
  13. 13. 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> </html> </form> </body>
  14. 14. 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>
  15. 15. 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 método utilizado para el envío de datos del formulario. Variables de petición: $_REQUEST Una matriz asociativa que consiste en los contenidos de $_GET, $_POST, y $_COOKIE. Esta es una variable 'superglobal', o global automática. 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 métodos. Variables HTTP GET: $_GET Una matriz asociativa de variables pasadas al script actual a través del método HTTP GET. Global automáticamente en cualquier contexto. Esta es una variable 'superglobal', o global automática. 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 métodos, como lo hace con $HTTP_GET_VARS. $HTTP_GET_VARS contiene la misma información 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 través del método HTTP POST. Global automáticamente en cualquier contexto. Esta es una variable 'superglobal', o global automática. 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 métodos, como lo hace con $HTTP_POST_VARS. $HTTP_POST_VARS contiene la misma información inicial, pero no es autoglobal. (Note que HTTP_POST_VARS y $_POST son variables diferentes y que PHP las trata como tal) Métodos de transferencia de datos en Formularios Los datos que el usuario introduzca en un formulario de una página web pueden ser transferidos al servidor para su procesamiento con dos métodos diferentes. Método GET: los datos son enviados dentro del URL de localización del destino Método POST: los datos son enviados de manera invisible para el usuario haciendo uso del protocolo http y en un encabezado independiente. El método de transferencia se especifica en la definición del formulario mediante el parámetro METHOD, asignándole el valor “Get” o “Post” en función del método elegido. En caso de ausencia de ese parámetro, se considera como método por defecto el método GET. En el caso de que los datos deban ser transferidos por correo electrónico, es obligatorio el uso del método POST.
  16. 16. OPERADORES DE COMPARACION Sirven para comparar 2 valores devolviendo un valor verdadero si la comparación 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 además si son del mismo tipo (operador de identidad) Comprueba si $x e $y tienen distinto valor (negación de igualdad) Comprueba si $x e $y tienen distinto valor y/o tipo (negación 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 && || ! And Or Not OPERADORES LOGICOS y o negación ESTRUCTURAS CONDICIONALES Sentencia if.. else Sirve para escoger uno de dos caminos en un programa de acuerdo al resultado de una comparación if(expresión) Instruccion1; else Instruccion2; Si expresión es verdadera se ejecuta Instrucción1, si es falsa se ejecuta Instruccion2. En PHP toda expresión que produzca como resultado un valor numérico distinto de cero, una cadena diferente de la cadena vacia o un array no vacio, si aparece dentro de un contexto lógico es tratado como el valor booleano verdadero (true). Si se desea ejecutar un conjunto de Instrucciones al resultar verdadero o falsa la expresión, las instrucciones se deben colocar entre llaves if(expresión) { Instrucciones1; } else { Instrucciones2; } La sentencia else es Opcional
  17. 17. If(expresión) { 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);
  18. 18. $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 if…elseif…..else if(condicion1) { Instrucciones1; } elseif (condicion2) { Instrucciones2; } elseif(condicion3) { Instrucciones3; } else
  19. 19. { Instrucciones a ejecutar si ninguna de las condiciones anteriores es cierta } El funcionamiento de esta sentencia es el siguiente: Si la primera condición es evaluada como cierta entonces se ejecutan las sentencias del bloque correspondiente y tras ello finaliza la ejecución de la sentencia, En el caso de que la primera condición 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>
  20. 20. Sentencia switch La sintaxis básicas de la sentencia es : switch(expresión) { case valor1: Instrucciones 1; break; case valor2: Instrucciones 2; break; ... case valorN: Instrucciones N; break; default: Instrucciones; } Esta instrucción evalúa la expresión 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 continuación hasta llegar al final de la estructura o encontrarse con una sentencia de finalización break. La clausula default es opcional y permite indicar las sentencias a ejecutar cuando la expresión no toma ninguno de los valores anteriores. La expresión que se evalúa y compara en la sentencia switch puede ser cualquier expresión que se evalué a un tipo simple, es decir, números 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;
  21. 21. 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 año es bisiesto o no (un año es bisiesto cuando es multiplo de 4 pero no de 100, o bien cuando es multiplo de 400) </font></p> <?php
  22. 22. $mes=2; $año=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(($año%4==0 && $año%100!=0) || $año % 400==0) $nd=29; else $nd=28; break; } echo "el numero de dias del mes es : $nd <br>"; ?> </html> </body>
  23. 23. Estructuras Repetitivas 1) while (mientras) while(expresión) { Instrucciones } Las instrucciones se ejecutan mientras la condición es verdadera. En otras palabras termina cuando la expresión es falsa. 2) do . . . while (Hacer mientras) do{ Instrucciones; }while(condición); 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 están almacenados todos los datos y el nombre de una variable, En la iteración 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">
  24. 24. <!-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;
  25. 25. 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>"; ?> </html> </body>
  26. 26. Ejercicios 1) Construir en forma aleatoria, una contraseña formada por 8 letras. Se puede utilizar la funcin rand() para generar un numero aleatorio entre 97 y 122 (códigos ASCII correspondientes a la letras minusculas) y la función chr() para obtener el carácter asociado a un código ASCII dado. 2) Construir la tabla de multiplicar del 1 al 10 en forma de tabla. Solución <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 contraseña formada por 8 letras. Se puede utilizar la funcin rand() para generar un numero aleatorio entre 97 y 122 (códigos ASCII correspondientes a la letras minusculas) y la función chr() para obtener el carácter asociado a un código ASCII dado. </p> <?php $codigo=""; for($i=1;$i<=8;$i++) { $letra=chr(rand(97,122)); $codigo=$codigo.$letra; } print("Contraseña asignada es : <b>$codigo</b>"); ?> <p> Construir la tabla de multiplicar desde el 1 al 10 en forma de tabla </p> <?php
  27. 27. 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>"; ?> </html> </body>
  28. 28. Sentencias break y continue Las sentencias break y continue permiten alterar la ejecución prevista de una estructura iterativa; la primera de ellas permite cancelar completamente la ejecución del bucle y la segunda permite cancelar una de las iteraciones y pasar directamente a la siguiente. La sentencia break, además de permitir abandonar una estructura iterativa se utiliza también dentro de la estructura switch para terminar cuando se cumple una condición. FUNCIONES EN PHP PHP permite al programador la creación de sus propias funciones, ahorrando tiempo y esfuerzo y facilitando un mejor diseño de los programas implementados. La sintaxis que debe adoptarse a la hora de definir una función en PHP es: function NombreFuncion(argumentos) { Instrucciones return valorDevuelto;
  29. 29. } Como puede apreciarse, toda definición de función comienza con la palabra reservada function seguida del nombre asignado, la lista de argumentos y el bloque de definición de la función. En los nombres de las funciones no se distingue entre mayúsculas y minúsculas aunque siempre es aconsejable efectuar la llamada a una función tal y como ha sido definida. Respecto a los argumentos estos son parámetros formales que vienen representados por variables. Recordar que en PHP no se declaran tipos para las variables, por tanto en los argumentos de la función tampoco es necesario indicar tipo alguno. Es posible definir funciones sin argumentos, en este caso, a continuación del nombre deberían colocarse los paréntesis vacios. function nombreFuncion() La sentencia return permite que la función devuelva un valor de retorno. Una vez ejecutada esa sentencia se abandona la función, 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 numérico, un valor booleano, un array…. Debe destacarse que a la hora de definir una función no es indispensable que esta devuelva valores; en este sentido en PHP no hay distinción sintáctica 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() {
  30. 30. 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>";
  31. 31. <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); </html> ?> </body>
  32. 32. Llamadas a las funciones Se debe tener en cuenta lo siguiente La función debe encontrarse definida antes del lugar en el que se efectuará la llamada. No obstante es práctica habitual y recomendable definir las funciones incluso antes de cualquier código HTML, por ejemplo, colocar los scripts que definen las funciones antes del comando <HTML> o dentro del encabezado del documento. En la llamada los parámetros, en el caso de que existan, deben ser pasados en el mismo orden en el que aparecen en la definición. Como parámetros pueden pasarse variables, valores o expresiones. Los valores numéricos pueden ser escritos directamente o entrecomillados. En el caso de las funciones que tienen parámetros, en la llamada deben colocarse los paréntesis vacios. Si se pasan menos parámetros que los que tiene la función, los últimos parámetros se asumirán como nulos, la función ejecutará las instrucciones pero se generaran mensajes de aviso (warnings) Si la función devuelve un valor, este puede ser asignado a una variable en la llamada o utilizando directamente en otra expresión. PARAMETROS DE UNA FUNCION PARAMETROS OPCIONALES En php todos los parámetros de las funciones pueden ser considerados opcionales de manera que a la hora de realizar la llamada a una función, pueden pasarse un numero de argumentos distinto del que acepta la función. Si se pasan menos argumentos de los esperados, los últimos se asumirán que tienen valor nulo. En el caso de pasarse más argumentos de los esperados, los que sobran pueden ser ignorados. Al ejecutar la función se generan unos mensajes de aviso notificando el hecho de recibir menos parámetros de los previstos. <?php function suma($a,$b,$c) { return $a+$b+$c; } ?>
  33. 33. <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 función que reciba el valor de 3 números y retorne la suma de ellos. PARAMETROS CON VALORES POR DEFECTO Al definir funciones pueden darse valores por defecto para los parámetros , de tal forma que si un parámetro 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 función. Si la función 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 función. 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>
  34. 34. <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 función se puede dejar la lista de argumentos vacía 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 función. La primera de las funciones que puede ser utilizada es : func_num_args() que devuelve el numero de parámetros que efectivamente han sido pasados. Una vez que se sabe cuantos parámetros han sido pasados, es necesario también disponer de algún mecanismo para recuperar los valores de los mismos. La siguiente función permite recuperar el valor del argumento numero n: func_get_arg(n), debe tenerse en cuenta que la numeración 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 operación, puede usarse la función func_get_args() que devuelve un array con todos los valores de los argumentos. Ejemplo: A continuación definimos una función que calcula la suma de los valores de todos los argumentos.
  35. 35. <?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>
  36. 36. PASO DE PARAMETROS POR VALOR O POR REFERENCIA A la hora de efectuar la llamada a una función, 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 función 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 función una copia de su valor sino la dirección de memoria donde se encuentra dicha variable. De esta forma la función puede acceder directamente a esa zona de memoria y leer o modificar el valor de la variable. Para indicar que es un parámetro por referencia se debe preceder el símbolo & 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>
  37. 37. AMBITO DE LAS VARIABLES VARIABLES LOCALES Toda variable definida dentro de una función tiene un ámbito local a la misma; es decir, únicamente podrá ser utilizada dentro de la propia función. VARIABLES GLOBALES Una variable declarada fuera de una función tiene un ámbito global, y no puede ser utilizada dentro de una función, a no ser que se declare explícitamente su globalidad. Ejemplo: $director=”Amenábar”; function prueba() { global $director; print $director; } VARIABLES ESTATICAS Otro aspecto importante relacionado con el ámbito de las variables es la posibilidad de definir variables estáticas. Una variable estática tiene un ámbito local a la función en la que se define pero no pierde su valor cuando se termina la ejecución de la misma. Es decir conserva el valor entre llamadas sucesivas a la función; en contra de lo que ocurre con las variables locales, que pierden su valor una vez que la ejecución de la función ha finalizado. Ejemplo: La siguiente función 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>
  38. 38. <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> </html> <?php for($i=1;$i<=10;$i++) pruebaEstatica(); ?> </body> CLAUSULAS INCLUDE Y REQUIRE Al programar es bastante frecuente que unas mismas líneas de código o conjunto de funciones se necesiten en varios documentos. Puede tratarse por ejemplo de: Funciones de validación de datos Funciones para mostrar cabeceras o pies de paginas Código de configuración para acceso a una base de datos Definición de determinados parámetros del programa. En lugar de copiar el código, se puede optar por escribir el código 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 librerías de funciones y facilitar la portabilidad y reusabilidad. La sintaxis de las dos sentencias de inclusión es idéntica: include(“fichero.php”); require(“fichero.php”); La inclusión puede realizarse en cualquier punto del programa, incluso puede depender del flujo de ejecución, por ejemplo, una inclusión dentro de un bloque if.
  39. 39. 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 continúa con la carga de la pagina. En cambio con include, si el fichero no se encuentra se genera un aviso pero se sigue con la ejecución del resto del programa y carga de la pagina. Ejemplo A continuación 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 común 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 numéricos, otros arrays,.. Una de las particularidades que distinguen a PHP de otros lenguajes de programación surge a la hora de crear el array: no es necesario determinar la dimensión antes de inicializarlo. Esto dota de una gran flexibilidad a los programas pues permite la modificación posterior del array, suprimiendo o añadiendo 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 numérico que permitirá identificar a cada uno de los elementos individuales. Ejemplo:
  40. 40. $x[0]=12; $x[1]=”Hola”; $x[2]=25.8; $x[]=”Ultimo”; A la hora de añadir un ultimo elemento no es necesario indicar el índice correspondiente. En este ejemplo, automáticamente se asigna a la posición 3. Además, puede observarse como el array puede contener datos de tipos diferentes, en este caso dos valores numéricos y dos cadenas de caracteres. Otra manera de crear arreglos es con ayuda de la función 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 Supóngase que se desea almacenar los años de un conjunto de películas. Se puede construir un array de elementos numéricos (los años) indexados mediante una cadena de caracteres (el titulo de la película correspondiente) $peliculasAño[“La costilla de Adan”]=1949; $peliculasAño[“La gran Ilusion”]=1937; $peliculasAño[“Roma, la ciudad Abierta”]=1944; $peliculasAño[“Sabrina”]=1954; $peliculasAño[“Vive como quieras”]=1938; Otra manera de generar este arreglo seria con la función array() $peliculasAño = 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 función array, en cualquier momento se puede añadir un nuevo elemento $peliculasAño[“West Side Story”] = 1961; Arrays Multidimensionales El lenguaje PHP permite la creación de arrays ultimensionales, es decir, arrays cuyos elementos son nuevos arrays. La sintaxis es similar al caso de una dimensión, siendo necesario indicar los dos índices por separado. Ejemplo: A continuación 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 definición equivalente usando la función array() seria:
  41. 41. $M = array( array(5,3), array(-2,7)); Es posible definir arrays asociativos multidimensionales, e incluso combinar índices numéricos y alfabéticos. $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”, “Año” => 1949), “La gran Ilusion” => array(“Director” =>”Jean Renoir”, “Año” => 1937), “Roma, Ciudad Abierta” => array(“Director” =>”Roberto Rosselini”, “Año” => 1944), “Sabrina” => array(“Director” =>”Billy Wilder”, “Año” => 1954), “Vive como quieras” => array(“Director” =>”Frank Capra”, “Año” => 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 opción es el uso de la función 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 manipulación 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 código 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 además de recuperar los elementos del array, se desea también conocer el índice, tanto en el caso de índices numéricos 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
  42. 42. $peliculasAño = array (“La Costilla de Adan” => 1949, “La gran Ilusion”, => 1937, “Roma, la ciudad Abierta” => 1944, “Sabrina” => 1954, “Vive como quieras” => 1938); foreach($peliculasAño 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”, “Año” => 1949), “La gran Ilusion” => array(“Director” =>”Jean Renoir”, “Año” => 1937), “Roma, Ciudad Abierta” => array(“Director” =>”Roberto Rosselini”, “Año” => 1944), “Sabrina” => array(“Director” =>”Billy Wilder”, “Año” => 1954), “Vive como quieras” => array(“Director” =>”Frank Capra”, “Año” => 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");
  43. 43. foreach($actores as $nombre) echo " $nombre <br>"; ?> <br> <font color="blue">Mostrar un arreglo asociativo </font><br> <?php $peliculasAño=array("La Costilla de Adan" => 1949, "La gran Ilusion" => 1937, "Roma, la ciudad Abierta" => 1944,"Sabrina" => 1954, "Vive como quieras" => 1938); foreach($peliculasAño as $indice => $valor) echo "<i>$indice,</i> ($valor) <br>n"; ?> </body> </html> 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++)
  44. 44. { } 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", "Año" => 1949),"La gran Ilusion" => array("Director" =>"Jean Renoir", "Año" => 1937), "Roma, Ciudad Abierta" => array("Director" =>"Roberto Rosselini", "Año" => 1944), "Sabrina" => array("Director" =>"Billy Wilder", "Año" => 1954), "Vive como quieras" => array("Director" =>"Frank Capra", "Año" => 1938) ); foreach($peliculas as $indice => $titulo) { echo "Datos de : $indice : <br>"; foreach($titulo as $indice =>$valor) echo "&nbsp&nbsp $indice : $valor <br>"; } ?> </body> </html>
  45. 45. PROGRAMACION ORIENTADA A OBJETOS Crear una clase Rectángulo con atributos base y altura y mostrar el área, perímetro 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; }
  46. 46. 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; } }
  47. 47. ?> <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>"; ?>
  48. 48. </html> </body> Problema: Implementar una clase con atributos una lista de direcciones y una lista de títulos y muestre una lista de hipervínculos en forma horizontal (básicamente 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 títulos de los enlaces. Podemos definir dos vectores paralelos que almacenen las direcciones y los títulos respectivamente. Definiremos dos métodos: cargarOpcion y mostrar. <html> <head>
  49. 49. <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>
  50. 50. <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++) {
  51. 51. $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 página web es común que contenga una cabecera, un cuerpo y un pié de página. Estas tres secciones podemos perfectamente identificarlas como clases. También podemos identificar otra clase página. Ahora bien cómo 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 {
  52. 52. 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) {
  53. 53. $this->cuerpo->insertarParrafo($texto); } public function graficar() { $this->cabecera->graficar(); $this->cuerpo->graficar(); $this->pie->graficar(); } } $pagina1=new Pagina('Título de la Página','Pie de la página'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 1'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 2'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 3'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 4'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 5'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 6'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 7'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 8'); $pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 9'); $pagina1->graficar(); ?> </body> </html>
  54. 54. Base de datos con PHP y MYSQL Apertura de la conexión El primer paso para conseguir acceder a los datos de una base de datos MySQL es establecer la conexión con el servidor de base de datos. Desde PHP esta conexión se realiza con la función. mysql_connect(servidor,usuario,contraseña); Los tres parámetros anteriores permiten identificar el servidor sobre el que está instalado MySQL, y el nombre de usuario y contraseña necesarios para conectarse. Por supuesto, estos dos últimos datos deben coincidir con los de un usuario registrado en MySQL La función mysql_connect() devuelve un valor entero que se utilizara como identificador de la conexión en las operaciones posteriores. Si se produce un error en la conexión, el valor devuelto por la función será 9. Cierre de la Conexión La conexión realizada se cierra automáticamente al terminar la ejecución del script en el que se ha establecido, o bien explícitamente con la función mysql_close(). Esta función recibe como único argumento el identificador de la conexión. mysql_close(identificador); El identificador de la conexión en la función mysql_close() es opcional, en caso de que no se indique se cerrara la ultima conexión abierta. La función mysql_close() devuelve un valor entero que será nulo en el caso de que se produzca algún 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 “Conexión establecida correctamente”; ... ... mysql_close(); Selección de la Base de Datos Una vez abierta la conexión con el servidor MySQL, el siguiente paso será la selección de una base de datos disponibles para la realización de las operaciones posteriores sobre ella. La función que permite seleccionar una base de datos es : mysql_select_db(nombreBaseDeDatos,identificadorConexion);
  55. 55. El primer parámetro será el nombre de la base de datos a seleccionar y el segundo el identificador de la conexión. De nuevo, como en todas las funciones de conexión, si se produce un error, por ejemplo, porque la base de datos no existe, la función 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”); Ejecución de sentencias SQL sobre la base de datos seleccionada La selección mysql_query() permite ejecutar cualquier sentencia SQL sobre la base de datos activa. Esta función admite dos argumentos, el primero es una cadena de caracteres con el código SQL de la consulta a realizar; el segundo argumento será el identificador de la conexión. mysql_query(sentencia, identificadorDeConexion); Esta función devuelve 0 si se produce algún error o un numero entero positivo en caso de ejecución correcta. En las sentencias de selección, este valor devuelto se utilizará posteriormente para acceder el resultado de la consulta. En el caso de sentencias de creación, inserción, eliminación o actualización, 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 función die() se encarga de imprimir un mensaje, pero además detiene hasta ese punto la ejecución del script.
  56. 56. - 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 más 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 extraída, o FALSE si no quedan más 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 posición. Nota: Los nombres de campos retornados por esta función diferencian entre mayúsculas y minúsculas. 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 más 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
  57. 57. $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, descripción, 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"];
  58. 58. $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%>
  59. 59. <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>
  60. 60. <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
  61. 61. 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);
  62. 62. 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";
  63. 63. $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> Contraseña 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>
  64. 64. <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>

×