php guia.pdf

Upload: nathaly-marval

Post on 03-Jun-2018

257 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 php guia.pdf

    1/51

  • 8/12/2019 php guia.pdf

    2/51

    (2)

    Para ver una copia completa de la licencia, acudir a la direccinhttp://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es

    http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.eshttp://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.eshttp://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es
  • 8/12/2019 php guia.pdf

    3/51

    (3)

    ndice

    (2.1)qu es PHP? ___________________________________________________ 5(2.1.1) lenguajes de script de servidor ................................ ................................. ................................ ........... 5(2.1.2) PHP ................................ ............................... ................................. ................................ ........................... 5(2.1.3) ventajas de PHP ................................................................................................................................... 6

    (2.2)herramientas y software necesario _______________________________ 6(2.3)bases de PHP ___________________________________________________ 8

    (2.3.1) etiqueta ............................ ................................. ................................. ............................... ...... 8(2.3.2) HTML usa PHP y PHP usa HTML .............................. ................................. ............................... ..... 9(2.3.3) comentarios ........................................................................................................................................... 9(2.3.4) bases de escritura................................................................................................................................. 9(2.3.5) escribir en la salida ............................................................................................................................. 10

    (2.4)variables _______________________________________________________10(2.4.1) introduccin a las variables .............................................................................................................. 10(2.4.2) declarar .................................................................................................................................................. 11(2.4.3) predefinidas .......................................................................................................................................... 11(2.4.4) asignacin de valores ......................................................................................................................... 11(2.4.5) variables sin asignar valores ............................................................................................................ 12(2.4.6) tipos de datos ...................................................................................................................................... 13(2.4.7) referencias & ........................................................................................................................................ 15(2.4.8) constantes ............................................................................................................................................. 15(2.4.9) operadores ........................................................................................................................................... 16

    (2.5)estructuras de control ___________________________________________ 19(2.5.1) sentencia if ............................. ................................. ................................. ................................. ............. 19(2.5.2) sentencia switch .............................. ................................. ................................. ............................... ... 22(2.5.3) bucles .................................................................................................................................................... 24

    (2.6)uso de formularios HTML desde PHP ____________________________ 29(2.6.1) repaso de los formularios HTML ..................................................................................................... 29(2.6.2) controles de HTML 5 ......................................................................................................................... 36(2.6.3) mtodos de envo de datos del formulario .............................. ................................. .................. 39(2.6.4) recepcin de datos de un formulario desde una pgina PHP............................................... 41(2.6.5) usar la misma pgina para el formulario y la recepcin ................................ ........................ 42

  • 8/12/2019 php guia.pdf

    4/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (4)

    (2.7)funciones ______________________________________________________ 43(2.7.1) introduccin ......................................................................................................................................... 43(2.7.2) declaracin y uso de funciones personales ................................ ................................ .................. 44(2.7.3) alcance de las variables ................................................................................................................... 45

    (2.7.4) paso de parmetros por referencia .............................................................................................. 45(2.7.5) parmetros predefinidos ...................................................................................................................47(2.7.6) variables globales ...............................................................................................................................47(2.7.7) variables estticas .............................................................................................................................. 48(2.7.8) recursividad ......................................................................................................................................... 48(2.7.9) mbito de las funciones .................................................................................................................... 51

    (2.8) inclusin de ficheros ____________________________________________ 51

    (1)

  • 8/12/2019 php guia.pdf

    5/51

    (5)

    (2)introduccin a

    PHP2.1)qu es PHP?

    (2.1.1)lenguajes de script de servidorLas pginas web se crean mediante HTML, y este es un lenguaje muy limitado paraatender a los requerimientos que actualmente se exigen. Por ello han aparecidonumerosas extensiones al lenguaje que permiten enriquecer las pginas web.

    Muchas mejoras estn orientadas al cliente, es decir que se trata de cdigo de otroslenguajes (llamados lenguajes de script) que se aaden al cdigo HTML y que elordenador que recibe la pgina debe interpretar a travs del software apropiado. Por lo

    tanto el cliente de la pgina debe poseer el software apropiado. Y esto es un problema.Por ello aparecieron lenguajes y mejoras en el lado del servidor. De modo que el

    programador aade al cdigo HTML cdigo de otro lenguaje script de la misma maneraque el prrafo anterior. La diferencia es que este cdigo no se le enva al cliente sinoque es el servidor el que le interpreta. El cliente recibir una pgina HTML normal yser el servidor el que traduzca el cdigo script.

    (2.1.2)PHPSe trata indudablemente del lenguaje script de servidor ms popular. Fue el primero enaparecer aunque realmente empez a imponerse en torno al ao 2000 por encima de

    ASP que era la tecnologa de servidor reinante.Hoy en da se puede instalar mdulos para interpretar PHP en casi todos los

    servidores de aplicaciones web. En especial PHP tiene una gran relacin con Apache.

    Es un lenguaje basado en C y en Perl, que se ha diseado pensando en darle lamxima versatilidad y facilidad de aprendizaje, por encima de la rigidez y coherenciasemntica.

  • 8/12/2019 php guia.pdf

    6/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (6)

    (2.1.3)ventajas de PHP(1) Multiplataforma. A diferencia de otros lenguajes (especialmente de ASP y

    ColdFussion), se trata de un lenguaje que se puede lanzar en casi todas lasplataformas de trabajo (Windows, Linux, Mac,)

    (2) Abierto y gratuito. Pertenece al software licenciado como GNU, la licencia delsistema Linux; lo que permite su distribucin gratuita y que la comunidad mejoreel cdigo.

    (3) Gran comunidad de usuarios. La popularidad de PHP, junto con la gran defensaque de l hacen los defensores del cdigo abierto, permite tener una comunidadamplia y muy dinmica a la que acudir en caso de necesidad.

    (4) Apache, MySQL. Apache es el servidor web y de aplicaciones ms utilizado en laactualidad. MySQL es el servidor de bases de datos relacionales ms popular en

    Internet para crear aplicaciones web. Puesto que PHP tiene una gran relacin ycompatibilidad con ambos productos (est de hecho muy pensado para hacertndem con ellos), esto se convierte en una enorme (y a veces determinante)ventaja.

    (5) Extensiones. Dispone de un enorme nmero de extensiones que permitenampliar las capacidades del lenguaje, facilitando la creacin de aplicaciones webcomplejas.

    (6) Fcil? Es un punto muy controvertido. Los programadores PHP entusiastas,defienden esta idea; es indudable adems que fue uno de los objetivos al creareste lenguaje. Sin embargo Microsoft defiende con energa que ASP permitecrear aplicaciones web complejas con gran facilidad; y parece indudable que ellenguaje ColdFussion de Macromedia (ahora de Adobe) es ms sencillo deaprender.

    Las caractersticas de PHP correspondientes a la libertad de creacin yasignacin de valores a variables, tipos de datos poco restrictivos, y otrasausencias de reglas rgidas suelen ser los puntos que defienden losprogramadores de PHP para estimar su facilidad de aprendizaje. Sin embargo losprogramadores de lenguajes formales como C y Java, seguramente seencontrarn con ms problemas que ventajas al aprender este lenguaje.

    2.2)herramientas y software necesarioPara crear aplicaciones web en PHP necesitamos disponer de software especfico quecomplica los requisitos previos que tiene que tener la mquina en la que deseemosaprender y probar el lenguaje. Lo imprescindible es:

    Un servidor web compatible con PHP. La mayora lo son, pero parece que laopcin de usar Apache es la ms recomendable por la buena relacin que hantenido ambos productos. No obstante cada vez es ms habitual utilizar PHP enservidores como IISo ngnx.

    Motor PHP. Se trata del software que extiende al servidor web anterior paraconseguir que se convierta en un servidor de aplicaciones web PHP.Necesitamos descargar e instalar dicho motor correspondiente al mdulo de

    PHP compatible con el servidor web con el que trabajemos.

  • 8/12/2019 php guia.pdf

    7/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (7)

    IDE para PHP. Un IDE es un entorno de desarrollo integrado; es decir, unsoftware que facilita la escritura de cdigo en otro lenguaje. En realidad sepuede escribir cdigo PHP en cualquier editor de texto (como el Bloc de Notasde Windows por ejemplo); pero estos entornos facilitan la edicin de cdigo

    (con coloreado especial de las palabras de PHP, correccin del cdigo en lnea,abreviaturas de cdigo, plantillas,) y su prueba y depuracin.

    Los IDEs ms populares son:

    Basados en Eclipse. Eclipse es un entorno de programacin de aplicacionespensado para Java pero que dispone de muchas extensiones que permiteprogramar para diferentes lenguajes, convirtindose as en la plataformade programacin ms popular de la actualidad. Las extensiones de Eclipsems populares para programar en PHP son:

    Aptana. Sea la versin slo para PHP o la completa Studio Pro conposibilidad de usar en varios lenguajes es una de las ms populares.Muy famosa para crear cdigo Javascript, se ha adaptado con grandes

    resultados para PHP ya que permite casi todo lo necesario sobre estelenguaje.

    PHP Designer Toolkit (PDT). Considerada la extensin oficial deEclipse para programar en PHP, es quiz la ms utilizada en laactualidad.

    Zend Studio. Dispone de un framework(una plataforma) muy famosapara crear PHP usando plantillas. Su entorno compite con losanteriores en prestaciones.

    Netbeans. Se trata del entorno libre de programacin competidor conEclipse. Ambos se crearon para programar en Java, pero han extendido su

    uso a otros lenguajes. NetBeans dispone de una extensin para PHP,incluso se puede descargar una versin ligera de NetBeansslo para PHP.Es una de las mejores opciones para programar en PHP.

    Adobe Dreamweaver. Se trata del software comercial de creacin depginas web ms famoso del planeta. Tiene capacidad para escribir cdigoPHP e incluso facilidades grficas para hacerlo. Es inferior a los anterioresen cuanto a escritura de cdigo, pero muy superior cuando queremosconcentrarnos en el diseo del sitio.

    Microsoft Expression Web. Software comercial competidor del anterior(aunque por ahora mucho menos popular) y con capacidad de usar con PHP.

    Depurador PHP. Se trata de un software que se aade al mdulo PHP paradarle la capacidad de depurar el cdigo. Los ms utilizados por su potencia sonZend Debuggery XDebug.

  • 8/12/2019 php guia.pdf

    8/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (8)

    2.3)bases de PHPEl cdigo PHP se escribe en un documento de texto al que se debe indicar la extensin.php. En realidad se trata de una pgina web HTML (o XHTML) normal a la que se leaaden etiquetas especiales.

    (2.3.1)etiqueta Cuando en un documento web queremos aadir cdigo phpse indica por esta etiqueta:

    Ttulo

    El primer cdigo PHP es necesario porque actualmente se consideran las pginas webXHTML como un documento XML ms y por ello deben de llevar la cabecera obligatoria en todo documento XML. EL problema esque ese cdigo en el servidor web dara problemas porque podra entender que escdigo PHP (al empezar igual que la etiqueta

  • 8/12/2019 php guia.pdf

    9/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (9)

    (2.3.2)HTML usa PHP y PHP usa HTMLComo se ha visto anteriormente el cdigo PHP se incrusta dentro del cdigo HTML. Lointeresante es que se puede incrustar cdigo HTML en el PHP y tendra sentido ya que

    las funciones de escritura (echoy print) en realidad escriben hacia el resultado final,que en realidad es una pgina HTML por lo que se puede hacer algo como:

    (2.3.3)comentariosDentro del cdigo PHP se pueden hacer tres tipos de comentario:

    Comentarios de varias lneas. Al igual que en lenguaje C, comienzan por /*yterminan por */. Ejemplo:

    Comentarios de una lnea estilo C++. Se ponen tras la barra doble //.Ejemplo:

    Comentarios de una lnea estilo ShellScript. Se ponen tras la almohadilla:

    (2.3.4)bases de escrituraLas normas bsicas para escribir lenguaje PHP se basan en los lenguajes padres de este,es decir C y Perl. Son:

    Todas las lneas de cdigo deben de finalizar con un punto y coma

    Se puede agrupar el cdigo en bloques que se escriben entre llaves

    Una lnea de cdigo se puede partir o sangrar (aadir espacios al inicio) avoluntad con el fin de que sea ms legible, siempre y cuando no partamos unapalabra o un valor.

    PHP obliga a ser estricto con las maysculas y las minsculas en algunos casoscomo el nombre de las variables; sin embargo con las palabras reservadas dellenguaje no es estricto. Es decir PHP entiende que WHILE, while e incluso

  • 8/12/2019 php guia.pdf

    10/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (10)

    wHiLees lo mismo al ser una palabra reservada. Sin embargo $vary $VARnoson iguales al ser el nombre de una variable.

    (2.3.5)escribir en la salidaAunque hay muchas funciones de escritura (para escribir en lo que ser la pgina final)las fundamentales son echoy print.

    echo es la ms utilizada y en realidad es un comando del lenguaje. Tras echo sepasa uno o ms textos (ms adelante diremos expresiones de cadena) que cuando sonliterales se escriben entre comillas. Si se usa ms de un texto, se separan con comas:

    El texto saldr seguido en la pgina. Hay una forma abreviada de usar echo que es:

    Se trata de no usar la etiqueta

  • 8/12/2019 php guia.pdf

    11/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (11)

    Por supuesto el nombre de la variable no puede tener espacios en blanco (deah la posibilidad de utilizar el guin bajo)

    Es conveniente que los nombres de las variables indiquen de la mejor forma posible su

    funcin. Es decir: $saldoes un buen nombre, pero $x123no lo es aunque sea vlido.Tambin es conveniente poner a nuestras variables un nombre en minsculas. Siconsta de varias palabras el nombre podemos separar las palabras con un guin bajo envez del espacio o empezar cada nueva palabra con una mayscula. Por ejemplo:$saldo_finalo $saldoFinal.

    (2.4.2)declararLa primera sorpresa para los programadores de lenguajes estructurados es que en PHPno es necesario declarar una variable. Simplemente se utiliza y ya est. Es decir siqueremos que la variable $edadvalga 15, haremos:

    $edad=15:

    Y no ser necesario indicar de qu tipo es esa variable. Esto es tremendamente cmodopero tambin nos complica tremendamente la tarea de depurar nuestros programas alno ser nada rgido el lenguaje y permitir casi todo.

    (2.4.3)predefinidasEl servidor web que aloje las pginas PHP pone a disposicin del programador variablesde sistema ya definidas para su uso en el programa. La mayora son simplementeinformativas. Todas suelen llevar el smbolo de subrayado en el segundo carcteradems de escribirse en maysculas. La mayora son arrays (se explican ms adelante).Ejemplo:

    echo$_SERVER["SERVER_PORT"];

    Escribir el nmero de puerto por el que se comunica el servidor web. Para mostrartodas las variables predefinidas en el servidor podemos escribir este cdigo dentro deuna pgina PHP

    echo"";

    print_r($_SERVER);

    echo"";

    Las etiquetas pre, permite que se muestra la informacin de una forma ms atractiva

    (porque respeta los cambios de lnea y tabulaciones devueltos porprint_r). Por su parteprint_res una funcin para mostrar el contenido de los arrays.

    (2.4.4)asignacin de valoresEsta operacin consiste en dar valor a una variable y se realiza con el smbolo =.Ejemplo:

    $x=12;

    Como se coment anteriormente en PHP no es necesario declarar una variable antes desu uso. En el caso de asignar nmeros se escriben tal cual (como en el ejemplo), losdecimales se separan con el punto decimal. Los textos se encierran entre comillas

  • 8/12/2019 php guia.pdf

    12/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (12)

    (simples o dobles, aunque se aconseja usar las dobles salgo cuando nos venga mejor lassimples). Ejemplo:

    $nombre=Anselmo;

    Se pueden asignar resultados de aplicar frmulas mediante operadores, como:$beneficios=($gastos-$ingresos) * 0.6;

    Otra cosa sorprendente es que una variable puede cambiar el tipo de datos quealmacena, por ejemplo es vlido:

    $x=18;//asignamos un nmero$x=Hola;/asignamos un texto

    (2.4.5)variables sin asignar valoresUn problema surge cuando queremos utilizar variables a las que no se les ha asignadoningn valor. Como:

    Ocurrir un error al hacer ese uso de la variable. Aunque en realidad la directiva delarchivo php.ini,error_reportingpermite modificar los errores de aviso que se lanzan.Si bajamos su nivel de aviso, no detectar estos fallos. Tambin podemos usar esafuncin al inicio de nuestro cdigo para indicar fallos. Sera:

    error_reporting(E_ALL);//avisa de todos los errores

    Si deseamos que no nos avise de estos fallos. Habra que pasar a error_reporting otraconstante; por ejemplo E_USER_ERRORavisa slo si hay errores de nivel usuario (o msgraves) en el cdigo

    A las variables sin declarar se les da valores por defecto, que dependern delcontexto en que se usen. Hay una funcin llamado isseta la que se le pasa un variable eindica si la variable tena asignado un valor; en cualquier otro caso devuelve falso.Ejemplo:

  • 8/12/2019 php guia.pdf

    13/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (13)

    (2.4.6)tipos de datosenteros

    A las variables se les puede asignar valores enteros. Los nmeros enteros se usan talcual. Pueden ser positivos o negativos:

    $n1=17;

    $n2=-175;

    Se puede usar sistema octal si se coloca un cero antes de la cifra entra:

    $octal=071;

    echo $octal;//escribe 56

    Adems pueden estar en sistema hexadecimal si a la cifra se la antecede de un cero yuna equis:

    $hexa=0xA2BC;echo $hexa;//escribe 41660

    coma flotante

    Los nmeros decimales en PHP son de tipo coma flotante. Este es un formato decimalpara mquinas digitales que se manejan muy rpido por parte de un ordenador, ocupanpoco en memoria, pero desgraciadamente no son exactos. Eso provoca que pueda haberalgunos decimales que se pierdan.

    Para asignar decimales hay que tener en cuenta en PHP que el formato es el ingls,por lo que las cifras decimales se separan usando un punto como separador decimal.Adems es posible usar notacin cientfica. Ejemplos:

    $n1=234.12;$n2=12.3e-4;//eso es 12,310-4, es decir 0,00123

    Los nmeros decimales en coma flotante de PHP son equivalentes al formato doubledellenguaje C.

    cadenas

    Se denomina as a los textos, que en programacin se les denomina cadenas decaracteres o Strings. Se asignan a las variables entrecomillando (en simples o dobles) eltexto a asignar. Ejemplo:

    $nombre=Jorge Snchez;

    Si el propio texto lleva comillas, se puede utilizar combinaciones de las comillas paraevitar el problema. Por ejemplo:

    $frase = Antonio dijo Hola al llegar;

    Como queremos almacenar en $frase el texto con Hola entre comillas, entoncesenglobamos todo el texto con comillas simples.

    Otra opcin es usar caracteres especiales, concretamente:

    secuencia de escape significado\t Tabulador

    \n Nueva lnea

  • 8/12/2019 php guia.pdf

    14/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (14)

    secuencia de escape significado\f Alimentacin de pgina\r Retorno de carro\ Dobles comillas

    \ Comillas simples\\ Barra inclinada (backslash)\$ Smbolo dlarY as podremos:

    $frase = Antonio dijo \Hola\al llegar;

    Las secuencias de escape slo funcionan si estn encerradas entre comillas dobles. Esdecir, no funciona:

    $frase = Antonio dijo \Hola\al llegar;

    Las barras saldrn por pantalla tambin.Un hecho de PHP muy interesante es que en un texto se puede incluir el valor de una

    variable. Por ejemplo:

    $das=15;$texto=Faltan $das das para el verano;echo $texto;//escribe: Faltan 15 das para el verano

    Por lo que el smbolo $slo se puede asignar a un texto si se usa su secuencia de escape\$.

    Los textos se pueden concatenar con ayuda del operador punto (.). Ejemplo:

    $nombre="Jorge";$apellidos="Snchez Asenjo";

    echo "Nombre completo: ".$nombre." ".$apellidos;//escribe Nombre completo: Jorge Snchez Asenjo

    booleanos

    Slo pueden tomar como valores TRUE(verdadero) o FALSE (falso);

    $verdadero=True;

    echo$verdadero;//escribe 1

    Sorprende que echo devuelva el valor uno; la explicacin es que True est asociado a

    valores positivos, mientras que False se asocia al cero. En concreto hay una relacintodos los tipos de datos:

    Enteros: cero=False, resto=True

    Coma flotante: 0.0=False, resto=True

    Cadenas: False si estn vacas

    Arrays: False si no posee ningn elemento

    Recurso: False si el recurso no es vlido.

  • 8/12/2019 php guia.pdf

    15/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (15)

    conversiones

    En PHP como las variables pueden cambiar de tipo cuando se nos antoje, resulta quetiene que intentar que todas las expresiones tengan sentido y as, este cdigo:

    $v1=18;$v2="3 de Diciembre";

    echo $v1+$v2;

    Escribe 21 (suma el 18 y el tres). Pero sin embargo:

    $v1=18;$v2="3 de Diciembre";

    echo $v1.$v2;

    Escribe 183 de Diciembre.

    No obstante se pueden convertir de forma forzosa los valores al tipo deseado; de

    esta forma elegiremos nosotros cmo realizar las conversiones. Se trata del habitualoperador de castingdel lenguaje C. Ejemplo:

    $x=2.5;

    $y=4;$z=(int)$x * $y;

    $z vale 8 al convertir $xen un entero. Posibilidades:

    (int)o (integer). Convierte a entero

    (real), (double) o(flat). Convierte a coma flotante

    (string). Convierte a forma de texto

    (array). Convierte a forma de array.

    (object). Convierte a un objeto-

    (2.4.7)referencias &Es una de las claves de la programacin en cualquier lenguaje. Se trata de variables quesirven para modificar otras variables existentes. Es decir, son variables que en lugar dealmacenar valores, almacenan la direccin de otra variable. No es una copia de la otravariable, ms bien es un sinnimo de la otra variable. Su uso principal aparece cuandose utilizan funciones. Ejemplo de uso:

    $nombre="Antonio";

    $ref=&$nombre;//ref es una referencia a la variable $nombreecho $ref,"
    ";//escribe Antonio$ref="Marisa";

    echo $nombre,"
    "//escribe Marisa, a travs de la referencia se ha// cambiado el nombre

    (2.4.8)constantesLas constantes almacenan valores que no cambian en el tiempo. La forma de definirconstantes es gracias a la funcin define. Que funciona indicando el nombre que tendrla constante, entre comillas, y el valor que se le otorga.

  • 8/12/2019 php guia.pdf

    16/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (16)

    Ejemplo:

    define("PI",3.141592);

    Las constantes no utilizan el signo $de las variables, simplemente utilizan el nombre.Es decir escribir el valor de la constante PI tras haberla declarado con la instruccinanterior, sera:

    echoPI;

    Desde la versin 5.3 de PHP es posible definir una constante de una forma msestructurada. Se trata de utilizar la palabra clave const habitual en la mayora delenguajes de programacin. Ejemplo de uso:

    constPI=3.141592;

    Aunque no es obligatorio, es conveniente usar maysculas para las constantes paradiferenciarlas de las variables (aunque en PHP el signo dlar $ ya hace esadiferenciacin) ya que se considera una norma de buen estilo de escritura en cualquierlenguaje de programacin.

    (2.4.9)operadoresLo habitual al programar en PHP es utilizar expresiones que permiten realizarcomprobaciones o clculos. Las expresiones dan un resultado que puede ser decualquiera de los tipos de datos comentados anteriormente (enteros, decimales,booleanos, strings,)

    aritmticos

    Son:

    operador significado+ Suma- Resta* Producto/ Divisin% Mdulo (resto)

    Ejemplo de uso:

    $x=15.5;

    $y=2;echo$x+$y,"
    ";//escribe 17.5

    echo$x-$y,"
    ";// escribe 13.5echo$x*$y,"
    ";// escribe 31echo$x/$y,"
    ";//escribe 7.75

    echo$x%$y,"
    ";//escribe 1, slo coge la parte entera

  • 8/12/2019 php guia.pdf

    17/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (17)

    operadores condicionales

    Sirven para comparar valores. Siempre devuelven valores booleanos. Son:

    operador significado< Menor> Mayor>= Mayor o igual= 18;//mayorDeEdad ser true$menorDeEdad = !$mayorDeEdad;//menorDeEdad ser false

    echo$mayorDeEdad."\t".$menorDeEdad;

    El operador && (AND) sirve para evaluar dos expresiones de modo que si ambas sonciertas, el resultado ser truesino el resultado ser false. Ejemplo:

    $carnetConducir=TRUE;

    $edad=20;$puedeConducir= ($edad>=18) &&$carnetConducir;//puedeConducir es TRUE, puesto que edades mayor de 18

    //y carnet es TRUE

    El operador ||(OR) sirve tambin para evaluar dos expresiones. El resultado ser truesi al menos uno de las expresiones es true. Ejemplo:

    $nieva =TRUE;$llueve=FALSE;$graniza=FALSE;

    $malTiempo= $nieva || $llueve || $graniza;//malTiempo es TRUE porque nieva

  • 8/12/2019 php guia.pdf

    18/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (18)

    La diferencia entre la igualdad y la equivalencia se puede explicar con este ejemplo:

    $resultado= (18 == 18.0);//resultado es verdadero$resultado= (18 === 18.0);//resultado es falso

    En el ejemplo 18===18.0 devuelve falso porque aunque es el mismo valor, no es delmismo tipo.

    operadores de asignacin

    Ya se ha comentado el operador de asignacin que sirve para dar valor a una variable.Ejemplo:

    $x=$y+9.8;

    Sin embargo existen operadores que permiten mezclar clculos con la asignacin,ejemplo:

    $x +=3;En el ejemplo anterior lo que se hace es sumar 3 a la x (es lo mismo $x+=3, que$x=$x+3). Eso se puede hacer tambin con todos estos operadores:

    += -= *= /=&= |= ^= %=>>= Desplazamiento a la derecha

  • 8/12/2019 php guia.pdf

    19/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (19)

    concatenacin

    El punto (.) es un operador que permite unir textos. Su uso es muy sencillo. Ejemplo:

    $x="Hola ";$y="a todo el mundo";

    $z=$x.$y;//$z vale "Hola a todo el mundo"

    Hay operador de asignacin y concatenacin de texto, se trata del operador .=. Ejemplode uso:

    $x="Hola ";$x.="a todo el mundo";

    echo $x;//escribe "Hola a todo el mundo

    Tambin es vlido el uso de la concatenacin en la asignacin. Ejemplo:

    $texto = "Hola ";$texto.= "amigos y ";

    $texto.="amigas";//$texto es Hola amigos y amigas

    2.5)estructuras de controlHasta ahora las instrucciones que hemos visto, son instrucciones que se ejecutansecuencialmente; es decir, podemos saber lo que hace el programa leyendo las lneas deizquierda a derecha y de arriba abajo.

    Las instrucciones de control de flujo permiten alterar esta forma de ejecucin. Apartir de ahora habr lneas en el cdigo que se ejecutarn o no dependiendo de una

    condicin.Esa condicin se construye utilizando lo que se conoce como expresin lgica. Una

    expresin lgica es cualquier tipo de expresin que d un resultado verdadero o falso.

    Las expresiones lgicas se construyen a travs de los operadores relacionales (==, >,

  • 8/12/2019 php guia.pdf

    20/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (20)

    Las llaves se requieren slo si va a haber varias instrucciones. En otro caso se puedecrear el ifsin llaves:

    if(expresinlgica) sentencia;

    Ejemplo:

    if($nota>=5){echo"Aprobado";$aprobados++;

    }

    Slo se escribeAprobadosi la variable $notaes mayor o igual a cinco.

    Hay otra posibilidad de sintaxis:

    if(expresin lgica) :

    instrucciones

    endif;

    En lugar de las llaves, cierra el bloque ifcon la palabra endif. Los dos puntos tras elparntesis son obligatorios. Se trata de una forma simplificada (que, ciertamente, hayque usar con cuidado).

    sentencia condicional compuesta

    Es igual que la anterior, slo que se aade un apartado elseque contiene instruccionesque se ejecutarn si la expresin evaluada por el if es falsa. Sintaxis:

    if(expresinlgica){

    instrucciones a ejecutar si la expresin es verdadera.

    }

    else {

    instrucciones a ejecutar si la expresin es falsa

    }

    Como en el caso anterior, las llaves son necesarias slo si se ejecuta ms de unasentencia en el bloque.

  • 8/12/2019 php guia.pdf

    21/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (21)

    Ejemplo de sentencia if-else:

    if($nota>=5){echo"Aprobado";

    $aprobados++;}

    else {

    echo"Suspenso";suspensos++;

    }

    La forma simplificada de esta sentencia sera:

    if($nota>=5):

    echo"Aprobado";

    $aprobados++;else :

    echo"Suspenso";

    $suspensos++;

    endif;

    No se usan las llaves, en su lugar se usan los dos puntos y el cierre con endif.

    sentencia condicional mltiple

    Permite unir varios ifen un solo bloque. Ejemplo:

    if($nota

  • 8/12/2019 php guia.pdf

    22/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (22)

    La versin simplificada sera:

    if($nota

  • 8/12/2019 php guia.pdf

    23/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (23)

    El bloque default sirve para ejecutar instrucciones para los casos en los que laexpresin no cumpla ninguno de los valores anteriores. Ejemplo:

    srand(time());

    $diaSemana=rand(1,7);switch($diaSemana) {

    case 1:

    $dia="Lunes";

    break;

    case2:

    $dia="Martes";

    break;

    case3:

    $dia="Mircoles";

    break;

    case4:

    $dia="Jueves";

    break;

    case 5:

    $dia="Viernes";

    break;

    case6:

    $dia="Sbado";

    break;case 7:

    $dia="Domingo";

    break;

    default:

    $dia="?";

    }

  • 8/12/2019 php guia.pdf

    24/51

  • 8/12/2019 php guia.pdf

    25/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (25)

    Ejemplo (escribir nmeros del 1 al 100):

    $i=1;

    while ($i

  • 8/12/2019 php guia.pdf

    26/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (26)

    Ejemplo:

    $i=10;/*Valor inicial del contador, empieza valiendo 10

    (por supuesto i debera estar declarada como entera, int) */

    while ($i

  • 8/12/2019 php guia.pdf

    27/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (27)

    Ejemplo:

    $salir=FALSE;/* En este caso el centinela es una variablebooleana que inicialmente vale falso */

    while($salir==FALSE){/* Condicin de repeticin: que salir siga siendofalso. Ese es el centinela.

    Tambin se poda haber escrito simplemente:

    while(!salir)

    */

    $n=rand(1,500);// Lo que se repite en el

    echo($n); /* bucle: calcular un nmeroaletorio de 1 a 500 y escribirlo */

    $salir=($n%7==0);/* El centinela vale verdadero si el nmero esmltiplo de 7

    */

    }

    Comparando los bucles de centinela con los de contador, podemos sealar estos puntos:

    Los bucles de contador se repiten un nmero concreto de veces, los bucles decentinela no

    Un bucle de contador podemos considerar que es seguro que finalice, el decentinela puede no finalizar si el centinela jams vara su valor (aunque, si estbien programado, alguna vez lo alcanzar)

    Un bucle de contador est relacionado con la programacin de algoritmosbasados en series.

    Un bucle podra ser incluso mixto: de centinela y de contador. Por ejemplo imaginar unprograma que escriba nmeros de uno a 500 y se repita hasta que llegue un mltiplo de7, pero que como mucho se repite ocho veces.

    Sera:

    $salir =FALSE;//centinela$i=1;//contador

    while($salir ==false&&$i

  • 8/12/2019 php guia.pdf

    28/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (28)

    do while

    La nica diferencia respecto a la anterior est en que la expresin lgica se evaladespus de haber ejecutado las sentencias. Es decir el bucle al menos se ejecuta unavez. Es decir los pasos son:

    (1) Ejecutar sentencias(2) Evaluar expresin lgica(3) Si la expresin es verdadera volver al paso 1, sino continuar fuera del while

    Sintaxis:

    do {

    instrucciones} while (expresin lgica)

    Ejemplo (contar de uno a 1000):

    $i=0;do{

    $i++;

    echo $i."
    ";}while($i

  • 8/12/2019 php guia.pdf

    29/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (29)

    Segunda versin:

    for(inicializacin;condicin;incremento):

    sentencias

    endfor;

    Las sentencias se ejecutan mientras la condicin sea verdadera. Adems antes de entraren el bucle se ejecuta la instruccin de inicializacin y en cada vuelta se ejecuta elincremento. Es decir el funcionamiento es:

    (1) Se ejecuta la instruccin de inicializacin(2) Se comprueba la condicin(3) Si la condicin es cierta, entonces se ejecutan las sentencias. Si la condicin es

    falsa, abandonamos el bloquefor

    (4) Tras ejecutar las sentencias, se ejecuta la instruccin de incremento y sevuelve al paso 2Ejemplo (contar nmeros del 1 al 1000):

    for($i=1;$i

  • 8/12/2019 php guia.pdf

    30/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (30)

    Fundamentalmente la etiqueta formposee dos atributos:

    method. Que permite indicar qu instruccin http utilizaremos para pasar lainformacin al destino de nuestro formulario. Las opciones habituales son GETy POST. No se distingue entre maysculas y minsculas.

    action. Es el atributo que contiene la URL de la pgina web que procesar elformulario.

    Ejemplo:

    cuadros de texto

    Los cuadros de texto permiten recoger texto. Su sintaxis es:

    Es saca en la pgina un cuadro en el que el usuario puede introducir texto. Ademspodemos utilizar estos atributos:

    value. Da un valor inicial al cuadro, se usa para indicar un texto de ayuda alrelleno.

    id. Identificador del cuadro. La W3C (organismo que estandariza XML y HTML)recomienda usar id en lugar de name, pero lo cierto es que PHP recoge losvalores gracias a name, no funciona conid. Por lo que para ms seguridad losdiseadores suelen utilizar ambos atributos.

    Ejemplo:

    Escriba su nombre y apellidos

    Ese cdigo da como resultado:

    botn de envo

    Sirve para llevar a cabo la comunicacin entre el formulario y la pgina que recoge susdatos. La sintaxis es:

    En cuanto se pulsa este botn, los datos del resto de controles se envan a la pginareceptora del formulario (que se corresponde a la URL indicada en el apartado actionde la etiqueta form).

  • 8/12/2019 php guia.pdf

    31/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (31)

    botn de restablecer

    La sintaxis de este botn es:

    Este tipo de botones lo que hacen es anular los datos que se han introducidos en loscontroles del formulario. Deja todos los controles en su estado inicial.

    botn genrico

    Un botn genrico se marca indicando type="button" en la etiqueta type. En losformularios no se usa para enviar o configurar la inf0ormacin, sino que se utilizanormalmente para capturar su pulsacin (mediante JavaScript es lo ms habitual) yresponder en consecuencia.

    cuadro de contraseas

    Funcionan como los cuadros de texto, slo que el texto que se introduce se oculta,mostrando slo puntos o asteriscos. La sintaxis es:

    Usa los mismos atributos que los cuadros de texto

    botones de radio

    Se trata de un control fcil de usar que permite elegir una de entre varias opciones.Todas las opciones deben de tener el mismo nombre y slo cambia el valor. Ejemplo:

    Sexo:

    HombreMujer

    El resultado es:

    El atributo checked(que slo admite el valor checked) hace que el botn en el que seusa, aparezca chequeado por defecto

    casillas de verificacin

    Se usan igual que los botones de radio, aunque no se recomienda agrupar varios con elmismo nombre; no porque no se pueda, sino porque las casillas se asocian a valores quese activan o desactivan.

    La diferencia es que el tipo (type) es checkboxen lugar de radio. tambin posee el

    atributo checkedpara que inicialmente la casilla aparezca pulsada.

  • 8/12/2019 php guia.pdf

    32/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (32)

    Ejemplo:

    Sexo:

    HombreMujer

    Estado civil: Casado


    El resultado:

    cuadros combinados

    Un cuadro combinado permite el uso de una lista de opciones en la que se puede elegir

    la deseada. Todo cuadro comienza con una etiqueta selectque es la encargada de darnombre (name) al control. Dentro cada opcin del cuadro se indica con una etiquetaoptiona la que se da valor mediante el atributo value. Dentro de la etiqueta optionsecoloca el texto que ver el usuario.

    Ejemplo:

    vilaBurgosLenPalencia

    SegoviaSoriaSalamanzaValladolidZamora

  • 8/12/2019 php guia.pdf

    33/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (33)

    Resultado:

    Se pueden agrupar opciones dentro del cuadro usando el elemento optgroup. Ejemplo:

    Santander

    vilaBurgosLenPalenciaSegoviaSoriaSalamanzaValladolidZamora

  • 8/12/2019 php guia.pdf

    34/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (34)

    Da como resultado:

    cuadro de seleccin de archivo

    Cuando se usa type="file" en una etiqueta input, entonces aparece un botn que alpulsarle hace aparecer un cuadro de seleccin de archivos mediante el cual podremoselegir un archivo. La ruta local a dicho archivo es lo que se guarda para ser enviado alsitio o pgina que recibe los valores del formulario. Ejemplo:

    Elija el archivo

    Resultado:

    Al pulsar seleccionar archivoaparece un cuadro, cuando elijamos el archivo aparece sunombre.

    cuadro de texto multilnea

    La etiqueta textareapermite coloca un cuadro de texto de varias lneas para que el

    usuario puede introducir un texto largo. El atributo rowspermite indicar la altura enlneas de texto del cuadro y el atributo cols, la anchura en caracteres. Ejemplo:

    Escribe un texto descriptivo:

  • 8/12/2019 php guia.pdf

    35/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (35)

    Resulta:

    Entre la etiqueta textarease puede colocar texto que aparecer inicialmente dentrodel cuadro.

    agrupacin de controles

    La etiqueta fieldsetpermite agrupar controles para que visualmente sea ms cmodo elrelleno de los controles. Visualmente los controles aparecern recuadrados y se sueleutilizar una etiqueta inmediatamente interior a fieldsetque es legendque contiene eltexto que encabezar al grupo de controles.

    Ejemplo:

    Datos personales

    HombreMujerEstado civil: Casado

    El resultado:

  • 8/12/2019 php guia.pdf

    36/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (36)

    (2.6.2)controles de HTML 5El nuevo estndar HTML ha mejorado notablemente los formularios gracias a nuevoscontroles. La pega es que no todos los controles son soportados por los navegadores; hay

    controles que algunos navegadores no permiten utilizar. cunado un navegador nocomprende un control HTML 5, suele traducirle como un cuadro de texto normal.

    cuadros de texto especializados

    La diferencia entre ellos es el uso del atributo type. Los buenos navegadores quereconocen estos cuadros, varan su uso para adaptarles a su funcin y as facilitar alusuario la entrada de datos. De hecho los navegadores validan los datos y no les dejanenviar hasta que sean correctos. Posibilidades:

    input type="number". Acepta slo nmeros. El navegador se asegura de noaceptar texto. El atributo maxlengthpermite indicar un valor mximo para elcuadro. Si, por ejemplo, ponemos maxlength="5"y entonces slo se aceptarn

    cinco caracteres.input type="email". Acepta slo direcciones de correo electrnico

    input type="url". Acepta slo direcciones URL.

    input type="date". Acepta slo fechas vlidas. Usa el formato de fechaconfigurado en el sistema operativo del usuario que visita la pgina. Losnavegadores adems proporcionan un cuadro visual ms sencillo para recoger lafecha.

    input type="time". Acepta slo horas vlidas; funciona igual que el cuadroanterior.

    input type="datetime". Acepta fecha y hora.

    input type="month". Acepta slo nmeros del 1 al 12, referidos a un mes.

    input type="search". Presenta un cuadro de texto pensado para hacerbsquedas.

    input type="tel". Permite introducir nmeros de telfono.

    input type="range". Presenta un control para elegir datos entre un rango. Losatributos max y min establecen el rango mximo y mnimo del control. Elatributo stepindica cunto se mueve el control (si de uno en uno, de dos endos,).

    input type="color". Presenta un control de seleccin de colores. El color setoma en formato #xxxxxxdonde cada x es una cifra hexadecimal. Es decir lo

    toma en el formato habitual de colores de HTML.

    etiquetado de controles

    En lugar de poner la informacin de los controles poniendo texto directamente, serecomienda usar la etiqueta labelque utiliza un atributo forque sirve para asociar eltexto interno a la etiqueta labelrespecto al nombre del control que se indica con elatributo for.

    Esto permite una mejor usabilidad (los navegadores reconocen labely, por ejemplo,al hacer clic en el texto de la etiqueta, el control asociado recibe el foco).

  • 8/12/2019 php guia.pdf

    37/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (37)

    El ejemplo anterior usando labelsera:

    Escribe un texto descriptivo:



    datalist

    No hay muchos navegadores que acepten esta etiqueta, pero es muy potente permiteaadir entradas a un control de cuadro de texto (y tambin a cuadros especializadoscomo los de email, url,.). La forma de usar consiste en usar el atributo HTML5 listexistente en la etiqueta input.Ese atributoasociar el cuadro de texto a la lista devalores. Luego dentro de datalistse colocan etiquetas optionpara cada opcin en lalista.

    Ejemplo:

    Escribe en qu te gusta pasar tu tiempo de ocio

    No aparece un cuadro combinado, ser un cuadro de texto que permitir que aparezcala lista de opciones. Pero podremos escribir lo que queramos.

    Sin embargo esta forma no funciona en la mayora de navegadores y por ello se usaun truco que hace que los navegadores no compatibles con HTML5 vean la lista como uncuadro combinado y los compatibles como un cuadro de texto en el que se podraescribir:

    Escribe en qu te gusta pasar tu tiempo de ocio

    DeportesTeatroCineLeer

  • 8/12/2019 php guia.pdf

    38/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (38)

    El truco consiste en meter select dentro del datalist, los navegadores modernosignorarn la etiqueta selecty los viejos el datalist.

    atributo requiredEste atributo obliga a rellenar con algn valor el control en el que se usa. Es decir haceque un determinado control sea de obligado rellenado en un formulario. Uso:

    O bien, usando una forma ms compatible con XMNL:

    atributo multiplePermite en los cuadros de entrada de texto que el usuario pueda indicar varios valoressi les separa con comas.

    atributo patternPermite colocar una expresin regular en un cuadro de texto que, obligatoriamente,tendr que cumplir el cuadro en el que se use el atributo. Ejemplo (cuadro de texto queslo acepta introducir 5 letras maysculas y tres nmeros):

    Escribe el n de serie (5 letras y tres nmeros)

    atributo placeholderUn placeholder es un texto que ayuda a rellenar un cuadro de un formulario (estespecialmente pensado para los cuadros de texto) colocando un texto inicial en elcuadro que se va en cuanto el cuadro obtiene el foco del usuario (porque, por ejemplo,el usuario le hace clic). Ejemplo:

    Escribe el n de serie

    El resultado es:

  • 8/12/2019 php guia.pdf

    39/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (39)

    atributo autocompletePermite activar (valor on) o desactivar (valor off) el autocompletado del navegador. Elautocompletado es la opcin que permite a los usuarios cuando rellenan un formulariover entradas habituales que han escrito en el mismo u otros formularios. a veces

    conviene desactivar cuando lo que se escribe son datos sensibles (nombre de usuario,contraseas).

    atributos min,maxyrangeSon atributos que se pueden utilizar en muchos tipos de cuadros (number, date, time,range,..) que almacenan valores numricos o similares. min y max establecen loslmites del cuadro. Por ejemplo si el cuadro es numrico y ponemos min=1y max=50yeso impedir poner valores en el cuadro fuera de esos topes. El parmetro stepindica elmnimo incremente de valor en el cuadro; si en el ejemplo anterior ponemos step=3delvalor 1saltaremos al 4. Los controles del cuadro (en el caso de los cuadros numricos,las flechitas) obedecen a esa configuracin.

    (2.6.3)mtodos de envo de datos del formularioComo se ha comentado antes, un formulario puede enviar la informacin usando elatributo methoddel formulario y eligiendo GETo POST.

    paso de datos mediante GET

    El mtodo GET lo que hace es aadir a la URL destinataria del formulario los datosrecogidos del formulario. Ejemplo:

    Escriba su nombreEscriba sus apellidosEscriba su direccinEscriba sus telfonos:

    El resultado del cdigo, rellenando los campos, sera:

  • 8/12/2019 php guia.pdf

    40/51

  • 8/12/2019 php guia.pdf

    41/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (41)

    El paso de datos de un formulario mediante GET tiene estas connotaciones:

    La URL es visible, por lo que todo lo que el usuario ha escrito est ala vista enla URL. Y eso incluye las contraseas y nombres de usuario que haya utilizado.

    Las pginas generadas con GET pueden aadirse como marcador o favorito a losnavegadores y pginas de marcadores. Eso puede ser interesante, pero puedeser un problema

    No tenemos que pasar por el formulario para enviar valores a la pginareceptora. Eso puede provocar problemas de seguridad, pero tambin puedeser una ventaja para redireccionar pginas pasando parmetros a las mismas.

    La depuracin de nuestros programas es ms cmoda si usamos GET, porquevemos lo que realmente llega del formulario en la propia URL.

    paso de parmetros mediante POST

    Los formularios se crean igual en ambos casos, pero ahora cambiamos el atributo

    methodde la etiqueta formpara elegir POST.Ahora la URL no aade los parmetros del formulario, quedan invisibles. Realmente

    se pasan en el paquete http que comunica a ambas pginas, pero no se ve en la URL conlo que habra que utilizar mtodos ms sofisticados para poder recoger los datos que elusuario introdujo en el formulario.

    (2.6.4)recepcin de datos de un formulario desde unapgina PHP

    PHP permite recibir los datos pasados por los parmetros usando dos variables, que sonen realidad dos arrays que contendrn todos los valores del formulario. Se trata de

    $_GETy de $_POSTcada una dedicada al mtodo con su mismo nombre.Puesto que son arrays (se estudian con profundidad ms adelante) su manejo es

    distinto al de una variable normal. Podemos entender que son contenedores de todoslos elementos del formulario.

    Los controles del formulario que hayan recibido valores envan esos valoresasociados al nombre de control especificado en el atributo name. De modo que si elmtodo de paso era POST, la pgina PHP acceder al valor de ese control mediante:

    $_POST["name"]

    donde namees el nombre del control.

    Puede ser que el control no reciba ningn valor (porque el usuario no rellena nadaen l). En ese caso la invocacin a $_POST (o a $_GET) usando el nombre de esecontrol, provocar un error de variable indefinida, por lo que debemos comprobar laexistencia de la variable mediante la funcin isset.

    Otras veces lo que ocurrir es que se recibe como definida la variable pero nocontiene valores. En ese caso habra que utilizar la funcin emptypara comprobar queno est vaco el atributo.

  • 8/12/2019 php guia.pdf

    42/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (42)

    (2.6.5)usar la misma pgina para el formulario y larecepcin

    A veces se usa la misma pgina para recibir los datos del formulario. En ese caso lapgina del formulario ser PHP. Un uso habitual es para validar los datos desde PHP. Lapgina recibe los datos y les valida, si est bien entonces les da por buenos sino,informa del error.

    Actualmente las validaciones de los datos se realizan por JavaScript y especialmenteusando AJAX; esta tcnica permite validar los datos de forma ms directa (sin tener quereenviarles). Pero implica usar otros lenguajes y tampoco podran hacer validacionescomplejas.

    En el siguiente ejemplo se expone una pgina que pide un nombre de usuario ycontrasea en un formulario. Si son correctos se indicar que lo son; sino, un enlace nosvolvera a llevar a la pgina para volver a empezar. La cuestin es cmo sabe la pginaweb cuando mostrar el formulario y cuando no? La forma es valorar la existencia de la

    variable superglobal $_POST(lo mismo para $_GET). Cuando devuelve falso, es que noha recogido valor alguno, es decir habra que mostrar el formulario. Cdigo:

    Escriba su usuario
    Escriba la contrasea

  • 8/12/2019 php guia.pdf

    43/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (43)

    else{echo"Entrada correcta";

    }}

    ?>

    2.7)funciones(2.7.1)introduccin

    Uno de los problemas habituales del programador ocurre cuando los programas alcanzanun tamao considerable en cuanto a lneas de cdigo. El problema se puede volver tan

    complejo que acaba siendo inabordable.Para mitigar este problema apareci la programacin modular.En ella el programa

    se divide en mdulos de tamao manejable. Cada mdulo realiza una funcin muyconcreta y as el programador se concentra en cada mdulo y evita la complejidad demanejar el problema completo. Los mdulos se pueden programar de formaindependiente. Se basa en concentrar los esfuerzos en resolver problemas sencillos yuna vez resueltos, el conjunto de las soluciones a esos problemas soluciona el problemaoriginal.

    En definitiva la programacin modular implementa el paradigma divide y vencers,tan importante en la programacin. El programa se descompone en mdulos. Losmdulos se puede entender que son pequeos programas que reciben datos y a partir de

    ellos realizan un clculo o una determinada tarea. Una vez el mdulo es probado yvalidado se puede utilizar las veces que haga falta en el programa sin necesidad detener que volver a programa; incluso se puede utilizar en diferentes programas ya quese pueden almacenar funciones en un mismo archivo formando lo que se conoce comolibrera.

    En PHP la programacin modular se implementa mediante funciones. Las funcionestrabajan de esta manera:

    (1) Las funciones poseen un nombre, un identificador que cumple las reglasindicadas para los dems identificadores que conocemos (como los de lasvariables). Pero, a diferencia de las variables, no utilizan el signo $. Se aconsejaque el nombre de las funciones se escriba en minsculas.

    (2) A las funciones se les indica, aunque no a todas, unos valores (parmetros) quela funcin necesita para hacer su labor

    (3) Las funciones pueden devolver un valor, resultado del trabajo de la misma.(4) Las funciones contienen el cdigo que permite realizar la tarea para la que se

    cre la funcin.

    (5) Lo ms importante es que las funciones son fundamentales en la programacinde aplicaciones PHP porque permiten centrarse en un problema concreto ypequeo.

  • 8/12/2019 php guia.pdf

    44/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (44)

    De hecho PHP incorpora muchas funciones ya creadas para trabajar (como la propiaprinto la muy utilizada echo). Por ejemplo este cdigo:

    echorand(1,10);

    Escribe un nmero aleatorio entre uno y diez. Los parmetros son el nmero uno y eldiez, el valor que se devuelve es el nmero aleatorio entre esos dos nmeros, elidentificador es randy al ser una funcin estndar de PHP, no podemos ver su cdigo.

    (2.7.2)declaracin y uso de funciones personalesLos programadores de PHP pueden crear sus propias funciones para trabajar. La sintaxises la siguiente:

    function nombreDeLaFuncin(listaDeParmetros){

    cdigo de la funcin}

    Entre el cdigo de la funcin se puede encontrar la palabra return que sirve paradevolver el resultado.

    function doble($valor){return 2*$valor;

    }

    Este cdigo se puede declarar en cualquier parte de una pgina PHP, pero loaconsejable es declarar las funciones en la cabecera.

    Para utilizar una funcin simplemente hay que invocarla pasando los parmetros querequiere, por ejemplo:

    $x=9.75;echo doble(8)."
    "; //escribe 16

    echo doble($x); //escribe 19.5

    No siempre las funciones devuelven valores, por ejemplo:

    function negrita($texto){echo"".$texto."";

    }

    La funcin no tiene instruccin return, puesto que no devuelve valores sino que lo quehace es escribir el texto en negrita. Ejemplo de uso:

    negrita("Hola");

  • 8/12/2019 php guia.pdf

    45/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (45)

    (2.7.3)alcance de las variablesLas variables definidas en una funcin, al finalizar la funcin se eliminan. Es decir sumbito es local a la funcin. Ejemplo:

    functionf1(){$h=9;

    }

    echo$h;

    La instruccin echo del ejemplo anterior, provoca un fallo de variable no definida,porque PHP no reconoce a la variable $h, la nica $h del cdigo se crea en la funcin yslo se puede usar en la funcin; hacer referencia a $h fuera dela funcin no tienesentido; ya que tras el cierre de la llave en la que se defini, la variable muere. Lavariable es, en definitiva, local a la funcin.

    Este cdigo:

    $h=5;functionf1(){

    $h=9;

    }

    echo$h;//escribe 5

    queda claro que una variable no se puede usar fuera de la funcin. Para PHP en elejemplo anterior hay dos variables $hcuando se cierra la funcin la que se ha definidodentro de la funcin desaparece y regresa la anterior que vala cinco.

    (2.7.4)paso de parmetros por referenciaPor defecto las funciones reciben los parmetros por valor, esto significa que se recibeuna copia del valor en la funcin. Por lo que examinando este cdigo:

    functionf1($x){$x=9;

    }

    $x=7;

    f1($x);echo $x;

    En el ejemplo la funcinf1 simplemente cambia el valor del parmetro $x;al salir deesa funcin $xmuere. Por lo que al escribir lo que vale $x, se mostrar el valor de 7, yaque el $x de fuera de la funcin es diferente al parmetro.

    Sin embargo a veces s se desea que las funciones cambien el valor de las variablesque se pasan como parmetro. El ejemplo ms claro es el de la funcin swap. Lafuncin swap sirve para intercambiar los valores de dos valores.

  • 8/12/2019 php guia.pdf

    46/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (46)

    Se desea que est instruccin: swap($x,$y),sirva para intercambiar los valores dexe ypor ello se programa de esta forma:

    functionswap($x,$y){

    $aux=$x;$x=$y;$y=$aux;

    }

    $valor1=12;

    $valor2=17;swap($valor1,$valor2);

    echo $valor1." ".$valor2;

    En apariencia swap funciona, pero realmente no modifica los valores de las variables$valor1 y $valor2 puesto que los parmetros ($x y $y) reciben una copia de losvalores. El problema es que esta funcin recibe los parmetros por valor, luego nomodifica las variables originales. Por ello, echoescribira 12 17.

    Cuando los parmetros se usan por referencia, entonces s se cambian las variables.Para ello basta con preceder el signo &a los parmetros que se usarn por referencia.As swapse programara as:

    functionswap(&$x,&$y){

    $aux=$x;$x=$y;

    $y=$aux;

    }$valor1=12;$valor2=17;swap($valor1,$valor2);

    echo $valor1." ".$valor2;

    Escribe 17 12, las variables originales han sido modificadas.

    Cuando una funcin utiliza paso por referencia, entonces al invocarla debe recibirnombres de variables y no expresiones o valores literales. Es decir este cdigo:

    swap(9,8);

    produce un error, porque la funcin espera variables y no expresiones.

  • 8/12/2019 php guia.pdf

    47/51

  • 8/12/2019 php guia.pdf

    48/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (48)

    (2.7.7)variables estticasOtro uso de variables especiales lo supone las variables estticas. Se trata de variableslocales a la funcin (slo se podrn utilizar dentro de la funcin), pero son variables que

    recuerdan su valor entre llamadas. Ejemplo:function estatica(){

    static$cuenta=0;$cuenta++;

    echo"Esta es la llamada nmero $cuenta
    ";

    }

    for($i=1;$i

  • 8/12/2019 php guia.pdf

    49/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (49)

    Es fundamental tener en cuenta cundo la funcin debe dejar de llamarse a smisma; es decir, es importante decidir cundo acabar. Toda funcin recursiva debe detener una condicin de fin de las llamadas. De otra forma se corre el riesgo de generarinfinitas llamadas. Un bucle infinito utilizando recursividad puede causar gravesinestabilidades en el ordenador de trabajo.

    Como ejemplo vamos a ver la versin recursiva del factorial.

    function factorial($n){

    if($n1, entonces se devuelve 4 multiplicado por el resultado de la llamadafactorial(3)

    (3) La llamada anterior hace que el nuevo n(variable distinta de la anterior) valga3, por lo que esta llamada devolver 3 multiplicado por el resultado de lallamada factorial(2)

    (4) La llamada anterior devuelve 2 multiplicado por el resultado de la llamadafactorial(1)

    (5) Esa llamada devuelve 1(6) Eso hace que la llamada factorial(2)devuelva 2*1, es decir 2(7) Eso hace que la llamada factorial(3) devuelva 3*2, es decir 6(8) Por lo que la llamada factorial(4) devuelve 4*6, es decir 24 Y ese es ya el

    resultado final

  • 8/12/2019 php guia.pdf

    50/51

    implantacin de aplicaciones webUnidad 2. Creacin de Aplicaciones Web con PHP

    (50)

    4 * factorial(3)

    3 * factorial(2)

    2 * factorial(1)

    1

    Ciclo de llamadas

    recursivas

    4 * 3 * 2 * 1

    3 * 2 * 1

    2 * 1

    1

    Devolucin de

    valores Ilustracin 1, Pasos para realizar la recursividad

    recursividad o iteracin?

    Hay otra versin de la funcin factorial resuelta mediante un bucle for (soluciniterativa) en lugar de utilizar la recursividad. En concreto es:

    functionfactorial2($n){$res=1;

    for($i=1;$i

  • 8/12/2019 php guia.pdf

    51/51

    2 curso de administracin de sistemas informticos en redautor:Jorge Snchez www.jorgesanchez.net

    (2.7.9)mbito de las funcionesLas funciones en PHP siempre son globales. Es decir, una funcin se puede utilizar encualquier parte del cdigo PHP. Por supuesto esto prohbe poner el mismo nombre a dos

    funciones.

    2.8)inclusin de ficherosDentro del cdigo PHP se puede hacer uso de las instrucciones include y/o requireparaincluir el cdigo de otro archivo. El archivo puede ser de cualquier tipo: html, phpuotras extensiones.

    Por lo que permite la creacin de archivos que contengan libreras de funciones ocdigo reutilizable en mltiples pginas.

    Tanto includecomo requirelo que hacen es simplemente copiar y pegar el cdigodel archivo tal cual. La diferencia es que si el archivo no existe (o no se encuentra),

    includeseguir ejecutando el cdigo (aunque normalmente mostrar una advertenciadel error), mientras que require generar un error grave y parar la ejecucin delcdigo.

    En la inclusin se entiende que el cdigo que se incluye es cdigo PHP, por lo que seentender que lo que no est encerrado en etiquetas es cdigo HTML.

    Ejemplo de uso:

    include("funciones.php");