php - php hypertext pre-processor -...

176
Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos Programación avanzada en PHP PHP PHP Hypertext Pre-processor Antonio LaTorre <atorre@fi.upm.es> José María Peña <jmpena@fi.upm.es> Programación Web en Servidor 2006/2007 Antonio LaTorre de la Fuente, José María Peña PHP

Upload: others

Post on 03-May-2020

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

PHPPHP Hypertext Pre-processor

Antonio LaTorre <[email protected]>José María Peña <[email protected]>

Programación Web en Servidor

2006/2007

Antonio LaTorre de la Fuente, José María Peña PHP

Page 2: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Contenidos

1 Introducción al lenguaje PHP

2 Instalación y Configuración del servidor

3 Conceptos básicosGestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

4 Programación avanzada en PHPFormularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Antonio LaTorre de la Fuente, José María Peña PHP

Page 3: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

1 Introducción al lenguaje PHP

2 Instalación y Configuración del servidor

3 Conceptos básicos

4 Programación avanzada en PHP

Antonio LaTorre de la Fuente, José María Peña PHP

Page 4: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Ejecución de Programas Web

Páginas dinámicas en cliente• El cliente recibe un pequeño programa que interacciona

con el navegador del usuario.• Útil pero tiene seria limitaciones.• Tecnologías como son JavaScripts

Páginas dinámicas de servidor• El cliente recibe el resultado de un programa que ejecuta

el servidor web.• Menos interactivo pero más potente.

• Soluciones básicas: CGI.• Soluciones más potentes: ASP, JSP, PHP.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 5: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Ejecución de Programas Web

Antonio LaTorre de la Fuente, José María Peña PHP

Page 6: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

PHP

PHP es...• Las siglas de PHP Hypertext Pre-processor• Un lenguaje interpretado diseñado expresamente para

crear páginas dinámicas en el servidor.• Una de las alternativas tecnológicas más usadas en el

desarrollo de aplicaciones en servidor.• Un estándar de código libre.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 7: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

PHP

Características de PHP• El código PHP lo procesa el servidor y el cliente no lo ve

(ve su resultado).• Permite el acceso sencillo a muchas bases de datos.• Tiene muchas bibliotecas de utilidades y muchos recursos

en la web.• Permite intercalar etiquetas PHP y HTML.• Se puede usar para programar otras cosas.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 8: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Historia de PHP

Versiones de PHP• Versión original de

Rasmus Lerdorf (1994).• PHP 3 (1998).• Zend Engine (1999).• PHP 4 (2000)∗.• PHP 5 (2004)∗.• PHP 6 (anunciado en

breve).

Relevancia de PHP• TIOBE Programming

Community Index loindexa como 5o

lenguaje deprogramación másusado.

• El primero entre loslenguajes orientadosúnicamente a web.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 9: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Herramientas para PHP

RecursosExisten numerosos recursos PHP disponibles.

Editores Específicos• PHP designer• http://www.php-editors.com( )

Depuradores• APD• Xdebug

Extensiones y bibliotecas• http://pear.php.net( )• http://www.dotgeek.org( )• http://pecl.php.net( )

Ayuda• http://www.php.net( )

Antonio LaTorre de la Fuente, José María Peña PHP

Page 10: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

1 Introducción al lenguaje PHP

2 Instalación y Configuración del servidor

3 Conceptos básicos

4 Programación avanzada en PHP

Antonio LaTorre de la Fuente, José María Peña PHP

Page 11: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación I

• Usaremos EasyPHP 1.8• Paquete integrado con:

• Servidor Web Apache 1.3.33• PHP 4.3.10• Servidor de BBDD MySQL 4.1.9• PHPMyAdmin 2.6.1

• Descargable desde: http://www.easyphp.org( )

Antonio LaTorre de la Fuente, José María Peña PHP

Page 12: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación II

Antonio LaTorre de la Fuente, José María Peña PHP

Page 13: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación III

Antonio LaTorre de la Fuente, José María Peña PHP

Page 14: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación IV

Antonio LaTorre de la Fuente, José María Peña PHP

Page 15: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación V

Antonio LaTorre de la Fuente, José María Peña PHP

Page 16: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación VI

Antonio LaTorre de la Fuente, José María Peña PHP

Page 17: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación VII

Antonio LaTorre de la Fuente, José María Peña PHP

Page 18: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación VIII

Antonio LaTorre de la Fuente, José María Peña PHP

Page 19: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación IX

Antonio LaTorre de la Fuente, José María Peña PHP

Page 20: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación X

Antonio LaTorre de la Fuente, José María Peña PHP

Page 21: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación XI

Antonio LaTorre de la Fuente, José María Peña PHP

Page 22: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Instalación XII

Antonio LaTorre de la Fuente, José María Peña PHP

Page 23: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Configuración

• La configuración básica se puede realizar desde la interfazweb.

• Otras modificaciones se pueden hacer modificandodirectamente los ficheros correspondientes:

• Plantillas en el subdirectorio conf_files.• EasyPHP actualiza los ficheros de configuración efectivos

automáticamente.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 24: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Ejemplo PHP

Hola Mundo

<BODY><B>Esto es HTML</B><BR><?phpecho "<B>Hola Mundo</B><BR>\n";echo "Hoy es: ";echo date("d/m/Y");echo ", ¡que disfrutes del día!\n";?></BODY>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 25: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Ejemplo PHP

Instalación en el servidor• El fichero debe instalarse en la

carpeta www de la instalación.• Para ver su ejecución se debe

consultar con el navegador ladirección:

http://localhost/hola-mundo.php( )

Antonio LaTorre de la Fuente, José María Peña PHP

Page 26: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Ejemplo PHP

Hola Mundo (lo que ve el cliente)

<BODY><B>Esto es HTML</B><BR><B>Hola Mundo</B><BR>Hoy es: 19/01/2007, ¡qué disfrutes del día!</BODY>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 27: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

1 Introducción al lenguaje PHP

2 Instalación y Configuración del servidor

3 Conceptos básicosGestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

4 Programación avanzada en PHP

Antonio LaTorre de la Fuente, José María Peña PHP

Page 28: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Comentarios

Comentarios en PHP• Existen tres tipos de comentarios.• Comentar el código es muy importantes para su

legibilidad.

Comentarios

<?php// Comienzo del saludoecho "Hola, ¿qué tal?";/* Los comentarios de más de una

línea se introducen así */# Despedidadecho "Adios";?>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 29: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables I

Variables en PHP• Las variables permiten almacenar valores a lo largo del

programa PHP.• Todas las variables en PHP comienzan por un dolar ($).• La asignación de una variable (para darle un valor es):$variable=valor.

• Una vez asignado un valor la variable está declarada y sepuede usar.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 30: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables II

Variables

$hoy="Viernes";echo "Al fin es $hoy";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 31: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables III

Tipos de las variables en PHP• Los tipos simples que se pueden asignar a una variable

son:• Cadenas de caracteres (eg. "Hola mamá")• Números enteros (eg. 23, -12, 0)• Números reales (eg. 23.2, 0.0012, 5.5e-2)• booleanos (sólo true y false)

• A una variable se le pueden asignar valores de tiposdiferentes.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 32: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables IV

Variables

$enanitos="siete";$enanitos=7;echo "Hay $enanitos personas pequeñas";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 33: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables V

Escritura de las variables en PHP• En los nombres de variables no puede haber espacios.• Las variables con mayúsculas y minúsculas se consideran

diferentes entre sí.• Se recomienda usar nombres de variables que sean

significativos (que digan qué contiene esa variable).

Variables

$ovejas ="Churras";$Ovejas ="Merinas";$consejo_de_la_abuela="No hay que mezclar ";echo "Consejo: $consejo_de_la_abuela";echo "$ovejas con $Ovejas";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 34: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables VI

Cadenas de caracteres• Se pueden usar tanto comillas dobles ("· · · ") como simples

(’· · · ’) para delimitarlas:• Las comillas dobles expanden las variables.• Las comillas simple no lo hacen.

Variables

$nombre="Elena Nito del Bosque";echo "Ni nombre es $nombre";echo ’ es el valor de la variable $nombre’;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 35: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables VII

Imprimir valores• Para imprimir un salto de linea:

• Incluir "\n": Implica un salto en código generado (facilita lalectura pero no lo ve el navegador.

• Incluir "<BR>": Implica un salto en el HTML que sevisualiza (lo vería el navegador).

Saltos de línea

echo "Si sólo pongo \\n no se separa la línea...\n";echo "Pero si pongo BR<BR>Las líneas se separan";echo "Mejor los dos <BR>\n";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 36: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio

Cuenta del restaurante• Definir variables para:

• plato.• precio.• cantidad.

• Imprimir esas variables en una línea.• Redefinir las variables.• Volver a imprimir la línea.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 37: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio

Cuenta del restaurante

$plato="Pollo al Chilindrón";$cantidad=2;$precio=6.75;echo "$plato , $cantidad a $precio euros\n<BR>";$plato="Bonito en Pepitoria";$cantidad=1;$precio=7.25;echo "$plato , $cantidad a $precio euros\n<BR>";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 38: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores I

Operadores aritméticos• Existen los siguientes operadores suma(+), resta (-),

división (/), multiplicación (*) y módulo ( %).• Para realizar operaciones entre variables se pueden

realizar conversiones de tipos.• Para ello se usa el tipo numérico más general que puede

albergar el resultado.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 39: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores II

Operadores aritméticos

$a="1"; $b=2; $c=3;$d=1.2 + $a; // Valdrá 2.2 (número real)$e=$c / $b; // Valdrá 1.5 (número real)$f="3 peras" + "4 manzanas"; // Valdrá 7 (entero)// Quien dijo que no se podían sumar peras y manzanas!

Antonio LaTorre de la Fuente, José María Peña PHP

Page 40: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores III

Operadores de cadenas• Entre las cadenas existe un operador de concatenación, el

punto (.).• Se puede usar con enteros, concatenándolos a una

cadena.

Operadores de cadena

$calle="C/ Búho Bizco";$numero=23;$direccion=$calle . ", " . $numero;echo "Dirección: " . $direccion;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 41: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores IV

Operadores con asignación• Todos los operadores se pueden combinar con una

asignación.• Se declara con el operador y el símbolo igual (=) juntos.

Ejemplo $a += 2.• Son iguales a tomar el valor de la izquierda, operarlo y

volver a asignarlo.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 42: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores V

Operadores con asignación

$cnt = 0;$cnt += 1; // Equivale a $cnt = $cnt + 1$cnt *= $b/3; // Equivale a $cnt = $cnt 7 $b/3$msg = "Hola";$msg .= " mundo";// Equivale a $mgs = $msg . " mundo"

Antonio LaTorre de la Fuente, José María Peña PHP

Page 43: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores VI

Operadores de pre-/post-incremento• Los operadores de incremento (++) y de decremento (–)

se pueden aplicar sobre una variable para sumar (o restar)una unidad.

• Sin embargo estos operadores se pueden colocar delante(pre-) o detrás de la misma (post-).

• Sólo afecta a si dicha variable se va a usar en otraexpresión.

• En esos casos indica si se actualiza su valor antes odespués de usarla en la expresión.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 44: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores VII

Operadores de pre-/post-incremento

$a = 2;$b = 2 * $a++; // $a=3 y $b=4$a = 2;$b = 2 * ++$a; // $a=3 y $b=6$a = 2;$b = 2 * $a--; // $a=1 y $b=4

Antonio LaTorre de la Fuente, José María Peña PHP

Page 45: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio

Cuenta del restaurante• Definir dos contadores:

• raciones.• total.

• Inicializar estas variables.• Actualizar los valores de las mismas por cada plato.• Imprimirlas.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 46: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio

Cuenta del restaurante

$raciones=0;$total =0.0;// Aqui se declararía un plato (como antes)$raciones += $cantidad;$total += $cantidad * $precio;// Ídem para el otro platoecho "$raciones raciones\n<BR>";echo "Total $total euros\n<BR>";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 47: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Referencias I

Referencias entre variables• Se usa el símbolo (&) delante de una variable y como

parte derecha de una expresión.• Indica que la variable a la izquierda es una referencia a la

otra.• En la práctica: Son dos nombres para la misma variable

(mismo valor).• Cuando se modifica una se modifica la otra.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 48: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Referencias II

Referencias entre variables

$una = 315;$otra = &$una;// $una=315 y $otra=315;$otra += 2; // $una=317 y $otra=317;$una -= 100; // $una=217 y $otra=217;$mal = &34; // Da un error, no es una variable

Antonio LaTorre de la Fuente, José María Peña PHP

Page 49: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Tipos I

Asignación explícita de tipos• Como las variables pueden cambiar de tipo (entero, real,

cadena, . . . ) de forma dinámica.• Existen funciones para consultar su tipo:

• is_int(): Indica si es entero.• is_float(): Indica si es real.• is_string(): Indica si es una cadena.• gettype(): Devuelve una cadena con el tipo de la

variable.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 50: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Tipos II

Asignación explícita de tipos

$numero = 12;gettype($numero); // Devuelve "integer"is_int($numero); // Devuelve trueis_float($numero);// Devuelve false$numero += 1.1;is_int($numero); // Devuelve flase

Antonio LaTorre de la Fuente, José María Peña PHP

Page 51: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Tipos III

Asignación explícita de tipos• Aunque el tipo de las variables se modifica de forma

dinámica.• Existe un mecanismo (llamado casting) para forzar esta

conversión.• Si delante de una expresión se indica un descriptor de

tipo:• (string), (boolean), (int), (float)

Antonio LaTorre de la Fuente, José María Peña PHP

Page 52: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Tipos IV

Asignación explícita de tipos

$numero = 18;$cadena = (string) $numero; // Valdría "18"$valor = (int) ($numero/10);// Valdría 1echo $valor;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 53: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Variables

Definición de variables• Una variable se define la primera vez que se declara.• Sin embargo, a lo largo de la ejecución se puede

manipular su definición.• Existen dos funciones para hacerlo:

• unset(): Anula la definición de una variable (la destruye).• isset(): Devuelve true si la variable está definida.

Definición de variables

$mensaje="El sentido de la vida...";isset($mensaje); // Devuelve trueunset($mensaje); // Anula la definiciónisset($mensaje); // Devuelve false

Antonio LaTorre de la Fuente, José María Peña PHP

Page 54: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Constantes

Definición de constantes• Los valores que no van a cambiar a lo largo de la ejecución

del programa se pueden almacenar en constantes.• El uso de una constante es idéntico al de una variable (sin

el $).• Se declara la cadena que identifica a la constante.

Definición de constantes

define ("PI", 3.141592);$radio=1.75;$area=PI * $radio * $radio;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 55: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Tipos de estructuras de Control I

Tipos de estructuras de control• Se encargan del control del flujo de ejecución del

programa.• La gran mayoría están heredadas de C, C++ o Java.• El esquema general de las estructuras de control consiste

en la evaluación de una condición (booleana) ydependiendo de ello seleccionar entre diferentesalternativas.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 56: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Tipos de estructuras de Control II

Antonio LaTorre de la Fuente, José María Peña PHP

Page 57: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores de condición I

Operadores de comparación• Las condiciones viene indicadas por expresiones lógicas,

variables booleanas o expresiones:• Comparación: <, >, <=, >=.• Aplicables tanto a valores numéricos.• También a cadenas de caracteres (comparación alfabética).

Antonio LaTorre de la Fuente, José María Peña PHP

Page 58: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores de condición II

Operadores de comparación

$a = 3;$a < 5; // Devuelve true$a >= 1.12; // Devuelve true$b = "Aaron";$c = "Abad";$b > $c; // Devuelve false

Antonio LaTorre de la Fuente, José María Peña PHP

Page 59: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores de condición III

Operadores de equivalencia• Existen dos tipos de comparadores de equivalencia:

• Igualdad/Diferencia: ==, ! =. Hace conversión de tipos.• Equivalencia/Inequivalencia: ===, ! ==. No hace

conversión de tipos.

Operadores de equivalencia

$a = 5;$a == "5"; // Devuelve true$a != 5.0; // Devuelve false$a === "5"; // Devuelve false$a !== 5; // Devuelve false

Antonio LaTorre de la Fuente, José María Peña PHP

Page 60: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Operadores lógicos

Operadores lógicos• Dos o más expresiones lógicas se pueden combinar por

medio de:• "Y"lógico: &&, and.• .O"lógico: ||, or.• "XOR"lógico: xor.• Negación lógica: !.

Operadores lógicos

4 < 3.0 && "adios" < "hola"; // Devuelve false34 >= "8" || 3 === "tres"; // Devuelve true

Antonio LaTorre de la Fuente, José María Peña PHP

Page 61: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control I

Antonio LaTorre de la Fuente, José María Peña PHP

Page 62: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control II

if-then-else

if($a%2 == 0)echo "Número par";

else{

echo "Número impar";$a++;echo " $a es par";

}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 63: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control III

elseif

• Las estructuras de control if se pueden enlazar.• Permiten evaluar condiciones de forma excluyente.

elseif

if($a<0)echo "negativo";

elseif($a<10)echo "entre 0 y 10";

elseif($a<100)echo "entre 10 y 100";

elseif($a<1000)echo "entre 100 y 1000";

elseecho "un montón";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 64: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control IV

switch

• Es similar al caso anterior pero sólo vale para valores deuna misma variable.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 65: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control V

switch

switch($pais){

case "España":echo "español";break;

case "Italia":echo "italiano";break;

default:echo "otra nacionalidad";

}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 66: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control VI

Antonio LaTorre de la Fuente, José María Peña PHP

Page 67: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control VII

while

$header=1;while($header<4){

echo "<H$header>Cabecera $header</H$header><BR>\n";$header++;

}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 68: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control VIII

Antonio LaTorre de la Fuente, José María Peña PHP

Page 69: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control IX

do-while

$indice=1;do{

echo "Indice $indice<BR>\n";$indice++;

}while($indice<4);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 70: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras de Control X

for(init;cond;inc)

for($header=1;$header<4;$header++)echo "<H$header>Cabecera $header</H$header><BR>\n";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 71: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras Compuestas I

Estructuras de datos compuestas• Lo visto hasta el momento son tipos de datos simples.• Las estructuras de datos compuestas, son tipos datos que

contienen varios elementos de diferentes tipos (simples ocompuestos) estructurados.

• PHP dispone de un tipo de dato compuesto muy potente elarray .

Antonio LaTorre de la Fuente, José María Peña PHP

Page 72: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Estructuras Compuestas II

Array• Esta estructura es la análoga a 3 o 4 tipos compuestos en

otros lenguajes.• Hay varias formas de crear un array, las más sencillas son:

• array(): Crea un array vacío.• array(elementos...): Crea un array y lo inicializa con

tantos elementos como se le pasen.

• Los arrays también se pueden inicializar elemento aelemento.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 73: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays I

Inicialización de arrays

$a = array(); // Array vacío$b = array("Cero", "Uno", "Dos");$b[3]="Tres";$c[0]=true;$c[1]=false;$c[2]=false;$c[3]=true;// Imprime "Cero Uno Dos Tres"echo $b[0]." ".$b[1]." ".$b[2]." ".$b[3];echo $b; // Ojo: imprime "Array"

Antonio LaTorre de la Fuente, José María Peña PHP

Page 74: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays II

Tipos de los datos de un array• Los valores de los elementos de un array pueden ser de

distintos tipos.• Un array puede ser elemento de otro array (una matriz).

Tipos de los datos de un array

$val[0]="doce";$val[1]=34;$val[2]=0.00211;$val[3]=true;$val[4]=array(10,20,30);echo "{$val[4][1]}";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 75: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays III

Indices de un array• Un elemento de un array se puede eliminar.• Esto implica que los arrays no son necesariamente

consecutivos.

Indices de un array

$foo=array(11,22,33,44);unset($foo[2]); // 33 desaparece// Pero $foo[3] sigue siendo 44$baa[0]="Adios";$baa[12]="mundo";$baa[30]="cruel";$baa[991]="!";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 76: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays IV

Indices de un array• Para insertar un elemento al final de un array se puede

usar "[]".• Esto asocia al elemento el siguiente valor de la clave

numérica más alta del array.

Indices de un array

$baa[991]="!";$baa[]="."; // Equivale a $baa[992];

Antonio LaTorre de la Fuente, José María Peña PHP

Page 77: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays V

Arrays asociativos• Las claves (indices) de los arrays también pueden ser

cadenas de caracteres.• Un array puede tener variables numéricas y cadenas a la

vez.

Arrays asociativos

$persona["Nombre"] ="Pepe";$persona["Apellido"]="Potamo";$persona["Edad"] =70;$persona[1] =true;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 78: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays VI

Inicializando arrays asociativos• Un array asociativo se puede inicializar inidcando claves y

valores a la vez.

Inicializando arrays asociativos

$v=array("a"=>1, "b"=>2);$data=array("Edad" => 25,

"Premio" => true,"Importe"=> 239.50);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 79: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays VII

Matrices• Una matriz no es más que un array cuyos elementos son

arrays.• Como no hace falta declararlas se pueden inicializar sobre

la marcha.

Matrices

$matriz=array();$matriz[0]=array("A","B");$matriz[1]=array("C","D");$cnt=0;for($i=0;$i<5;$i++)

for($j=0;$j<5;$j++)$M[$i][$j]=$cnt++;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 80: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays VIII

Imprimiendo un array• Al hacer un echo sobre una variable array no se obtiene

su contenido.• La función print_r() permite imprimir un array.• El resultado está formateado con "\n"no con < BR >.

Imprimiendo un array

$m=array("A"=>11, "B"=>33);echo $m; // Sale "Array"echo "<pre>";print_r($m);echo "</pre>";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 81: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays IX

Iteración sobre arrays• count() muestra el número de elementos del array.• Recorrer con un for desde 0 hasta ese valor puede

causar problemas.• Hay que recordar que los elementos pueden no ser

consecutivos.

Iteración sobre arrays

$num[0]=100;$num[3]=200;for($i=0;$i<count($num);$i++) // 0 y 1

echo $num[$i]; // No saldrá $num[3]

Antonio LaTorre de la Fuente, José María Peña PHP

Page 82: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays X

Iteración sobre arrays• Existe un bucle especial para iterar sobre los arrays.• foreach recorre uno a uno todos los elementos del array.• Este bucle es independiente de las claves.

Iteración sobre arrays

$num[0]=100;$num[3]=200;foreach($num as $n) // $n es el elemento

echo $n; // 100, 200

Antonio LaTorre de la Fuente, José María Peña PHP

Page 83: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XI

Iteración sobre arrays• Existe otra forma de iterar sobre arrays.• Para ello se usan las funciones:

• reset(): Se pone al comienzo del array.• end(): Se pone al final del array.• current(): Te da el elemento actual.• next(): Avanza y te da el elemento siguiente.• prev(): Retrocede y te da el elemento anterior.

• Si no hay elemento estas funciones devuelven false.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 84: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XII

Iteración sobre arrays• Existe otra función, each(), análoga a next().• Esta función devuelve un par (clave, elemento).• Su valor hay que recogerlo con un list.

Iteración sobre arrays

$persona["Nombre"] ="Pepe";$persona["Apellido"]="Potamo";$persona["Edad"] =70;reset($persona); // Comenzamoswhile(list($clave,$val)=each($persona))

echo "$clave : $val<BR>\n";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 85: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XIII

Funciones sobre arrays• Un array puede valer para implementar pilas o colas.• Las funciones usadas serían:

• array_push(): Añade al final (como []).• array_pop(): Elimina el último elemento y da su valor.• array_shift(): Elimina el primer elemento

(reordenando el resto).• array_unshift(): Añade un elemento al principio y

desplaza (reordenando) el resto.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 86: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XIV

Pilas y colas

$jobs=array("cargar","operar","guardar");array_unshift($jobs,"preparar");array_push($jobs,"probar","apagar");while($j=array_shift($jobs))

echo "Ejecutando: $j<BR>\n";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 87: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XV

Expansión de arrays• Existe dos funciones para convertir cadenas de caracteres

en arrays (y viceversa):• explode(): Parte una cadena en subcadenas y las mete

en un array.• implode(): Concatena todos los elementos de un array

en una misma cadena.

• Estas funciones toman como argumento un separador.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 88: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XVI

Expansión arrays

$texto="En un lugar de la Mancha";// Lista de palabras$palabras=explode(" ", $texto);// Nuevo texto$texto2=implode("_", $palabras);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 89: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XVII

Ordenación de arrays• Dos arrays no son equivalentes (===), pero sí iguales (==),

si el orden de sus elementos no es el mismo.• Para ordenar arrays se usan las siguientes funciones:

• sort(): Mantiene el orden de las claves y ordena loselementos.

• asort(): Ordena los elementos pero cada cual conservasu clave.

• ksort(): Ordena por clave, pero cada cual mantiene suelemento asociado.

• La ordenación por defecto es ascendente.• Existen las funciones análogas para ordenación inversa:rsort(), arsort() y krsort().

Antonio LaTorre de la Fuente, José María Peña PHP

Page 90: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Arrays XVIII

Ordenación de arrays

$alumnos=array(210 => "Dolores Fuertes",115 => "Walter O’Filia",523 => "Armando Guerra",410 => "Julian Dopetas");

// Por claveksort($alumnos);// Por nombreasort($alumnos);// Rompe asociaciónsort($alumnos);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 91: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio

Las quinielas• Definir una estructura de datos que almacene un partido:

• Dos equipos.• El marcador

• Meter en un array varios elementos de esta estructura.• Definir otra estructura que muestre las apuestas de una

quiniela:• El partido.• Si se ha apostado 1, X ó 2 (o múltiples).

• Programar una función que calcule el número de aciertosde una quiniela dados unos resultados.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 92: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones en PHP I

Organización del código• Existen dos alternativas a la hora de organizar el código

para su posible reutilización:• Definiendo funciones que se usen dentro del mismo fichero

PHP.• Definiendo esas mismas funciones en otro fichero aparte

común a varios ficheros PHP.• El último caso se gestiona mediante las llamadas:

• include(): Si el fichero no existe da un aviso.• require(): Si el fichero no existe da un error.

• La inclusión de ficheros sería análoga a copiar dichofichero donde aparezca la llamada de inclusión.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 93: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones en PHP II

Funciones• Para declarar una función se la asocia un nombre que es

el que se usará para invocarla.• Las funciones se declaran por medio de la construcciónfunction.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 94: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones I

Definición de una función

// Definimos una funciónfunction saludo(){

echo "Hola mundo!";}// Incluimos otro fichero PHPinclude("func_aux.php");

// Invocamos la funciónsaludo();

Antonio LaTorre de la Fuente, José María Peña PHP

Page 95: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones II

Argumentos de una función• Los argumentos de una función son variables incluidas en

su declaración.• Dichas variables se usan en el cuerpo de la función.• Al invocarla se instancian dichas variables.

Argumentos de una función

function saludando($quien){

echo "Hola $quien";}saludando("Manolo");saludando(23);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 96: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones III

Valor de retorno• Permite usar la función como parte de una expresión.• Se devuelve por medio de return.• Tras esa sentencia la función finaliza.

Valor de retorno

function por_dos($num){

return 2*$num;}por_dos(33);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 97: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones IV

Argumentos predefinidos• Son argumentos que tienen asociado un valor por defecto.• Si al invocarse no se indica dicho argumento se toma para

él el valor por defecto.

Argumentos predefinidos

function despedida($quien="a todos"){

echo "Adios $quien";}despedida("Manolo");despedida();

Antonio LaTorre de la Fuente, José María Peña PHP

Page 98: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones V

Argumentos variables• Son funciones con un número indeterminado de

argumentos.• func_num_args(): Indica el número de argumentos.• func_get_args(): Mete los argumentos en un array.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 99: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones VI

Argumentos variables

function suma(){

if(func_num_args()<1)return "Al menos un argumento";

$args=func_get_args();$cnt=0;foreach($args as $n)

$cnt+=$n;return $cnt;

}suma(10,21,32,43);suma(1,0.23,11);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 100: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones VII

Referencias• Son argumentos que pueden modificarse dentro de la

función.• El argumento no es una copia del valor sino una referencia

a la misma variable.

Referencias

function incrementa(& $num){

$num++;}$x=2;incrementa($x);echo $x;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 101: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones VIII

Ámbito de las variables• Las variables usadas dentro de una función son sólo

visibles dentro de la misma.• Eso indica que mantienen el valor y la declaración

mientras están dentro de la función.• Al terminar la función la variable pierde su definición.• Esto también es aplicable a los argumentos.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 102: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones IX

Variables globales• Hay dos formas de declarar variables globales que sean

visibles fuera de la función y que no pierdan su definiciónal terminar la función:

• Declarar la variable con global.• Accediendo al array $GLOBALS.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 103: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Funciones X

Variables globales

function incrementa_a(){

global $a;$a++;

}

function decrementa_a(){

$GLOBALS["a"]++;}

$a=10;incrementa_a();decrementa_a();

Antonio LaTorre de la Fuente, José María Peña PHP

Page 104: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio I

Juego del ahorcado• El programa dispone de un fichero con varias palabas (de

5 a 8 letras).• Elige una de las palabras al azar.• Muestra:

• Un campo de texto para introducir las letras.• Las letras que se han acertado y las posiciones que están

ocultas• Las letras dichas y no acertadas.• Un monigote que muestra el estado de los fallos del

usuario (imágenes).

Antonio LaTorre de la Fuente, José María Peña PHP

Page 105: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones Predefinidas y de Usuario

Ejercicio II

Detector de palíndromos• El programa debe ser capaz de detectar si una frase

introducida es o no un palíndromo.• Debe ignorar espacios, acentos y signos de puntuación.• Muestra:

• Un campo de texto para introducir la frase letras.• Un botón para validar la frase.

• Algunos palíndromos:• Anita, la gorda lagartona, no traga la droga latina.• Dábale arroz a la zorra el abad.• ¿Acaso hubo búhos acá?

Antonio LaTorre de la Fuente, José María Peña PHP

Page 106: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

1 Introducción al lenguaje PHP

2 Instalación y Configuración del servidor

3 Conceptos básicos

4 Programación avanzada en PHPFormularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Antonio LaTorre de la Fuente, José María Peña PHP

Page 107: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Procesamiento de Formularios I

• Dos mecanismos para enviar información medianteformularios

• GET• POST

• Las variables son “parseadas“ automáticamente por elservidor

• La información puede ser accedida de varias maneras:• Por medio de variables superglobales: $_GET, $_POST,

$_REQUEST, etc.• Directamente como variables PHP con el mismo nombre

que los campos formulario

Antonio LaTorre de la Fuente, José María Peña PHP

Page 108: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Procesamiento de Formularios II

Método GET

$patron = $_GET[’patron’]; /* Forma recomendada */$patron2 = $patron; /* Sólo si

register_globals es true */$patron3 = $HTTP_GET_VARS[’patron’]; /* En desuso */$patron4 = $_REQUEST[’patron’]; /* Otra opción */

Método POST

$texto = $_POST[’texto’]; /* Forma recomendada */$texto2 = $texto; /* Sólo si

register_globals es true */$texto3 = $HTTP_POST_VARS[’texto’]; /* En desuso */$texto4 = $_REQUEST[’texto’]; /* Otra opción */

Antonio LaTorre de la Fuente, José María Peña PHP

Page 109: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Envío de archivos al servidor I

• El formulario debe tener un tipo de codificación”multipart/form-data“

• La información del archivo se guarda en la variablesuperglobal $_FILES

• $_FILES es un array asociativo que contiene:• ’name’: nombre original del archivo• ’size’: tamaño en bytes• ’type’: tipo MIME del archivo, si el navegador lo proporciona• ’tmp_name’: nombre temporal de la copia del archivo en el

servidor• ’error’: código del error sucedido, si procede

Antonio LaTorre de la Fuente, José María Peña PHP

Page 110: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Envío de archivos al servidor II

Ejemplo de Formulario

<FORM ENCTYPE="multipart/form-data" METHOD="POST"><H2>Escoja el archivo que desea enviar:</H2><INPUT NAME="fich" TYPE="file"><BR><INPUT TYPE="submit" VALUE="Enviar"></FORM>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 111: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Envío de archivos al servidor III

Procesamiento de los datos del archivo

echo "Los datos relativos al archivo suministradoson:<BR>";

echo "Nombre original: ".$fich[’name’]."<BR>";echo "Tipo de archivo: ".$fich[’type’]."<BR>";echo "Tamaño del fich: ".$fich[’size’]."<BR>";echo "Nombre temporal: ".$fich[’tmp_name’]."<BR>";

if (!empty($fich[’error’]))echo "Error ocurrido: ".$fich[’error’]."<BR>";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 112: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funcionamiento básico y especificación I

• (Breve) Información de estado almacenada por elnavegador del cliente

• Estado válido únicamente para un conjunto de URLs(dominio)

• Esta información es enviada por el navegador enposteriores visitas al mismo servidor

• Algunos ejemplos de aplicación:• Carritos de la compra en tiendas virtuales• Identificación de usuarios• Almacenamiento de preferencias de usuario para la

visualización de una página web (por ejemplo Google)

Antonio LaTorre de la Fuente, José María Peña PHP

Page 113: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funcionamiento básico y especificación II

• Deben ser enviadas antes de que el script produzcaninguna otra salida

• El formato de una cookie es:• ’name’: nombre de la cookie• ’value’: valor de la cookie• ’expire’: hora de expiración de la cookie (número de

segundos desde el 1 de enero de 1970• ’path’: ruta en el servidor en el que estará disponible la

cookie• ’domain’: dominio en el que la cookie estará disponible• ’secure’: decide si la cookie ha de ser enviada mediante

conexión segura

Antonio LaTorre de la Fuente, José María Peña PHP

Page 114: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Uso de cookies en PHP

• Sintaxis de la función setcookie

setcookie (name,value,expire,path,domain,secure);

Ejemplo de manejo de cookie

<?$contador = $_COOKIE[’contador’];$contador++;setcookie ("contador", $contador, time() + 60);

?>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 115: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ventajas e Incovenientes

• Ventajas:• Mecanismo fácil de implementar• Facilitan la navegación del usuario

• Inconvenientes• Puede convertirse en un mecanismo muy pesado

(sobrecarga de información enviada)• No siempre están habilitadas (el navegador del usuario

puede bloquearlas)• La información es fácilmente alterable

Antonio LaTorre de la Fuente, José María Peña PHP

Page 116: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Introducción

• Alternativa a las Cookies para mantener información deestado

DiferenciaLa información es almacenada en el servidor

• Necesita de un identificador de sesión (MD5 de un númeroaleatorio)

• Enviar el identificador en una Cookie• Enviar el identificador en cada query (a continuación de la

URL)

Antonio LaTorre de la Fuente, José María Peña PHP

Page 117: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Sesiones en PHP

• Existen tres funciones básicas para el manejo de sesionesen PHP:

session_start ()session_register (’variable’)session_destroy ()

• Forma de acceder a las variables:

$_SESSION [’variable’]$variable /* Si register_globals está a ON */

Antonio LaTorre de la Fuente, José María Peña PHP

Page 118: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo I

Abrimos la sesión y registramos las variables

<?session_start();session_register(’intentos’);session_register(’secreto’);?>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 119: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo II

Presentamos el Formulario

<FORM METHOD="POST">Introduzca un número entero entre 0 y 9999:<BR>Número: <INPUT NAME="numero" TYPE="text"><INPUT NAME="envio" TYPE="submit" VALUE="Probar"><INPUT NAME="reinicio" TYPE="submit" VALUE="Reset"></FORM>

Antonio LaTorre de la Fuente, José María Peña PHP

Page 120: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo III

Procesamos la información

if (empty ($secreto) || $_REQUEST[’envio’] == "Reiniciar") {echo "Intente adivinar el número secreto.<BR><BR>";$secreto = rand (0,9999);$intentos = 0;

} else if (empty ($numero)) {echo "Intente adivinar el número secreto.<BR><BR>";

} else if ($secreto < $numero) {$intentos++;echo "El número secreto es menor que " . $numero . "<BR>";echo "¡Lleva usted " . $intentos . " intentos!<BR>";

} else if ($secreto > $numero) {

Antonio LaTorre de la Fuente, José María Peña PHP

Page 121: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo IV

Destruimos la sesión

} else {echo "<BR>";echo "ENHORABUENA, el número secreto era " . $numero .

"<BR>";echo "<BR>";session_destroy ();exit ();

}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 122: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Otras consideraciones

• Si PHP fue compilado con la opción -enable-trans-id elidentificador de sesión se añade automáticamente a cadaenlace

• Para poder usar las variables de sesión hay que llamar a lafunción session_start() al comienzo de cada script

• Otras funciones de interés:

session_isregistered ()session_unregister (’variable’)session_unset ()session_id ()

Antonio LaTorre de la Fuente, José María Peña PHP

Page 123: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejercicio

Calendario de este mes• Obtener:

• El día del mes actual.• El día de la semana actual.• El nombre del mes.

• Tomando el día del mes y la semana calcular en qué díacayó el día 1 del mes.

• Imprimir una tabla con el calendario.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 124: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros I

Uso de ficheros• Una de las alternativas para mantener información

persistente de las operaciones del usuario es la utilizaciónde ficheros.

• En la gran mayoría de los sistemas hay que considerarademás los aspectos de propiedad y seguridad de losficheros.

• Hay que tener en cuenta que el proceso que ejecuta elservidor Web debe poder realizar las operacionessolicitadas sobre los ficheros.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 125: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros II

Gestión de ficheros• Hay dos formas de manipular ficheros:

• Por medio de las funciones heredadas de C/UNIX.• El interfaz de funciones propias de PHP.

• Las primeras, no obstantes no se recomiendan, salvo paraoperaciones muy particulares.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 126: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros III

Manejo básico• Existen dos funciones que permiten gestionar ficheros por

medio de cadenas:• file_get_conents(): Esta función carga en una

cadena el contenido del fichero.• file_put_conents(): Esta función vuelca el contenido

de una cadena en un fichero.

Manejo básico

$cadena="La vida es maravillosa";file_put_contents("fichero.txt",$cadena);$leido=file_get_contents("fichero.txt");echo "He leido: $leido";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 127: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros IV

Manejo con arrays• La función file() permite cargar un fichero en un array.• El array comenzará en la clave 0.• Cada elemento será una línea del fichero.• El carácter de final de línea \n también se guardará al final

de cada elemento.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 128: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros V

Manejo con arrays

$poema="A un panal de rica miel\n mil moscas acudieron\n Yo.";file_put_contents("poema.txt",$poema);$lineas=file("fichero.txt");echo $lineas[0]; // A un panal de rica miel\necho $lineas[1]; // mil moscas acudieron\necho $lineas[2]; // Yo.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 129: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros VI

Recorrido de directorios• Para manipular directorios se usan las siguientes

funciones:• opendir(): Devuelve un manejador para empezar a

recorrer un directorio.• readir(): Se le da el manejador de un directorio y te

devuelve el siguiente nombre de fichero en dicho directorio.• closedir(): Cierra un directorio abierto.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 130: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros VII

Recorrido de directorios

$d=opendir("datos/");while($f=readdir($d))

echo "Entrada: $f<BR>\n";closedir($d);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 131: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros VIII

Otras funciones útiles• Existen otra serie de funciones asociadas a ficheros:

• file_exists(): Indica si un nombre de fichero que se lepasa existe.

• fopen(): Abre un fichero, devolviendo un manejador. Elvalor devuelto lo usan otras funciones.

• fpassthru(): Se le pasa un manejador de fichero yvuelca su contenido por la salida.

• is_dir(), is_file(): Consulta si un nombre de ficherose corresponde con un fichero, propiamente dicho o con undirectorio.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 132: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros IX

Otras funciones útiles

$fichero="mis_datos.txt";if(is_file($fichero)){

$f=fopen($fichero);fpassthru($f); // Imprime el fichero

}else if (is_dir($fichero))ç

echo "Era un directorio mendrugo";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 133: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ficheros X

Ficheros remotos• El nombre de un fichero se puede sustituir por una URL.• Hay diferentes protocolos de acceso a ficheros remotos, lo

más habitual es usar http://.

Ficheros remotos

// Redirigimos a una página de error$err_page=fopen("http://www.datsi.fi.upm.es/error.html");fpassthru($err_page); // Imprime el fichero

Antonio LaTorre de la Fuente, José María Peña PHP

Page 134: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejercicio

Juego del ahorcado• El programa dispone de un fichero con varias palabas (de

5 a 8 letras).• Elige una de las palabras al azar.• Muestra:

• Un campo de texto para introducir las letras.• Las letras que se han acertado y las posiciones que están

ocultas• Las letras dichas y no acertadas.• Un monigote que muestra el estado de los fallos del

usuario (imágenes).

Antonio LaTorre de la Fuente, José María Peña PHP

Page 135: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Conceptos de Bases de Datos

Base de datos• Conjunto de datos interrelacionados• Almacenados sistemáticamente

Gestor de bases de datos• Programa informático• Almacena los datos de forma eficiente• Recupera y accede a los datos rápidamente

SQL – Structured Query Language• Lenguaje estándar para consultar una base de datos• Es un estándar ANSI/ISO

Antonio LaTorre de la Fuente, José María Peña PHP

Page 136: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de tabla de bases de datos (Empresas)

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 137: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

SQL

Consultando información (I)SELECT columnas FROM tabla

• columnas: Lista de columnas a presentar (separadas porcomas). Puede ser un asterisco (*) para indicar todas lascolumnas.

• tabla: Nombre de la tabla.

SELECT

SELECT Nombre, Telefono FROM Empresas;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 138: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de SELECT

SELECT Nombre, Telefono FROM Empresas;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 139: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de SELECT

SELECT Nombre, Telefono FROM Empresas;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 140: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

SQL

Consultando información (II)SELECT columnas FROM tabla WHERE condición

• condición: Una expresión (comparación) que afecta aalguna de las columnas de la tabla.

SELECT

SELECT * FROM Empresas WHERE Saldo<0;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 141: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de SELECT

SELECT * FROM Empresas WHERE Saldo<0;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 142: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de SELECT

SELECT * FROM Empresas WHERE Saldo<0;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 143: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

SQL

Operador LIKEComprueba si una cadena de caracteres está contenida enotra.Se usa el símbolo% para sustituir a cualquier cosa (comodín).

• Ma%: Comienza por ’Ma’.• %no: Termina por ’no’.• Ma%no: Comienza por ’Ma’ y termina por ’no’.• %ria%: Contiene la cadena ’ria’ (en cualquier sitio).

SELECT

texto LIKE ’En un % de la Mancha de % acordar%’

Antonio LaTorre de la Fuente, José María Peña PHP

Page 144: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de SELECT

SELECT * FROM Empresas WHERE Nombre LIKE ’%os%’;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 145: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de SELECT

SELECT * FROM Empresas WHERE Nombre LIKE ’%os%’;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.55

Antonio LaTorre de la Fuente, José María Peña PHP

Page 146: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

SQL

Inserción de InformaciónINSERT INTO tabla VALUES (valores)

• tabla: Esta es la tabla donde se van a insertar los valores.• valores: Valores a insertar en cada una de las columnas

de la tabla

INSERT

INSERT INTO Empresas VALUES(8795, ’Q&T Asociados’, ’’, 917884520, 4590.40);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 147: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de INSERT

INSERT INTO Empresas VALUES(8795, ’Q&T Asociados’, ’’, 917884520, 4590.40);

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.558795 Q&T Asociados 91 7884520 4590.40

Antonio LaTorre de la Fuente, José María Peña PHP

Page 148: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de INSERT

INSERT INTO Empresas VALUES(8795, ’Q&T Asociados’, ’’, 917884520, 4590.40);

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.558795 Q&T Asociados 91 7884520 4590.40

Antonio LaTorre de la Fuente, José María Peña PHP

Page 149: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

SQL

Modificación de InformaciónUPDATE tabla SET (valores) WHERE condición

• tabla: Esta es la tabla donde se van a modificar los valores.• valores: Columnas a modificar y valores que van a tomar

(separados por comas).• condición: Condición inicial que debe cumplir las filas a

modificar.

UPDATE

UPDATE Empresas SET Tipo=’Marketing’ WHERE Codigo=8795;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 150: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de UPDATE

UPDATE Empresas SET Tipo=’Marketing’ WHERE Codigo=8795;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.558795 Q&T Asociados Marketing 91 7884520 4590.40

Antonio LaTorre de la Fuente, José María Peña PHP

Page 151: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de UPDATE

UPDATE Empresas SET Tipo=’Marketing’ WHERE Codigo=8795;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.558795 Q&T Asociados Marketing 91 7884520 4590.40

Antonio LaTorre de la Fuente, José María Peña PHP

Page 152: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

SQL

Eliminación de InformaciónDELETE FROM tabla WHERE condición

• tabla: Esta es la tabla de donde se van a eliminar losvalores.

• condición: Condición que debe cumplir las filas a eliminar.

DELETE

DELETE FROM Empresas WHERE Codigo<8790;

Antonio LaTorre de la Fuente, José María Peña PHP

Page 153: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de DELETE

DELETE FROM Empresas WHERE Codigo<8790;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.558795 Q&T Asociados Marketing 91 7884520 4590.40

Antonio LaTorre de la Fuente, José María Peña PHP

Page 154: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejemplo de DELETE

DELETE FROM Empresas WHERE Codigo<8790;

Código Nombre Tipo Teléfono Saldo8788 Suministros Ruíz Electricidad 91 3987872 1288.008789 Transportes TSS Transporte 91 5993725 433.008790 Segurinsa S.A. Seguridad 923 847002 -120.508791 Desarrollos Tyna Diseño 91 4513172 3901.008790 Elektronics Electricidad 91 3342244 -233.508791 Obras Marcos Albañilería 91 7111132 2921.008792 Muebles Prados Mobiliario 91 3120072 90.558793 Internal Mobiliario 93 4287910 340.008794 Trabajos Cruz Fontanería 672 112991 790.558795 Q&T Asociados Marketing 91 7884520 4590.40

Antonio LaTorre de la Fuente, José María Peña PHP

Page 155: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejercicio

Consultas a una BBDD• Realizar las siguientes consultas a la BBDD de ejemplo:

• Obtener el nombre y el teléfono de las empresas que sededican a la electricidad.

• Obtener el nombre de las empresas madrileñas.• Modificar el saldo de las empresas con identificador en el

intervalo [8790, 8793] e incrementarlo en 1000 euros.• Borrar de la BBDD las empresas con saldo negativo.

Antonio LaTorre de la Fuente, José María Peña PHP

Page 156: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Acceso a BBDD desde PHP

• Aplicaciones cada vez más grandes que manejan grancantidad de datos

• Dos alternativas para acceder a una BBDD• ODBC (Open Database Connectivity )

• Interfaz estándar para todos los gestores de BBDD• Más lento que el acceso con funciones nativas

• Funciones nativas de un gestor de BBDD específico

• Más eficiente que ODBC• Menos transportable a otros gestores de BBDD

• En PHP existen 33 funciones para trabajar con MySQL• Sólo la mitad se usan habitualmente

Antonio LaTorre de la Fuente, José María Peña PHP

Page 157: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común I

Conexión con una BBDDint mysql_connect (string host, string username, string

password)

• Devuelve el identificador de la conexión

Ejemplo de llamada

$conn = mysql_connect (‘‘localhost’’,‘‘pepe’’, ‘‘rufus73’’);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 158: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común II

Conexión permanente con una BBDDint mysql_pconnect (string host, string username, string

password)

• La conexión permanece abierta tras la finalización delscript

• Puede incrementar notablemente la velocidad del programa

Cambios necesarios en el fichero php.ini

mysql.allow_persistent = Onmysql.max_persistent = -1

Antonio LaTorre de la Fuente, José María Peña PHP

Page 159: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común III

Selección de una BBDDint mysql_select_db (string database_name [, int

link_identifier])

• El identificador sólo se necesita si hay varias conexionesabiertas

Ejemplo de llamada

$db = mysql_select_db (‘‘database_name’’);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 160: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común IV

Consultas a la BBDDint mysql_query (string query [, int link_identifier])

• Devuelve un cursor que apunta a las filas que componenel resultado

• Más adelante veremos las funciones que realmenteobtienen los resultados

Ejemplo de llamada

$result = mysql_query (‘‘select * from db’’);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 161: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común V

Recuperación de los datos desde la BBDDarray mysql_fetch_array (int result [, int result_type])

• Devuelve un vector asociativo con los datos• Cada resultado aparece dos veces:

• Indexado con el nombre de la columna• Indexado con un número

• Se puede seleccionar el tipo con MYSQL_NUM yMYSQL_ASSOC

• Otro modo de recuperar los resultados

array mysql_fetch_row (int result)

Antonio LaTorre de la Fuente, José María Peña PHP

Page 162: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común VI

Ejemplo de uso

$query = "select * from table_name";$result = mysql_query ($query);

echo "<table>";while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo "<tr>";while (list ($key, $value) = each ($row)) {

echo "<td>" . $value . "</td>";}echo"</tr>";

}echo "</table>";

Antonio LaTorre de la Fuente, José María Peña PHP

Page 163: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común VII

Recuento de filas seleccionadasint mysql_num_rows (int result)

• Devuelve el número de filas seleccionadas por la query

Ejemplo de uso

$query = "select * from table_name";$result = mysql_query ($query);if (mysql_num_rows($result) == 0) {

echo "Sorry, no results found.";} else {

//print results}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 164: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común VIII

Recuento de filas insertadas/actualizadas/borradasint mysql_num_rows (int result)

• Devuelve el número de filas afectadas por una y deinserción, borrado o actualización

Ejemplo de uso

$query = "delete from table_name where unique_id = 1";$result = mysql_query($query);if (mysql_affected_rows() == 0) {

echo "no rows removed from the table.";} else {

echo "You just removed $deleted_rows row/rows.";}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 165: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común IX

Gestión de erroresint mysql_errno ([int link_identifier])

• Devuelve el código de error proporcionado por MySQL• Útil para reescribir los mensajes de error

string mysql_errno ([int link_identifier])

• Devuelve el mensaje de error correspondiente a la últimaoperación realizada

Antonio LaTorre de la Fuente, José María Peña PHP

Page 166: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común X

Acceso directo a resultadosint mysql_result (int result, int row, [mixed field])

• Permite acceder a un valor concreto del conjunto deresultados

• Necesitamos conocer la fila y la columna del resultado quenos interesa

Antonio LaTorre de la Fuente, José María Peña PHP

Page 167: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso más común XI

Ejemplo de uso

mysql_connect ("localhost", "username", "password");mysql_select_db ("test");

$result = mysql_query ("select count(*) from users");

echo mysql_result ($result, 0, 0);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 168: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común I

Recuperación de datos como objetosObject mysql_fetch_object (int result, [, int

result_type])

• Devuelve el primer registro no consumido resultado de laconsulta

• Similar a mysql_fetch_array ()• Los campos se acceden como propiedades de un objeto

(operador ->)

Antonio LaTorre de la Fuente, José María Peña PHP

Page 169: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común II

Liberación de memoriaint mysql_free_result (int result)

• Libera la memoria ocupada por el resultado de la últimaconsulta

• No suele ser necesario su uso:

• PHP libera la memoria automáticamente al finalizar elscript...

• ...aunque puede ser útil si el script hace más cosasdespués de la consulta

Antonio LaTorre de la Fuente, José María Peña PHP

Page 170: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común III

Cierre de la conexión a la BBDDint mysql_close ([int link_identifier])

• Cierra la conexión con la BBDD• No suele ser necesario su uso:

• La conexión se cierra automáticamente al finalizar el script• Sólo es necesario si se modifican los permisos de la BBDD

durante la ejecución del script

Antonio LaTorre de la Fuente, José María Peña PHP

Page 171: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común IV

Posicionamiento del cursor de resultadosint mysql_data_seek (int result, int row_numer)

• Posiciona el cursor de resultados en la fila proporcionadacomo parámetro (0 es la primera posición)

• Puede ser útil para realizar un segundo recorrido por losdatos

Antonio LaTorre de la Fuente, José María Peña PHP

Page 172: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común V

Creación de una BBDDint mysql_create_db (string database_name, [int

link_identifier])

• Sólo puede llamarse tras establecer una conexión conMySQL

• El usuario debe tener permisos para crear la BBDD• Puede ser sustituida por la siguiente consulta:

mysql_query (‘‘create database db_name’’);

Antonio LaTorre de la Fuente, José María Peña PHP

Page 173: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común VI

Borrado de una BBDDint mysql_drop_db (string database_name, [int

link_identifier])

• Borra una BBDD• No es algo que se suela hacer desde un script PHP

Listado de las BBDD de MySQLint mysql_list_dbs ([int link_identifier])

• Proporciona un listado de las BBDD existentes• Los resultados se obtienen de la forma habitual:

mysql_fetch_array ()

Antonio LaTorre de la Fuente, José María Peña PHP

Page 174: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común VIIListado de tablas de una BBDD

int mysql_list_tables (string database, [intlink_identifier])

• Permite listar las tablas que contiene una BBDD• Los resultados se obtienen con la función

mysql_tablename ()

Ejemplo de uso

$tables = mysql_list_tables ("test");

for ($i = 0; $i < mysql_num_rows ($tables); $i++) {echo mysql_tablename ($tables, $i), "<br>\n";

}

Antonio LaTorre de la Fuente, José María Peña PHP

Page 175: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Funciones de uso menos común VIII

Listado de columnas de una tabla de una BBDDint mysql_list_tables (string database, string table_name,

[int link_identifier])

• Análoga a la anterior, pero para obtener los nombres delas columnas de una tabla

Antonio LaTorre de la Fuente, José María Peña PHP

Page 176: PHP - PHP Hypertext Pre-processor - UPMlaurel.datsi.fi.upm.es/_media/docencia/cursos/pws/...Introducción al lenguaje PHP Instalación y Configuración del servidor Conceptos básicos

Introducción al lenguaje PHPInstalación y Configuración del servidor

Conceptos básicosProgramación avanzada en PHP

Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD

Ejercicio

Consultas a una BBDD• Realizar las siguientes consultas a la BBDD de ejemplo:

• Obtener el nombre y el teléfono de las empresas que sededican a la electricidad.

• Obtener el nombre de las empresas madrileñas.• Modificar el saldo de las empresas con identificador en el

intervalo [8790, 8793] e incrementarlo en 1000 euros.• Borrar de la BBDD las empresas con saldo negativo.

Antonio LaTorre de la Fuente, José María Peña PHP