introduccion a php

68
Instituto de Educación Superior Tecnológico Público Instituto de Educación Superior Tecnológico Público “Francisco de Paula Gonzáles Vigil” “Francisco de Paula Gonzáles Vigil” Carrera Profesional de Computación e Informática Carrera Profesional de Computación e Informática “Introducción a PHP" José Luis Ponce Segura [email protected] www.sitelsur.com

Upload: noise-mandamiento-c

Post on 12-Jun-2015

519 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Introduccion a php

Instituto de Educación Superior Tecnológico PúblicoInstituto de Educación Superior Tecnológico Público“Francisco de Paula Gonzáles Vigil”“Francisco de Paula Gonzáles Vigil”

Carrera Profesional de Computación e InformáticaCarrera Profesional de Computación e Informática

“Introducción a PHP"

José Luis Ponce [email protected]

www.sitelsur.com

Page 2: Introduccion a php

Introducción a PHPIntroducción a PHP

• Lenguajes de Lenguajes de scriptscript– PHP es un lenguaje de PHP es un lenguaje de scriptscript del lado del servidor. Otros del lado del servidor. Otros

lenguajes similares son ASP, JSP o ColdFusionlenguajes similares son ASP, JSP o ColdFusion– Los scripts PHP están incrustados en los documentos Los scripts PHP están incrustados en los documentos

HTML y el servidor los interpreta y ejecuta antes de servir HTML y el servidor los interpreta y ejecuta antes de servir las páginas al clientelas páginas al cliente

– El cliente no ve el código PHP sino los resultados que El cliente no ve el código PHP sino los resultados que produceproduce

Page 3: Introduccion a php

Introducción a PHPIntroducción a PHP

• ¿Cómo funciona PHP?¿Cómo funciona PHP?

PáginaHTML

PáginaHTML

internet

Servidor web Cliente(navegador)

<P>Hola, Ana</P>

Page 4: Introduccion a php

Introducción a PHPIntroducción a PHP

• ¿Cómo funciona PHP?¿Cómo funciona PHP?

PáginaPHP

IntérpretePHP

PáginaHTML

PáginaHTML

internet

Servidor web Cliente(navegador)

<?PHP $nombre = "Ana"; print ("<P>Hola, $nombre</P>");?>

<P>Hola, Ana</P>

Page 5: Introduccion a php

Introducción a PHPIntroducción a PHP

• Breve historia de PHPBreve historia de PHP– Creado por Rasmus Lerdorf para uso personal en Creado por Rasmus Lerdorf para uso personal en

19941994– PHP = PHP = Personal Hypertext ProcessorPersonal Hypertext Processor– Versión actual: PHP 5Versión actual: PHP 5– Es un módulo que se añade al servidor web y fue Es un módulo que se añade al servidor web y fue

concebido inicialmente para Apacheconcebido inicialmente para Apache• ¿Por qué PHP?¿Por qué PHP?

– Por sus ventajas: es potente, fácil de aprender, de Por sus ventajas: es potente, fácil de aprender, de libre distribución, permite el acceso a bases de libre distribución, permite el acceso a bases de datos y otras funcionalidades orientadas a la reddatos y otras funcionalidades orientadas a la red

– Dispone de abundante soporte en la WebDispone de abundante soporte en la Web

Page 6: Introduccion a php

Introducción a PHPIntroducción a PHP

• RequisitosRequisitos– Servidor web Apache (www.apache.org)Servidor web Apache (www.apache.org)– con el módulo PHP (www.php.net)con el módulo PHP (www.php.net)– y la base de datos MySQL (www.mysql.com) si se y la base de datos MySQL (www.mysql.com) si se

desea crear páginas dinámicasdesea crear páginas dinámicas• Otras utilidadesOtras utilidades

– Herramientas para la gestión de MySQL, como Herramientas para la gestión de MySQL, como PHPMyAdmin (www.phpmyadmin.net)PHPMyAdmin (www.phpmyadmin.net)

– Editores de PHP, como DevPHP Editores de PHP, como DevPHP (www.sourceforge.net) o Eclipse (www.eclipse.org)(www.sourceforge.net) o Eclipse (www.eclipse.org)

– Manuales de PHP y MySQLManuales de PHP y MySQL

Page 7: Introduccion a php

Lenguaje PHP básicoLenguaje PHP básico

1.1. Sintaxis básicaSintaxis básica2.2. Tipos de datosTipos de datos3.3. VariablesVariables4.4. ConstantesConstantes5.5. Expresiones y operadoresExpresiones y operadores6.6. Estructuras de controlEstructuras de control7.7. FuncionesFunciones8.8. TablasTablas9.9. Bibliotecas de funcionesBibliotecas de funciones

Page 8: Introduccion a php

Sintaxis básicaSintaxis básica

• PHP es sensible a las mayúsculasPHP es sensible a las mayúsculas• ¿Cómo se incrusta en la página web?¿Cómo se incrusta en la página web?

<?PHP ... ?><?PHP ... ?>recomendado, siempre disponiblerecomendado, siempre disponible

<?= expresión ?><?= expresión ?>equivale a <? echo expresión ?>equivale a <? echo expresión ?>

• Las instrucciones se separan con un ; como en C. Las instrucciones se separan con un ; como en C. La marca final ?> implica un ;La marca final ?> implica un ;

• Comentarios: como en C, /* … */ y //Comentarios: como en C, /* … */ y //

Page 9: Introduccion a php

Sintaxis básicaSintaxis básica

• Para imprimir: Para imprimir: echoecho y y printprint

echo: muestra una o más cadenasecho: muestra una o más cadenasecho cadena1 [, cadena2…]; // no es una funciónecho cadena1 [, cadena2…]; // no es una función

echo “Hola mundo”;echo “Hola mundo”;echo “Hola “, “mundo”;echo “Hola “, “mundo”;

print: muestra una cadenaprint: muestra una cadenaprint cadena; // no es una funciónprint cadena; // no es una función

print “Hola mundo”;print “Hola mundo”;print “Hola “ . “mundo”;print “Hola “ . “mundo”;

Page 10: Introduccion a php

Sintaxis básicaSintaxis básica

• Ejemplo:Ejemplo:<HTML><HTML><HEAD><HEAD><TITLE>Mi primer programa en PHP</TITLE><TITLE>Mi primer programa en PHP</TITLE></HEAD></HEAD>

<BODY><BODY>

<?PHP<?PHP print (“<P>Hola mundo</P>”);print (“<P>Hola mundo</P>”);?>?>

</BODY></BODY></HTML></HTML>

Page 11: Introduccion a php

Sintaxis básicaSintaxis básica

• Uso de \n para generar código HTML legibleUso de \n para generar código HTML legible• a) Sin \na) Sin \n

print (“<P>Párrafo 1</P>”);print (“<P>Párrafo 2</P>”);

<P>Párrafo 1</P><P>Párrafo 2</P>

Párrafo 1

Párrafo 2

Código PHP

Código HTML

Salida

Page 12: Introduccion a php

Sintaxis básicaSintaxis básica

• Uso de \n para generar código HTML legibleUso de \n para generar código HTML legible• b) Con \nb) Con \n

print (“<P>Párrafo 1</P>\n”);print (“<P>Párrafo 2</P>\n”);

<P>Párrafo 1</P><P>Párrafo 2</P>

Párrafo 1

Párrafo 2

Código PHP

Código HTML

Salida

Page 13: Introduccion a php

Sintaxis básicaSintaxis básica

• Inclusión de ficheros externos:Inclusión de ficheros externos:– includeinclude()()– requirerequire()()

• Ambos incluyen y evalúan el fichero especificadoAmbos incluyen y evalúan el fichero especificado• Diferencia: en caso de error include() produce un warning y Diferencia: en caso de error include() produce un warning y

require() un error fatalrequire() un error fatal• Se usará require() si al producirse un error debe Se usará require() si al producirse un error debe

interrumpirse la carga de la páginainterrumpirse la carga de la página• Ejemplo:Ejemplo:

Page 14: Introduccion a php

Sintaxis básicaSintaxis básica

<HTML><HEAD> <TITLE>Título</TITLE><?PHP// Incluir bibliotecas de funciones require ("conecta.php"); require ("fecha.php"); require ("cadena.php"); require ("globals.php");?></HEAD><BODY><?PHP include ("cabecera.html");?>// Código HTML + PHP. . .<?PHP include ("pie.html");?></BODY></HTML>

Page 15: Introduccion a php

Tipos de datosTipos de datos

• PHP soporta 8 PHP soporta 8 tipos de datos primitivostipos de datos primitivos::– Tipos escalares: boolean, integer, double, stringTipos escalares: boolean, integer, double, string– Tipos compuestos: array, objectTipos compuestos: array, object– Tipos especiales: resource, NULL Tipos especiales: resource, NULL

• El tipo de una variable no se suele especificar. Se decide El tipo de una variable no se suele especificar. Se decide en tiempo de ejecución en función del contexto y puede en tiempo de ejecución en función del contexto y puede variarvariar

• Funciones de interés:Funciones de interés:– La función gettype() devuelve el tipo de una variableLa función gettype() devuelve el tipo de una variable– Las funciones is_Las funciones is_typetype comprueban si una variable es de un comprueban si una variable es de un

tipo dado:tipo dado:is_array(), is_bool(), is_float(), is_integer(), is_array(), is_bool(), is_float(), is_integer(),

is_null(), is_null(), is_numeric(), is_object(), is_resource(), is_numeric(), is_object(), is_resource(), is_scalar(),is_scalar(),

is_string()is_string()– La función var_dump() muestra el tipo y el valor de una La función var_dump() muestra el tipo y el valor de una

variable. Es especialmente interesante con los arraysvariable. Es especialmente interesante con los arrays

Page 16: Introduccion a php

Tipos de datosTipos de datos

• Tipo Tipo integerinteger (números enteros) (números enteros)– 27, -5, 027, -5, 0

• Tipo Tipo doubledouble (números reales) (números reales)– 1.234, -5.331.234, -5.33

• Tipo Tipo booleanboolean (lógico) (lógico)– Valores: Valores: truetrue, , falsefalse (insensibles a las mayúsculas) (insensibles a las mayúsculas)– El 0 y la cadena vacía tienen valor El 0 y la cadena vacía tienen valor falsefalse

Page 17: Introduccion a php

Tipos de datosTipos de datos

• Tipo string:Tipo string:– Las cadenas se encierran entre comillas simples o dobles:Las cadenas se encierran entre comillas simples o dobles:

• ‘‘simples’: admite los caracteres de escape \’ (comilla simples’: admite los caracteres de escape \’ (comilla simple) y \\ (barra). Las variables simple) y \\ (barra). Las variables NONO se expanden se expanden

• ““dobles”: admite más caracteres de escape, como \n, \r, \dobles”: admite más caracteres de escape, como \n, \r, \t, \\, \$, \”. Los nombres de variables t, \\, \$, \”. Los nombres de variables SÍSÍ se expanden se expanden

• Ejemplos:Ejemplos:$a = 9;$a = 9;print ‘a vale $a\n’;print ‘a vale $a\n’;

// muestra // muestra a vale $a\na vale $a\nprint “a vale $a\n”;print “a vale $a\n”; // muestra // muestra a vale 9a vale 9 y avanza una líneay avanza una líneaprint “<IMG SRC=‘logo.gif’>”;print “<IMG SRC=‘logo.gif’>”; // muestra // muestra <IMG SRC=‘logo.gif’><IMG SRC=‘logo.gif’>print “<IMG SRC=\”logo.gif\”>”;print “<IMG SRC=\”logo.gif\”>”; // muestra // muestra <IMG SRC=“logo.gif”><IMG SRC=“logo.gif”>

– Acceso a un carácter de la cadena:Acceso a un carácter de la cadena:• La forma es $inicial = $nombre{0};La forma es $inicial = $nombre{0};

Page 18: Introduccion a php

VariablesVariables

• Las variables siempre van precedidas de un $Las variables siempre van precedidas de un $• El nombre es sensible a las mayúsculasEl nombre es sensible a las mayúsculas• Comienzan por letra o subrayado, seguido de letras, Comienzan por letra o subrayado, seguido de letras,

números o subrayadonúmeros o subrayado• Variables predefinidas:Variables predefinidas:

$GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIES, $GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIES, $_FILES,$_FILES,

$_ENV, $_REQUEST, $_SESSION$_ENV, $_REQUEST, $_SESSION• Ámbito: globales al fichero (excepto funciones) o locales Ámbito: globales al fichero (excepto funciones) o locales

a una funcióna una función• Ejemplo:Ejemplo:

$valor = 5;$valor = 5;print “El valor es: “ . $valor . “\n”;print “El valor es: “ . $valor . “\n”;print “El valor es: $valor\n”; // ojo: comillas doblesprint “El valor es: $valor\n”; // ojo: comillas dobles

Resultado:Resultado:El valor es: 5El valor es: 5

Page 19: Introduccion a php

VariablesVariables

• Variables variablesVariables variables– Se pueden crear nombres de variables Se pueden crear nombres de variables

dinámicamentedinámicamente– La variable variable toma su nombre del valor de otra La variable variable toma su nombre del valor de otra

variable previamente declaradavariable previamente declarada– Ejemplo:Ejemplo:

$a = $a = ""holahola"";;$$a = $$a = ""mundomundo"";;

print "$a $hola\n";print "$a $hola\n";print "$a ${$a}";print "$a ${$a}";

Resultado:Resultado:hola mundohola mundohola mundohola mundo

Page 20: Introduccion a php

VariablesVariables

<?PHP $mensaje_es="Hola"; $mensaje_en="Hello"; $idioma = "es"; $mensaje = "mensaje_" . $idioma; print $$mensaje;?>

• Ejemplo de variables variables: página Ejemplo de variables variables: página internacionalizada (1)internacionalizada (1)

Page 21: Introduccion a php

VariablesVariables

<?PHP $mensaje_es="Hola"; $mensaje_en="Hello"; $idioma = "en"; $mensaje = "mensaje_" . $idioma; print $$mensaje;?>

• Ejemplo de variables variables: página Ejemplo de variables variables: página internacionalizada (2)internacionalizada (2)

Page 22: Introduccion a php

ConstantesConstantes

• Definición de constantes:Definición de constantes:define (“CONSTANTE”, “hola”);define (“CONSTANTE”, “hola”);print CONSTANTE;print CONSTANTE;

• No llevan $ delanteNo llevan $ delante• Sólo se pueden definir constantes de los tipos escalares Sólo se pueden definir constantes de los tipos escalares

(boolean, integer, double, string)(boolean, integer, double, string)

Page 23: Introduccion a php

Expresiones y operadoresExpresiones y operadores

• Operadores aritméticos:Operadores aritméticos:+, -, *, /, %, ++, --+, -, *, /, %, ++, --

• Operador de asignación:Operador de asignación:==operadores combinados: .=, +=, etcoperadores combinados: .=, +=, etc$a = 3; $a += 5; $a = 3; $a += 5; a vale 8 a vale 8$b = “hola ”; $b .= “mundo”; $b = “hola ”; $b .= “mundo”; b vale “hola mundo” b vale “hola mundo” Equivale a $b = $b . “mundo”; Equivale a $b = $b . “mundo”;

• Operadores de comparación:Operadores de comparación:==, !=, <, >, <=, >= y otros==, !=, <, >, <=, >= y otros

• Operador de control de error: @. Antepuesto a una expresión, Operador de control de error: @. Antepuesto a una expresión, evita cualquier mensaje de error que pueda ser generado por evita cualquier mensaje de error que pueda ser generado por la expresiónla expresión

• Operadores lógicos:Operadores lógicos:and (&&), or (||), !, xorand (&&), or (||), !, xorand/&& y or/|| tienen diferentes prioridadesand/&& y or/|| tienen diferentes prioridades

• Operadores de cadena:Operadores de cadena:concatenación: . (punto)concatenación: . (punto)asignación con concatenación: .=asignación con concatenación: .=

Page 24: Introduccion a php

Expresiones y operadoresExpresiones y operadores

• Precedencia de operadores (de mayor a menor):Precedencia de operadores (de mayor a menor):

++, --++, --*, /, %*, /, %+,-+,-<, <=, >, >=<, <=, >, >===, !===, !=&&&&||||andandoror

Page 25: Introduccion a php

Estructuras de controlEstructuras de control

• Estructuras selectivas:Estructuras selectivas:– if-elseif-else– switchswitch

• Estructuras repetitivas:Estructuras repetitivas:– whilewhile– forfor– foreachforeach

Page 26: Introduccion a php

Estructuras de controlEstructuras de control

• Estructura selectiva Estructura selectiva if-else

• Mismo comportamiento que en C Mismo comportamiento que en C • Las sentencias compuestas se encierran entre Las sentencias compuestas se encierran entre

llavesllaves• elseif puede ir todo juntoelseif puede ir todo junto

if (condición) sentencia

if (condición1) sentencia 1else if (condición2) sentencia 2...else if (condición n) sentencia nelse sentencia n+1

if (condición) sentencia 1else sentencia 2

Page 27: Introduccion a php

Estructuras de controlEstructuras de control

• Ejemplo de estructura selectiva if-Ejemplo de estructura selectiva if-else:else:

<?PHP<?PHPif ($sexo == ‘M’)if ($sexo == ‘M’)

$saludo = "Bienvenida, ";$saludo = "Bienvenida, ";elseelse

$saludo = "Bienvenido, ";$saludo = "Bienvenido, ";$saludo = $saludo . $nombre;$saludo = $saludo . $nombre;print ($saludo);print ($saludo);

?>?>

Page 28: Introduccion a php

Estructuras de controlEstructuras de control

• Estructura selectiva Estructura selectiva switchswitch (expresión)switch (expresión){{

case valor_1:case valor_1:sentencia 1sentencia 1break;break;

case valor_2:case valor_2:sentencia 2sentencia 2break;break;

……case valor_n:case valor_n:

sentencia nsentencia n break;break;

defaultdefaultsentencia n+1sentencia n+1

}}• Mismo comportamiento que en C, sólo que la expresión Mismo comportamiento que en C, sólo que la expresión

del case puede ser integer, float o stringdel case puede ser integer, float o string

Page 29: Introduccion a php

Estructuras de controlEstructuras de control

• Ejemplo de estructura selectiva switch:Ejemplo de estructura selectiva switch:

switch ($extension)switch ($extension){{ case ("PDF"):case ("PDF"): $tipo = "Documento Adobe PDF";$tipo = "Documento Adobe PDF"; break;break; case ("TXT"):case ("TXT"): $tipo = "Documento de texto";$tipo = "Documento de texto"; break;break; case ("HTML"):case ("HTML"): case ("HTM"):case ("HTM"): $tipo = "Documento HTML";$tipo = "Documento HTML"; break;break;

default:default: $tipo = "Archivo " . $extension;$tipo = "Archivo " . $extension;}}print ($tipo);print ($tipo);

Page 30: Introduccion a php

Estructuras de controlEstructuras de control

• Estructura repetitiva Estructura repetitiva while

while (condición)while (condición)sentenciasentencia

• Mismo comportamiento que en CMismo comportamiento que en C

Page 31: Introduccion a php

Estructuras de controlEstructuras de control

• Ejemplo de estructura repetitiva while:Ejemplo de estructura repetitiva while:

<?PHP<?PHPprint ("<UL>\n");print ("<UL>\n");$i=1;$i=1;while ($i <= 5)while ($i <= 5){{

print ("<LI>Elemento $i</LI>\print ("<LI>Elemento $i</LI>\n");n");

$i++;$i++;}}print ("</UL>\n");print ("</UL>\n");

?>?>

Page 32: Introduccion a php

Estructuras de controlEstructuras de control

• Estructura repetitiva Estructura repetitiva for

for (inicialización; condición; incremento)for (inicialización; condición; incremento)sentenciasentencia

• Mismo comportamiento que en CMismo comportamiento que en C

Page 33: Introduccion a php

Estructuras de controlEstructuras de control

• Ejemplo de estructura repetitiva for:Ejemplo de estructura repetitiva for:

<?PHP<?PHPprint ("<UL>\n");print ("<UL>\n");for ($i=1; $i<=5; $i++)for ($i=1; $i<=5; $i++)

print ("<LI>Elemento $i</LI>\print ("<LI>Elemento $i</LI>\n");n");print ("</UL>\n");print ("</UL>\n");

?>?>

Page 34: Introduccion a php

FuncionesFunciones

• Ejemplo:Ejemplo:function suma ($x, $y)function suma ($x, $y){{ $s = $x + $y;$s = $x + $y; return $s;return $s;}}

$a=1;$a=1;$b=2;$b=2;$c=suma ($a, $b);$c=suma ($a, $b);print $c;print $c;

Page 35: Introduccion a php

FuncionesFunciones

• Por defecto los parámetros se pasan por valorPor defecto los parámetros se pasan por valor• Paso por referencia:Paso por referencia:

function incrementa (&$a)function incrementa (&$a){{ $a = $a + 1;$a = $a + 1;}}

$a=1;$a=1;incrementa ($a);incrementa ($a);print $a; // Muestra un 2print $a; // Muestra un 2

Page 36: Introduccion a php

FuncionesFunciones

• Argumentos por defectoArgumentos por defectofunction muestranombre ($titulo = "Sr.")function muestranombre ($titulo = "Sr."){{ print "Estimado $titulo:\n";print "Estimado $titulo:\n";}}muestranombre ();muestranombre ();muestranombre ("Prof.");muestranombre ("Prof.");

• Salida:Salida:Estimado Sr.:Estimado Sr.:Estimado Prof.:Estimado Prof.:

Page 37: Introduccion a php

FuncionesFunciones

• Los argumentos con valores por defecto deben Los argumentos con valores por defecto deben ser siempre los últimos:ser siempre los últimos:

function muestranombre ($nombre, $titulo= "Sr.")function muestranombre ($nombre, $titulo= "Sr."){{ print "Estimado $titulo $nombre:\n";print "Estimado $titulo $nombre:\n";}}muestranombre (“Fernández”);muestranombre (“Fernández”);muestranombre (“Fernández”, "Prof.");muestranombre (“Fernández”, "Prof.");

• Salida:Salida:Estimado Sr. Fernández:Estimado Sr. Fernández:Estimado Prof. Fernández:Estimado Prof. Fernández:

Page 38: Introduccion a php

Arrays = TablaArrays = Tabla

¿Qué es un ¿Qué es un arrayarray??• Un Un arrayarray es sencillamente una tabla de valores. es sencillamente una tabla de valores.• Cada uno de los Cada uno de los elementoselementos de esa de esa tablatabla se identifica por medio de un se identifica por medio de un nombrenombre

(común para todos) y un (común para todos) y un índiceíndice (que diferenciaría a cada uno de ellos). (que diferenciaría a cada uno de ellos).• La sintaxis que permite definir elementos en un array es la siguiente:La sintaxis que permite definir elementos en un array es la siguiente:

$nombre[indice]$nombre[indice]

El El índiceíndice puede ser puede ser un númeroun número (habría que escribirlo dentro del corchete (habría que escribirlo dentro del corchete sin sin comillascomillas), ), una una cadenacadena (que habría que poner en el corchete encerrada entre (que habría que poner en el corchete encerrada entre comillas sencillascomillas sencillas –'–). –'–).

Cuando los Cuando los índicesíndices de un array son de un array son númerosnúmeros se dice que es se dice que es escalarescalar mientras mientras que si fueran que si fueran cadenascadenas se le llamaría array se le llamaría array asociativoasociativo..

Page 39: Introduccion a php

Arrays UnidimensionalesArrays Unidimensionales

Arrays EscalaresArrays Escalares• Los elementos de un Los elementos de un arrayarray escalar escalar

puede escribirse con una de estas puede escribirse con una de estas sintaxis:sintaxis:

$a[]=$a[]=valor valor ó $a[xx]=ó $a[xx]=valorvalor

• En el primero se asigna los índices de En el primero se asigna los índices de forma automática, éste es un valor forma automática, éste es un valor enteroentero y empieza por el y empieza por el 00 (CERO). (CERO).

• En el segundo de los casos, seremos En el segundo de los casos, seremos nosotros quienes pongamos (nosotros quienes pongamos (xxxx) el ) el númeronúmero correspondiente al correspondiente al valor del valor del índiceíndice..

Arrays AsociativoArrays Asociativo• Los elementos de un Los elementos de un arrayarray asociativo asociativo

pueden escribirse usando la siguiente pueden escribirse usando la siguiente sintaxis:sintaxis:

$a[$a['indice''indice']=]=valorvalor

• En éste caso estamos obligados a escribir En éste caso estamos obligados a escribir el nombre del índice que habrá de ser una el nombre del índice que habrá de ser una cadenacadena y debe ponerse entre comillas. y debe ponerse entre comillas.

• Tanto en este supuesto como en el Tanto en este supuesto como en el anterior, es posible –y bastante frecuente– anterior, es posible –y bastante frecuente– utilizar como índice el contenido de una utilizar como índice el contenido de una variable. El modo de hacerlo sería:variable. El modo de hacerlo sería:

$a[$ind]=$a[$ind]=valorvalor

• En este caso, sea cual fuere el valor de la En este caso, sea cual fuere el valor de la variable variable $ind$ind, el nombre de la variable , el nombre de la variable nuncanunca se pone entre comillas. se pone entre comillas.

Page 40: Introduccion a php

Arrays UnidimensionalesArrays Unidimensionales<< Escalares y Asociativos >><< Escalares y Asociativos >>

$a[0]=“Domingo” $a[“Primero”]=“Domingo”

Page 41: Introduccion a php

Arrays BidimensionalesArrays Bidimensionales

Arrays EscalaresArrays Escalares• Los elementos de un Los elementos de un arrayarray

bidimensionalbidimensional escalar pueden escalar pueden escribirse usando una de estas escribirse usando una de estas sintaxis:sintaxis:

$a[][]=$a[][]=valor ó valor ó $a[xx][]=$a[xx][]=valorvalor

$a[][xx]=$a[][xx]=valor ó valor ó $a[xx][yy]= $a[xx][yy]=valorvalor

Arrays AsociativoArrays Asociativo• Los elementos de un Los elementos de un arrayarray asociativo asociativo

se pueden escribir usando la siguiente se pueden escribir usando la siguiente sintaxis:sintaxis:

$a[$a["indice1""indice1"][]["indice2""indice2"]=]=valorvalor

Page 42: Introduccion a php

La función ArrayLa función Array

Por ejemplo:Por ejemplo:

$z=array ($z=array (0 => 2,0 => 2,1 => "Pepe",1 => "Pepe",2 => 34.7,2 => 34.7,3 => "34Ambrosio",3 => "34Ambrosio",););

producirá igual resultado que:producirá igual resultado que:

$z[0]=2;$z[0]=2;$z[1]="Pepe";$z[1]="Pepe";$z[2]=34.7;$z[2]=34.7;$z[3]="34Ambrosio"; $z[3]="34Ambrosio";

$a= array ($a= array (índice 0índice 0 => => valorvalor, ..... , , ..... , índice níndice n => => valorvalor,);,);

Page 43: Introduccion a php

La función ArrayLa función Array

• La función La función array() array() permite escribir arrays permite escribir arrays de cualquier dimensión utilizando la de cualquier dimensión utilizando la técnica de técnica de anidadoanidado. Ejemplo de array . Ejemplo de array escalar:escalar:

$z[0][0]=34;$z[0][0]=34;$z[0][1]=35;$z[0][1]=35;$z[0][2]=36;$z[0][2]=36;$z[1][0]=134;$z[1][0]=134;$z[1][1]=135;$z[1][1]=135;$z[1][2]=136;$z[1][2]=136;

podríamos hacerlo así:podríamos hacerlo así:$z=array( 0 => array (0 => 34, $z=array( 0 => array (0 => 34,

1 => 35,1 => 35, 2 => 36,), 2 => 36,), 1 => array (0 => 134, 1 => array (0 => 134, 1 => 135, 1 => 135, 2 => 136,) 2 => 136,) ); );

• El anidado sucesivo permitiría generar El anidado sucesivo permitiría generar arraysarrays de cualquier dimensión. Ejemplo de de cualquier dimensión. Ejemplo de array asociativoarray asociativo::

$z["a"]["A"]=34;$z["a"]["A"]=34;$z["a"]["B"]=35;$z["a"]["B"]=35;$z["a"]["C"]=36;$z["a"]["C"]=36;$z["b"]["A"]=134;$z["b"]["A"]=134;$z["b"]["B"]=135;$z["b"]["B"]=135;$z["b"]["C"]=136;$z["b"]["C"]=136;

que podría definirse también de esta que podría definirse también de esta forma: forma: $z=array("a" => array ("A" => $z=array("a" => array ("A" => 34,34, "B" => 35, "B" => 35, "C" => 36, ), "C" => 36, ), "b" => array ("A" => 134, "b" => array ("A" => 134, "B" => 135, "B" => 135, "C" => 136,) "C" => 136,) ); );

$a= array ($a= array (índice 0índice 0 => => valorvalor, ..... , , ..... , índice níndice n => => valorvalor,);,);

Page 44: Introduccion a php

Bibliotecas de funcionesBibliotecas de funciones

• Existen muchas bibliotecas de funciones en PHPExisten muchas bibliotecas de funciones en PHP• Algunos ejemplos:Algunos ejemplos:

– Funciones de manipulación de cadenasFunciones de manipulación de cadenas– Funciones de fecha y horaFunciones de fecha y hora– Funciones de arraysFunciones de arrays– Funciones de ficherosFunciones de ficheros– Funciones matemáticasFunciones matemáticas– Funciones de bases de datosFunciones de bases de datos– Funciones de redFunciones de red

• Algunas bibliotecas requieren la instalación de Algunas bibliotecas requieren la instalación de componentes adicionalescomponentes adicionales

• Todas las funciones de biblioteca están comentadas en la Todas las funciones de biblioteca están comentadas en la documentación de PHPdocumentación de PHP

Page 45: Introduccion a php

Bibliotecas de funcionesBibliotecas de funciones

• Funciones de manipulación de cadenasFunciones de manipulación de cadenas– explode()explode()

• Divide una cadena en subcadenasDivide una cadena en subcadenas• array array explodeexplode (string separator, string string [, int (string separator, string string [, int

limit]) limit]) – rtrim(), ltrim(), trim()rtrim(), ltrim(), trim()

• Eliminan caracteres a la derecha, a la izquierda o Eliminan caracteres a la derecha, a la izquierda o por ambos lados de una cadenapor ambos lados de una cadena

• string string rtrimrtrim ( string str [, string charlist]) ( string str [, string charlist]) – strstr()strstr()

• Busca la primera ocurrencia de una subcadenaBusca la primera ocurrencia de una subcadena– strtolower() / strtoupper()strtolower() / strtoupper()

• Convierte una cadena a minúscula / mayúsculaConvierte una cadena a minúscula / mayúscula– strcmp() / strcasecmp()strcmp() / strcasecmp()

• Compara dos cadenas con/sin distinción de Compara dos cadenas con/sin distinción de mayúsculasmayúsculas

– strlen()strlen()• Calcula la longitud de una cadenaCalcula la longitud de una cadena

Page 46: Introduccion a php

Bibliotecas de funcionesBibliotecas de funciones

• Funciones de fecha y horaFunciones de fecha y hora– date()date()

• Formatea una fecha según un formato dadoFormatea una fecha según un formato dado• Ejemplo:Ejemplo:

$fecha = date ("j/n/Y H:i");$fecha = date ("j/n/Y H:i");print ("$fecha");print ("$fecha");Resultado:Resultado:

26/9/2005 17:3626/9/2005 17:36 – strtotime()strtotime()

• Convierte una fecha en un Convierte una fecha en un timestamptimestamp de UNIX de UNIX• Ejemplo:Ejemplo:

$fecha = date ("j/n/Y", strtotime(“5 april 2001"));$fecha = date ("j/n/Y", strtotime(“5 april 2001"));print ("$fecha");print ("$fecha");Resultado:Resultado:

5/4/20015/4/2001

Page 47: Introduccion a php

Bibliotecas de funcionesBibliotecas de funciones

• Funciones de arraysFunciones de arrays– array_count_values()array_count_values()

• Calcula la frecuencia de cada uno de los elementos de Calcula la frecuencia de cada uno de los elementos de un arrayun array

– array_search()array_search()• Busca un elemento en un arrayBusca un elemento en un array

– count()count()• Cuenta los elementos de un arrayCuenta los elementos de un array

– sort(), rsort()sort(), rsort()• Ordena y reindexa un array (r=decreciente)Ordena y reindexa un array (r=decreciente)

– ksort(), krsort()ksort(), krsort()• Ordena por claves un array (r=decreciente)Ordena por claves un array (r=decreciente)

Page 48: Introduccion a php

FormulariosFormularios

1.1.Acceso a formularios HTML desde PHPAcceso a formularios HTML desde PHP2.2.El formulario de PHPEl formulario de PHP3.3.Subida de ficheros al servidorSubida de ficheros al servidor4.4.Validación de los datos de un formularioValidación de los datos de un formulario

Page 49: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• Desde PHP se puede acceder fácilmente a los datos Desde PHP se puede acceder fácilmente a los datos introducidos desde un formulario HTMLintroducidos desde un formulario HTML

• Veámoslo con un ejemplo simpleVeámoslo con un ejemplo simple

Page 50: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• Fichero uno.phpFichero uno.php<HTML><HTML><BODY><BODY><FORM ACTION=”dos.php” METHOD=”POST”><FORM ACTION=”dos.php” METHOD=”POST”> Edad: <INPUT TYPE=”text” NAME=”edad”>Edad: <INPUT TYPE=”text” NAME=”edad”> <INPUT TYPE=”submit” VALUE=”aceptar”><INPUT TYPE=”submit” VALUE=”aceptar”></FORM></FORM></BODY></BODY></HTML></HTML>

• Fichero dos.phpFichero dos.php<HTML><HTML><BODY><BODY><?PHP<?PHP print (“La edad es: $edad”);print (“La edad es: $edad”);?>?></BODY></BODY></HTML></HTML>

Page 51: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

Page 52: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• A partir de PHP 4.2.0, el valor por defecto de la directiva de PHP register_globals es off

• Esto tiene una gran importancia sobre los formularios, ya que no es posible acceder a las variables enviadas de la manera anterior (como variables globales). En su lugar hay que utilizar la variable predefinida de PHP $_POST, escribiendo $_POST[‘edad’] en lugar de $edad

• Se puede poner register_globals = on en el fichero de configuración php.ini, pero no es recomendable por motivos de seguridad. Una alternativa que permite hacer mínimos cambios en el código ya existente es la siguiente:

$edad = $_POST[‘edad’];

Page 53: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• Fichero uno.php<HTML><BODY><FORM ACTION=”dos.php” METHOD=”POST”> Edad: <INPUT TYPE=”text” NAME=”edad”> <INPUT TYPE=”submit” VALUE=”aceptar”></FORM></BODY></HTML>

• Fichero dos.php<HTML><BODY><?PHP $edad = $_POST[‘edad’]; print (“La edad es: $edad”);?></BODY></HTML>

Page 54: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• Acceso a los diferentes tipos de elementos de Acceso a los diferentes tipos de elementos de entrada de formularioentrada de formulario

– Elementos de tipo INPUTElementos de tipo INPUT• TEXTTEXT• RADIORADIO• CHECKBOXCHECKBOX• BUTTONBUTTON• FILEFILE• HIDDENHIDDEN• PASSWORDPASSWORD• SUBMITSUBMIT

– Elemento SELECTElemento SELECT• Simple / múltipleSimple / múltiple

– Elemento TEXTAREAElemento TEXTAREA

Page 55: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• TEXTTEXT

Introduzca la cadena a buscar:<INPUT TYPE="text" NAME="cadena" VALUE="valor por defecto" SIZE="20">

<?PHP $cadena = $_POST[‘cadena’]; print ($cadena);?>

Page 56: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• RADIORADIO

Sexo:<INPUT TYPE="radio" NAME=“sexo" VALUE=“M“ CHECKED>Mujer<INPUT TYPE="radio" NAME=“sexo" VALUE=“H">Hombre

<?PHP $sexo = $_POST[‘sexo’]; print ($sexo);?>

Page 57: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• CHECKBOXCHECKBOX

<INPUT TYPE="checkbox" NAME="extras[]" VALUE="garaje" CHECKED>Garaje<INPUT TYPE="checkbox" NAME="extras[]" VALUE="piscina">Piscina<INPUT TYPE="checkbox" NAME="extras[]" VALUE="jardin">Jardín

<?PHP $extras = $_POST[‘extras’]; $n = count ($extras); for ($i=0; $i<$n; $i++) print (“$extras[$i]<BR>\n”); //foreach ($extras as $extra) //print (“$extra<BR>\n”);?>

Page 58: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• BUTTONBUTTON

<INPUT TYPE="button" NAME=“actualizar" VALUE="Actualizar datos">

<?PHP $actualizar = $_POST[‘actualizar’]; if ($actualizar) print ("Se han actualizado los datos");?>

Page 59: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• FILEFILE

<FORM ACTION="procesa.php" METHOD="post“ ENCTYPE="multipart/form-data"> <INPUT TYPE="file" NAME="fichero"></FORM>

Page 60: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• HIDDENHIDDEN

<?PHP print(“<INPUT TYPE=’hidden’ NAME=’username’ VALUE=’$usuario’>\n”);?>

<?PHP $username = $_POST[‘username’]; print ($username);?>

Page 61: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• PASSWORDPASSWORD

Contraseña: <INPUT TYPE="password" NAME="clave">

<?PHP $clave = $_POST[‘clave’]; print ($clave);?>

Page 62: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• SUBMITSUBMIT

<INPUT TYPE="submit" NAME="enviar" VALUE="Enviar datos">

<?PHP $enviar = $_POST[‘enviar’]; if ($enviar) print ("Se ha pulsado el botón de enviar");?>

Page 63: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• SELECT simpleSELECT simple

Color:<SELECT NAME=“color"> <OPTION VALUE=“rojo" SELECTED>Rojo <OPTION VALUE=“verde">Verde <OPTION VALUE=“azul">Azul</SELECT>

<?PHP $color = $_POST[‘color’]; print ($color);?>

Page 64: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• SELECT múltipleSELECT múltiple

Idiomas:<SELECT MULTIPLE SIZE="3" NAME="idiomas[]"> <OPTION VALUE="ingles" SELECTED>Inglés <OPTION VALUE="frances">Francés <OPTION VALUE="aleman">Alemán <OPTION VALUE="holandes">Holandés</SELECT>

<?PHP $idiomas = $_POST[‘idiomas’]; $n = count ($idiomas); for ($i=0; $i<$n; $i++) print (“$idiomas[$i]<BR>\n”); //foreach ($idiomas as $idioma) //print (“$idioma<BR>\n”);?>

Page 65: Introduccion a php

Acceso a formularios desde PHPAcceso a formularios desde PHP

• TEXTAREATEXTAREA

Comentario:<TEXTAREA COLS=“50" ROWS=“4" NAME="comentario">Este libro me parece ...</TEXTAREA>

<?PHP $comentario = $_POST[‘comentario’]; print ($comentario);?>

Page 66: Introduccion a php

El formulario de PHPEl formulario de PHP

• La forma habitual de trabajar con formularios en PHP es La forma habitual de trabajar con formularios en PHP es utilizar un único programa que procese el formulario o lo utilizar un único programa que procese el formulario o lo muestre según haya sido o no enviado, respectivamentemuestre según haya sido o no enviado, respectivamente

• Ventajas:Ventajas:– Disminuye el número de ficherosDisminuye el número de ficheros– Permite validar los datos del formulario en el propio Permite validar los datos del formulario en el propio

formularioformulario• Procedimiento:Procedimiento:

si se ha enviado el formulario:si se ha enviado el formulario: Procesar formularioProcesar formulariosi no:si no: Mostrar formularioMostrar formulariofsifsi

Page 67: Introduccion a php

El formulario de PHPEl formulario de PHP

• Esquema de funcionamiento:Esquema de funcionamiento:

si se ha enviado el formulario: Procesar formulario

si no: Mostrar formulariofsi

a) b)

– La 1ª vez que se carga la página se muestra el La 1ª vez que se carga la página se muestra el formulario (a)formulario (a)

– La 2ª vez La 2ª vez se procesa el formulario (b)se procesa el formulario (b)

Page 68: Introduccion a php

El formulario de PHPEl formulario de PHP

• Para saber si se ha enviado el formulario se acude a la Para saber si se ha enviado el formulario se acude a la variable correspondiente al botón de envío. Si este botón variable correspondiente al botón de envío. Si este botón aparece de la siguiente forma en el formulario HTML:aparece de la siguiente forma en el formulario HTML:

<INPUT TYPE="SUBMIT" NAME="enviar“ VALUE="procesar"><INPUT TYPE="SUBMIT" NAME="enviar“ VALUE="procesar">

entonces la condición anterior se transforma en:entonces la condición anterior se transforma en:if (isset($enviar))if (isset($enviar))

o bieno bienif ($enviar == “procesar”)if ($enviar == “procesar”)