12.07.2015 Views

PHP - PHP Hypertext Pre-processor

PHP - PHP Hypertext Pre-processor

PHP - PHP Hypertext Pre-processor

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>1 Introducción al lenguaje <strong>PHP</strong>2 Instalación y Configuración del servidor3 Conceptos básicos4 Programación avanzada en <strong>PHP</strong>Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Ejecución de Programas WebAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong><strong>PHP</strong><strong>PHP</strong> es...• Las siglas de <strong>PHP</strong> <strong>Hypertext</strong> <strong>Pre</strong>-<strong>processor</strong>• Un lenguaje interpretado diseñado expresamente paracrear páginas dinámicas en el servidor.• Una de las alternativas tecnológicas más usadas en eldesarrollo de aplicaciones en servidor.• Un estándar de código libre.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong><strong>PHP</strong>Características de <strong>PHP</strong>• El código <strong>PHP</strong> 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 recursosen la web.• Permite intercalar etiquetas <strong>PHP</strong> y HTML.• Se puede usar para programar otras cosas.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Historia de <strong>PHP</strong>Versiones de <strong>PHP</strong>• Versión original deRasmus Lerdorf (1994).• <strong>PHP</strong> 3 (1998).• Zend Engine (1999).• <strong>PHP</strong> 4 (2000) ∗ .• <strong>PHP</strong> 5 (2004) ∗ .• <strong>PHP</strong> 6 (anunciado enbreve).Relevancia de <strong>PHP</strong>• TIOBE ProgrammingCommunity Index loindexa como 5 olenguaje deprogramación másusado.• El primero entre loslenguajes orientadosúnicamente a web.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Herramientas para <strong>PHP</strong>RecursosExisten numerosos recursos <strong>PHP</strong> disponibles.Editores Específicos• <strong>PHP</strong> designer• http://www.php-editors.com( )Depuradores• APD• XdebugExtensiones 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>1 Introducción al lenguaje <strong>PHP</strong>2 Instalación y Configuración del servidor3 Conceptos básicos4 Programación avanzada en <strong>PHP</strong>Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación I• Usaremos Easy<strong>PHP</strong> 1.8• Paquete integrado con:• Servidor Web Apache 1.3.33• <strong>PHP</strong> 4.3.10• Servidor de BBDD MySQL 4.1.9• <strong>PHP</strong>MyAdmin 2.6.1• Descargable desde: http://www.easyphp.org( )Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación IIIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación IVAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación VAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación VIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación VIIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación VIIIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación IXAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación XAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación XIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Instalación XIIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>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.• Easy<strong>PHP</strong> actualiza los ficheros de configuración efectivosautomáticamente.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Ejemplo <strong>PHP</strong>Hola MundoEsto es HTMLAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Ejemplo <strong>PHP</strong>Instalación en el servidor• El fichero debe instalarse en lacarpeta www de la instalación.• Para ver su ejecución se debeconsultar con el navegador ladirección:http://localhost/hola-mundo.php( )Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Ejemplo <strong>PHP</strong>Hola Mundo (lo que ve el cliente)Esto es HTMLHola MundoHoy es: 19/01/2007, ¡qué disfrutes del día!Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de Usuario1 Introducción al lenguaje <strong>PHP</strong>2 Instalación y Configuración del servidor3 Conceptos básicosGestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de Usuario4 Programación avanzada en <strong>PHP</strong>Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioComentariosComentarios en <strong>PHP</strong>• Existen tres tipos de comentarios.• Comentar el código es muy importantes para sulegibilidad.ComentariosAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables IVariables en <strong>PHP</strong>• Las variables permiten almacenar valores a lo largo delprograma <strong>PHP</strong>.• Todas las variables en <strong>PHP</strong> 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables IIVariables$hoy="Viernes";echo "Al fin es $hoy";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables IIITipos de las variables en <strong>PHP</strong>• Los tipos simples que se pueden asignar a una variableson:• 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables IVVariables$enanitos="siete";$enanitos=7;echo "Hay $enanitos personas pequeñas";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables VEscritura de las variables en <strong>PHP</strong>• En los nombres de variables no puede haber espacios.• Las variables con mayúsculas y minúsculas se considerandiferentes entre sí.• Se recomienda usar nombres de variables que seansignificativos (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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables VICadenas 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariables VIIImprimir 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 "": Implica un salto en el HTML que sevisualiza (lo vería el navegador).Saltos de líneaecho "Si sólo pongo \\n no se separa la línea...\n";echo "Pero si pongo BRLas líneas se separan";echo "Mejor los dos \n";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicioCuenta 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicioCuenta del restaurante$plato="Pollo al Chilindrón";$cantidad=2;$precio=6.75;echo "$plato , $cantidad a $precio euros\n";$plato="Bonito en Pepitoria";$cantidad=1;$precio=7.25;echo "$plato , $cantidad a $precio euros\n";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores IOperadores aritméticos• Existen los siguientes operadores suma(+), resta (-),división (/), multiplicación (*) y módulo ( %).• Para realizar operaciones entre variables se puedenrealizar conversiones de tipos.• Para ello se usa el tipo numérico más general que puedealbergar el resultado.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores IIOperadores 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores IIIOperadores de cadenas• Entre las cadenas existe un operador de concatenación, elpunto (.).• Se puede usar con enteros, concatenándolos a unacadena.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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores IVOperadores con asignación• Todos los operadores se pueden combinar con unaasignació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 yvolver a asignarlo.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores VOperadores 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores VIOperadores 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores VIIOperadores 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=4Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicioCuenta 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicioCuenta 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";echo "Total $total euros\n";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioReferencias IReferencias entre variables• Se usa el símbolo (&) delante de una variable y comoparte derecha de una expresión.• Indica que la variable a la izquierda es una referencia a laotra.• 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioReferencias IIReferencias 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 variableAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioTipos IAsignació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 lavariable.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioTipos IIAsignació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 flaseAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioTipos IIIAsignación explícita de tipos• Aunque el tipo de las variables se modifica de formadinámica.• Existe un mecanismo (llamado casting) para forzar estaconversión.• Si delante de una expresión se indica un descriptor detipo:• (string), (boolean), (int), (float)Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioTipos IVAsignació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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioVariablesDefinición de variables• Una variable se define la primera vez que se declara.• Sin embargo, a lo largo de la ejecución se puedemanipular 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 falseAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioConstantesDefinición de constantes• Los valores que no van a cambiar a lo largo de la ejecucióndel programa se pueden almacenar en constantes.• El uso de una constante es idéntico al de una variable (sinel $).• Se declara la cadena que identifica a la constante.Definición de constantesdefine ("PI", 3.141592);$radio=1.75;$area=PI * $radio * $radio;Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioTipos de estructuras de Control ITipos de estructuras de control• Se encargan del control del flujo de ejecución delprograma.• La gran mayoría están heredadas de C, C++ o Java.• El esquema general de las estructuras de control consisteen la evaluación de una condición (booleana) ydependiendo de ello seleccionar entre diferentesalternativas.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioTipos de estructuras de Control IIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores de condición IOperadores 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores de condición IIOperadores de comparación$a = 3;$a < 5; // Devuelve true$a >= 1.12; // Devuelve true$b = "Aaron";$c = "Abad";$b > $c; // Devuelve falseAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores de condición IIIOperadores de equivalencia• Existen dos tipos de comparadores de equivalencia:• Igualdad/Diferencia: ==, ! =. Hace conversión de tipos.• Equivalencia/Inequivalencia: ===, ! ==. No haceconversión de tipos.Operadores de equivalencia$a = 5;$a == "5"; // Devuelve true$a != 5.0; // Devuelve false$a === "5"; // Devuelve false$a !== 5; // Devuelve falseAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioOperadores lógicosOperadores lógicos• Dos o más expresiones lógicas se pueden combinar pormedio de:• "Y"lógico: &&, and.• . O "lógico: ||, or.• "XOR"lógico: xor.• Negación lógica: !.Operadores lógicos4 < 3.0 && "adios" < "hola"; // Devuelve false34 >= "8" || 3 === "tres"; // Devuelve trueAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control IAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control IIif-then-elseif($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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control IIIelseif• Las estructuras de control if se pueden enlazar.• Permiten evaluar condiciones de forma excluyente.elseifif($a


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control IVswitch• Es similar al caso anterior pero sólo vale para valores deuna misma variable.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control Vswitchswitch($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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control VIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control VIIwhile$header=1;while($header


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control VIIIAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control IXdo-while$indice=1;do{echo "Indice $indice\n";$indice++;}while($indice


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras de Control Xfor(init;cond;inc)for($header=1;$header


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras Compuestas IEstructuras de datos compuestas• Lo visto hasta el momento son tipos de datos simples.• Las estructuras de datos compuestas, son tipos datos quecontienen varios elementos de diferentes tipos (simples ocompuestos) estructurados.• <strong>PHP</strong> dispone de un tipo de dato compuesto muy potente elarray.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEstructuras Compuestas IIArray• Esta estructura es la análoga a 3 o 4 tipos compuestos enotros 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 contantos elementos como se le pasen.• Los arrays también se pueden inicializar elemento aelemento.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays IInicializació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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays IITipos de los datos de un array• Los valores de los elementos de un array pueden ser dedistintos 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays IIIIndices de un array• Un elemento de un array se puede eliminar.• Esto implica que los arrays no son necesariamenteconsecutivos.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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays IVIndices de un array• Para insertar un elemento al final de un array se puedeusar "[]".• Esto asocia al elemento el siguiente valor de la clavenumé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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays VArrays asociativos• Las claves (indices) de los arrays también pueden sercadenas de caracteres.• Un array puede tener variables numéricas y cadenas a lavez.Arrays asociativos$persona["Nombre"] ="Pepe";$persona["Apellido"]="Potamo";$persona["Edad"] =70;$persona[1]=true;Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays VIInicializando arrays asociativos• Un array asociativo se puede inicializar inidcando claves yvalores a la vez.Inicializando arrays asociativos$v=array("a"=>1, "b"=>2);$data=array("Edad" => 25,"<strong>Pre</strong>mio" => true,"Importe"=> 239.50);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays VIIMatrices• Una matriz no es más que un array cuyos elementos sonarrays.• Como no hace falta declararlas se pueden inicializar sobrela marcha.Matrices$matriz=array();$matriz[0]=array("A","B");$matriz[1]=array("C","D");$cnt=0;for($i=0;$i


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays VIIIImprimiendo un array• Al hacer un echo sobre una variable array no se obtienesu 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 "";print_r($m);echo "";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays IXIteración sobre arrays• count() muestra el número de elementos del array.• Recorrer con un for desde 0 hasta ese valor puedecausar problemas.• Hay que recordar que los elementos pueden no serconsecutivos.Iteración sobre arrays$num[0]=100;$num[3]=200;for($i=0;$i


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XIteració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 elementoecho $n; // 100, 200Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XIIteració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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XIIIteració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\n";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XIIIFunciones 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 ydesplaza (reordenando) el resto.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XIVPilas y colas$jobs=array("cargar","operar","guardar");array_unshift($jobs,"preparar");array_push($jobs,"probar","apagar");while($j=array_shift($jobs))echo "Ejecutando: $j\n";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XVExpansión de arrays• Existe dos funciones para convertir cadenas de caracteresen arrays (y viceversa):• explode(): Parte una cadena en subcadenas y las meteen un array.• implode(): Concatena todos los elementos de un arrayen una misma cadena.• Estas funciones toman como argumento un separador.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XVIExpansió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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XVIIOrdenació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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioArrays XVIIIOrdenació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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicioLas 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 unaquiniela:• 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones en <strong>PHP</strong> IOrganización del código• Existen dos alternativas a la hora de organizar el códigopara su posible reutilización:• Definiendo funciones que se usen dentro del mismo fichero<strong>PHP</strong>.• Definiendo esas mismas funciones en otro fichero apartecomún a varios ficheros <strong>PHP</strong>.• 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones en <strong>PHP</strong> IIFunciones• Para declarar una función se la asocia un nombre que esel 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones IDefinición de una función// Definimos una funciónfunction saludo(){echo "Hola mundo!";}// Incluimos otro fichero <strong>PHP</strong>include("func_aux.php");// Invocamos la funciónsaludo();Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones IIArgumentos de una función• Los argumentos de una función son variables incluidas ensu declaración.• Dichas variables se usan en el cuerpo de la función.• Al invocarla se instancian dichas variables.Argumentos de una funciónfunction saludando($quien){echo "Hola $quien";}saludando("Manolo");saludando(23);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones IIIValor 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 retornofunction por_dos($num){return 2*$num;}por_dos(33);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones IVArgumentos 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 predefinidosfunction despedida($quien="a todos"){echo "Adios $quien";}despedida("Manolo");despedida();Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones VArgumentos variables• Son funciones con un número indeterminado deargumentos.• 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones VIArgumentos variablesfunction suma(){if(func_num_args()


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones VIIReferencias• Son argumentos que pueden modificarse dentro de lafunción.• El argumento no es una copia del valor sino una referenciaa la misma variable.Referenciasfunction incrementa(& $num){$num++;}$x=2;incrementa($x);echo $x;Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones VIIIÁmbito de las variables• Las variables usadas dentro de una función son sólovisibles dentro de la misma.• Eso indica que mantienen el valor y la declaraciónmientras 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones IXVariables globales• Hay dos formas de declarar variables globales que seanvisibles 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioFunciones XVariables globalesfunction 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicio IJuego del ahorcado• El programa dispone de un fichero con varias palabas (de5 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ánocultas• Las letras dichas y no acertadas.• Un monigote que muestra el estado de los fallos delusuario (imágenes).Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Gestión de variablesEstructuras de ControlEstructuras Compuestas: ArraysFunciones <strong>Pre</strong>definidas y de UsuarioEjercicio IIDetector de palíndromos• El programa debe ser capaz de detectar si una fraseintroducida 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDD1 Introducción al lenguaje <strong>PHP</strong>2 Instalación y Configuración del servidor3 Conceptos básicos4 Programación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDProcesamiento 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 <strong>PHP</strong> con el mismo nombreque los campos formularioAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDProcesamiento de Formularios IIMétodo GET$patron = $_GET[’patron’]; /* Forma recomendada */$patron2 = $patron;/* Sólo siregister_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 siregister_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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEnví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 elservidor• ’error’: código del error sucedido, si procedeAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEnvío de archivos al servidor IIEjemplo de FormularioEscoja el archivo que desea enviar:Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEnvío de archivos al servidor IIIProcesamiento de los datos del archivoecho "Los datos relativos al archivo suministradoson:";echo "Nombre original: ".$fich[’name’]."";echo "Tipo de archivo: ".$fich[’type’]."";echo "Tamaño del fich: ".$fich[’size’]."";echo "Nombre temporal: ".$fich[’tmp_name’]."";if (!empty($fich[’error’]))echo "Error ocurrido: ".$fich[’error’]."";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFuncionamiento 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 lavisualización de una página web (por ejemplo Google)Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFuncionamiento 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 desegundos desde el 1 de enero de 1970• ’path’: ruta en el servidor en el que estará disponible lacookie• ’domain’: dominio en el que la cookie estará disponible• ’secure’: decide si la cookie ha de ser enviada medianteconexión seguraAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDUso de cookies en <strong>PHP</strong>• Sintaxis de la función setcookiesetcookie (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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDVentajas 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 usuariopuede bloquearlas)• La información es fácilmente alterableAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDIntroducción• Alternativa a las Cookies para mantener información deestadoDiferenciaLa 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 laURL)Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSesiones en <strong>PHP</strong>• Existen tres funciones básicas para el manejo de sesionesen <strong>PHP</strong>: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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo IAbrimos la sesión y registramos las variablesAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo II<strong>Pre</strong>sentamos el FormularioIntroduzca un número entero entre 0 y 9999:Número: Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo IIIProcesamos la informaciónif (empty ($secreto) || $_REQUEST[’envio’] == "Reiniciar") {echo "Intente adivinar el número secreto.";$secreto = rand (0,9999);$intentos = 0;} else if (empty ($numero)) {echo "Intente adivinar el número secreto.";} else if ($secreto < $numero) {$intentos++;echo "El número secreto es menor que " . $numero . "";echo "¡Lleva usted " . $intentos . " intentos!";} else if ($secreto > $numero) {Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo IVDestruimos la sesión} else {echo "";echo "ENHORABUENA, el número secreto era " . $numero ."";echo "";session_destroy ();exit ();}Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDOtras consideraciones• Si <strong>PHP</strong> 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjercicioCalendario 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros IUso de ficheros• Una de las alternativas para mantener informaciónpersistente 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros IIGestión de ficheros• Hay dos formas de manipular ficheros:• Por medio de las funciones heredadas de C/UNIX.• El interfaz de funciones propias de <strong>PHP</strong>.• Las primeras, no obstantes no se recomiendan, salvo paraoperaciones muy particulares.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros IIIManejo básico• Existen dos funciones que permiten gestionar ficheros pormedio de cadenas:• file_get_conents(): Esta función carga en unacadena el contenido del fichero.• file_put_conents(): Esta función vuelca el contenidode 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros IVManejo 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 finalde cada elemento.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros VManejo 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros VIRecorrido de directorios• Para manipular directorios se usan las siguientesfunciones:• opendir(): Devuelve un manejador para empezar arecorrer un directorio.• readir(): Se le da el manejador de un directorio y tedevuelve el siguiente nombre de fichero en dicho directorio.• closedir(): Cierra un directorio abierto.Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros VIIRecorrido de directorios$d=opendir("datos/");while($f=readdir($d))echo "Entrada: $f\n";closedir($d);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros VIIIOtras 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros IXOtras 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFicheros XFicheros remotos• El nombre de un fichero se puede sustituir por una URL.• Hay diferentes protocolos de acceso a ficheros remotos, lomá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 ficheroAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjercicioJuego del ahorcado• El programa dispone de un fichero con varias palabas (de5 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ánocultas• Las letras dichas y no acertadas.• Un monigote que muestra el estado de los fallos delusuario (imágenes).Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDConceptos de Bases de DatosBase de datos• Conjunto de datos interrelacionados• Almacenados sistemáticamenteGestor de bases de datos• Programa informático• Almacena los datos de forma eficiente• Recupera y accede a los datos rápidamenteSQL – Structured Query Language• Lenguaje estándar para consultar una base de datos• Es un estándar ANSI/ISOAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo 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.55Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSQLConsultando 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.SELECTSELECT Nombre, Telefono FROM Empresas;Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de SELECTSELECT 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.55Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de SELECTSELECT 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.55Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSQLConsultando 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.SELECTSELECT * FROM Empresas WHERE Saldo


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de SELECTSELECT * FROM Empresas WHERE Saldo


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de SELECTSELECT * FROM Empresas WHERE Saldo


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSQLOperador 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).SELECTtexto LIKE ’En un % de la Mancha de % acordar %’Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de SELECTSELECT * 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.55Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de SELECTSELECT * 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.55Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSQLInserció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 columnasde la tablaINSERTINSERT INTO Empresas VALUES(8795, ’Q&T Asociados’, ’’, 917884520, 4590.40);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de INSERTINSERT 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.40Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de INSERTINSERT 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.40Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSQLModificació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 amodificar.UPDATEUPDATE Empresas SET Tipo=’Marketing’ WHERE Codigo=8795;Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de UPDATEUPDATE 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.40Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de UPDATEUPDATE 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.40Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDSQLEliminació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.DELETEDELETE FROM Empresas WHERE Codigo


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de DELETEDELETE FROM Empresas WHERE Codigo


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjemplo de DELETEDELETE FROM Empresas WHERE Codigo


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjercicioConsultas 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 elintervalo [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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDAcceso a BBDD desde <strong>PHP</strong>• 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 <strong>PHP</strong> existen 33 funciones para trabajar con MySQL• Sólo la mitad se usan habitualmenteAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común IConexión con una BBDDint mysql_connect (string host, string username, stringpassword)• Devuelve el identificador de la conexiónEjemplo de llamada$conn = mysql_connect (‘‘localhost’’,‘‘pepe’’, ‘‘rufus73’’);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común IIConexión permanente con una BBDDint mysql_pconnect (string host, string username, stringpassword)• La conexión permanece abierta tras la finalización delscript• Puede incrementar notablemente la velocidad del programaCambios necesarios en el fichero php.inimysql.allow_persistent = Onmysql.max_persistent = -1Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común IIISelección de una BBDDint mysql_select_db (string database_name [, intlink_identifier])• El identificador sólo se necesita si hay varias conexionesabiertasEjemplo de llamada$db = mysql_select_db (‘‘database_name’’);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común IVConsultas 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 resultadosEjemplo de llamada$result = mysql_query (‘‘select * from db’’);Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común VRecuperació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 resultadosarray mysql_fetch_row (int result)Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común VIEjemplo de uso$query = "select * from table_name";$result = mysql_query ($query);echo "";while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {echo "";while (list ($key, $value) = each ($row)) {echo "" . $value . "";}echo"";}echo "";Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común VIIRecuento de filas seleccionadasint mysql_num_rows (int result)• Devuelve el número de filas seleccionadas por la queryEjemplo 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común VIIIRecuento 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ónEjemplo 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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común IXGestión de erroresint mysql_errno ([int link_identifier])• Devuelve el código de error proporcionado por MySQL• Útil para reescribir los mensajes de errorstring mysql_errno ([int link_identifier])• Devuelve el mensaje de error correspondiente a la últimaoperación realizadaAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común XAcceso 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 interesaAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso más común XIEjemplo de usomysql_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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común IRecuperación de datos como objetosObject mysql_fetch_object (int result, [, intresult_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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común IILiberación de memoriaint mysql_free_result (int result)• Libera la memoria ocupada por el resultado de la últimaconsulta• No suele ser necesario su uso:• <strong>PHP</strong> libera la memoria automáticamente al finalizar elscript...• ...aunque puede ser útil si el script hace más cosasdespués de la consultaAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común IIICierre 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 BBDDdurante la ejecución del scriptAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común IVPosicionamiento 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 losdatosAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común VCreación de una BBDDint mysql_create_db (string database_name, [intlink_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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común VIBorrado de una BBDDint mysql_drop_db (string database_name, [intlink_identifier])• Borra una BBDD• No es algo que se suela hacer desde un script <strong>PHP</strong>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<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común VIIListado de tablas de una BBDDint mysql_list_tables (string database, [intlink_identifier])• Permite listar las tablas que contiene una BBDD• Los resultados se obtienen con la funciónmysql_tablename ()Ejemplo de uso$tables = mysql_list_tables ("test");for ($i = 0; $i < mysql_num_rows ($tables); $i++) {echo mysql_tablename ($tables, $i), "\n";}Antonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDFunciones de uso menos común VIIIListado 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 tablaAntonio LaTorre de la Fuente, José María Peña<strong>PHP</strong>


Introducción al lenguaje <strong>PHP</strong>Instalación y Configuración del servidorConceptos básicosProgramación avanzada en <strong>PHP</strong>Formularios, Sesiones y CookiesAcceso a ficherosConceptos de BBDDAcceso a BBDDEjercicioConsultas 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 elintervalo [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<strong>PHP</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!