Your SlideShare is downloading. ×
Curso Php
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Curso Php

10,918

Published on

Conceptos básicos y principales estructuras que se utilizan en php y MySQL

Conceptos básicos y principales estructuras que se utilizan en php y MySQL

Published in: Design, Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,918
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
872
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PHP PHP HiperText Preprocesor 1
  • 2. Contenidos ● Introducción ● Sintaxis básica ● Variables, tipos y operadores ● Variables predefinidas ● Constantes ● Estructuras de Control ● Incluir código de ficheros externos ● Funciones ● Accediendo a MySQL ● Cookies ● Sesiones ● Ficheros y directorios ● Clases y Objetos (PHP 5) 2
  • 3. Introducción ● ¿Que es PHP? – Lenguaje de programación de alto nivel – Empotrado en páginas HTML – Ejecutado en servidor – Software libre 3
  • 4. Introducción (II) ● ¿Que puedo hacer con PHP? – Scripts del lado del servidor – Scripts en linea de comandos – Aplicaciones con interfaz gráfica PHP-GTK 4
  • 5. Introducción (III) ● Scripts del lado del servidor BD Servidor HTML + PHP Cliente LDAP Procesa PHP Genera HTML ... / 5
  • 6. Introducción (III) ● Scripts del lado del servidor Servidor BD: Servidor Web : Apache2 MySQL HTML + PHP Navegador (Firefox) Procesa PHP Genera HTML c: 6
  • 7. Introducción ● Requisitos – PHP5 – Servidor Web : apache2 – Servidor BD : mysql – Editor : netbeans ● Todo en 1 : XAMPP (Apache + MySQL + PHP) ● Netbeans ¡¡¡ Software libre !!! 7
  • 8. Introducción ● Instalación en windows – XAMPP : http://www.apachefriends.org/es/xampp.html – Installer : Instalación por defecto : C:xampp – Raiz de documentos : c:xampphtdocs – Configuración php : c:xamppapachebinphp.ini – Configuración apache : C:xamppapacheconfhttpd.conf – Configuración mysql : C:xamppmysqlbinmy.cnf ● Navegador : http://localhost ● MySQL : http://localhost/phpmyadmin 8
  • 9. Introducción ● Instalación en windows (II) ● Editor de scripts php – Editor de texto plano – IDE (Entorno de desarrollo integrado) ● Editor ● Resaltado de sintaxis ● Plantillas html ● Debuger ● Proyectos ● ... 9
  • 10. Introducción ● Instalación en windows (II) – IDE : Netbeans, Eclipse, Zend Studio … – NetBeans – http://www.netbeans.org/downloads/index.html – PHP + Spanish + Windows 10
  • 11. Introducción ● Primer proyecto php en netbeans – Archivo → Proyecto nuevo – Categoría → PHP – Proyectos → PHP application – Project Name → Nombre_del_proyecto – Sources folder → C:xampphtdocsNombre_del_proyecto – Run as → Local web site – Project URL → http://localhost/Nombre_del_proyecto 11
  • 12. Introducción ● Primer proyecto php en netbeans (II) Nombre del projecto : PhpProject1 12
  • 13. Introducción ● Primer proyecto php en netbeans (II) – Ejecutar proyecto: Ejecutar → Set project configuration → Personalizar 13 Ejecutar proyecto
  • 14. Sintaxis Básica (I) ● Código PHP empotrado en documentos HTML ● Instrucciones entre etiquetas: – <?php ... ?> – <script language=”php”> ... </script> – <? ... ?> – <% ... %> ● recomendado : <?php .... ?> – XHTML – XML 14
  • 15. Sintaxis Básica (II) ● Ejemplo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Título de la página</title> </head> <body> <?php echo "<p>Estas usando:".$_SERVER['HTTP_USER_AGENT']."</p>"; ?> </body> </html> 15
  • 16. Sintaxis Básica (III) ● Scripts PHP : – Serie de sentencias / instrucciones – Ejecutadas secuenciálmente – Datos en variables – Estructuras de control – Funciones – Clases (POO) 16
  • 17. Sintaxis Básica (IV) ● Los espacios/tabulaciones/saltos de linea entre las instrucciones, no afectan al comportamiento – Las siguientes instrucciones tienen el mismo resultado: <?php echo “hola mundo” ;?> <?php echo “hola mundo”; ?> <?php echo “hola mundo”; ?> <?php echo “hola mundo”; ?> 17
  • 18. Sintaxis Básica (V) ● Las instrucciones siempre se finalizan con punto y coma <?php echo “<p>hola mundo</p>”; echo “<p>Esto es una prueba</p>”; ?> <?php echo “<p>hola mundo</p>”;echo “<p>Esto es una prueba</p>”; ?> <?php echo “<p>hola mundo</p>”; echo “<p>Esto es una prueba</p>”; ?> 18
  • 19. Sintaxis Básica (VI) ● Comentarios : Texto que no se ejecuta – Linea : // <?php //Esta linea no se tiene en cuenta echo “<p>hola mundo</p>”;//Este comentario tampoco echo “<p>Esto es una prueba</p>”; ?> – Bloque: /* ... */ <?php /*Esta linea no se tiene en cuenta esta tampoco tampoco esta/* Estos comentarios /* No se puede anidar producirían un error /* bloques de comentarios*/ */ 19 ?>
  • 20. Variables ● Los datos se almacenan en variables – Las variables se representan con un signo de dolar seguido por el nombre de la variable – Sensible a mayúsculas/minúsculas – El nombre de la variable : ● Empezar con letra o _ (guión bajo) ● Contener : letras números _ <?php <?php $cont=1; $1Usuario = “mikel”; $_cont=1; $usuario-2 = “ainara”; $nombre_usuario=”mikel” $número = 12; $PESO22_=”102g” $cont 1 = 0; ?> ?> 20 CORRECTO INCORRECTO
  • 21. Operadores de Asignación ● Asignación : = – Permite asignar valores a variables – El operando de la izquierda recibe el valor de la expresión de la derecha <?php $cont = 123; $cont =”Hola”; $a = ($b = 4) + 5; echo $a; echo $b; ?> 9 4 21
  • 22. Variables (II) ● A diferencia de otros lenguajes PHP es un lenguaje “no tipado” ● El programador no decide el tipo de una variable ● El tipo lo decide PHP en tiempo de ejecución dependiendo del contexto <?php $cont = 123; var_dump($cont); int(123) $cont =”Hola”; var_dump($cont); string(4) "Hola" $cont= true; var_dump($cont); bool(true) 22 ?>
  • 23. Variables (III) ● Para forzar variables – settype($variable,”tipo”) – Moldear variables (casting) ● Mostrar tipo variable – var_dump($variable); ● Mostrar contenido variable – print_r($variable) – echo – printf 23
  • 24. Variables (IV) ● Mostrar contenido variables : ejemplos <?php $cont = 123; echo $cont; 123 $mensaje =”Página en construcción”; echo $mensaje; Página en construcción echo $cont; echo $mensaje; 123Página en construcción ?> 24
  • 25. Variables (V) ● Mostrar contenido variables : Saltos de linea <?php $cont = 123; $mensaje =”Página en construcción”; echo $cont; echo $mensaje; ?> Fuente HTML : 123Página en construcción Navegador: 123Página en construcción 25
  • 26. Variables (VI) ● Mostrar contenido variables : Saltos de linea (II) <?php $cont = 123; $mensaje =”Página en construcción”; echo $cont; echo “<br/>”; echo $mensaje; ?> Fuente HTML : 123<br/>Página en construcción Navegador: 123 Página en construcción 26
  • 27. Variables (VII) ● Mostrar contenido variables : Saltos de linea (III) <?php $cont = 123; $mensaje =”Página en construcción”; echo $cont; echo “n”; echo $mensaje; ?> Fuente HTML : 123 Página en construcción Navegador: 123Página en construcción 27
  • 28. Pasar datos entre scripts ● HTTP : protocolo sin estado ● El valor de las variables existe durante la vida del script (página) ● Pasar datos entre scripts (páginas) – Formularios – “Enlaces GET” – Cookies – Sesiones 28
  • 29. Obtener variables de formularios ● Metodo : POST <!-- index.html --> <form action =”logon.php” method=”post”> <input type=”text” name=”user”/> <input type=”text” name=”pass”/> <input type=”submit” </form> <?php //logon.php $usuario = $_POST['user']; $pass = $_POST['pass']; ?> 29
  • 30. Obtener variables de formularios ● Metodo : GET <form action =”logon.php” method=”get”> <input type=”text” name=”user”/> <input type=”text” name=”pass”/> <input type=”submit” </form> <a href=”logon.php?user=nombreUsuario&pass=password”>logon</a> <?php //logon.php $usuario = $_GET['user']; $pass = $_GET['pass']; ?> 30
  • 31. Tipos ● Tipos – Escalares ● Enteros ● Coma flotante ● Cadenas ● Booleanos – Compuestos ● Matrices ● Objetos – Null – Resource 31
  • 32. Tipos : Enteros ● Enteros (Integer) – Números enteros del conjunto Z = {...,-2,1,0,1,2,...} – Tamaño depende de la plataforma – Usual : 32 bits con signo – Z = {-2147483647,-2147483646,...,-1,0,1,2147483646,2147483647} – Si se desborda un entero será interpretado como float (numero de coma flotante) 32
  • 33. Tipos : Enteros (II) ● Enteros (Integer) Declarando variables de enteros: <?php $cont = 123;// Un número decimal $cont = -123;// Un número decimal negativo $cont = 0123;// Un número octal $cont = 0x1A;// Un número hexadecimal $edadMinima = 18; ?> Desbordamiento de enteros : <?php $numeroGrande = 2147483647; var_dump($numeroGrande);// Devuelve : int(2147483647) $numeroGrande = 2147483648; var_dump($numeroGrande);// Devuelve : float(2147483647) 33 ?>
  • 34. Tipos : Reales ● Números de coma flotante (Float) – Números reales – También conocidos como doble o real – Tamaño depende de la plataforma – Usual : ~1.8e308 <?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?> 34
  • 35. Tipos : Reales (II) ● Float : Imprimir variables de tipo float – echo <?php $num=16.6765464; echo $num; 16.6765464 ?> – printf <?php $num=16.6765464; printf("el numero es : %.2f ",$num); 16.68 ?> 35
  • 36. Operadores aritméticos ● Podemos realizar operaciones aritméticas Operacion Operador Ejemplo suma + $total = $precio + $iva; resta - $oferta = $total - $descuento; multiplicacion * $iva = $precio*0.16; division / $media = $suma / $total; módulo (resto) % $resto = $total % 5; negación - $a = 10*-$b; – El operador ' / ' devuelve un valor flotante a menos que los dos operandos sean enteros y los números sean divisibles sin residuos 36
  • 37. Operadores aritméticos (II) ● El orden de ejecución : – * / % – + - – Izquierda a derecha – Paréntesis : orden de ejecución <?php echo (8 % 3 * 5); // 10 echo 8%(3*5); // 8 echo (8 * 3 % 5); // 4 echo 8*(3%5); //24 echo (5 * 8 % 3); // 1 echo 5 *( 8 % 3); //10 echo (5 % 8 * 3); // 15 echo 5 %( 8 * 3); // 5 echo ((($a+($b-$c))/$d) % 3); //paréntesis de aperture = paréntesis de cierre ?> 37
  • 38. Operadores aritméticos (III) ● Ejemplos : <?php $a = 10; $b = 30 + $a; echo $b *0.6; $c = (($a * 40) - $b) / 2; $pie = 10; $altura = 25; $superficie = ($pie*$altura)/2; ?> 38
  • 39. Operadores aritméticos (IV) ● Operadores de incremento/decremento : Operacion Ejemplo Ejemplo Pre-incremento ++$a Incrementa $a en uno, y luego devuelve $a. Post-incremento $a++ Devuelve $a, y luego incrementa $a en uno. Pre-decremento --$a Decrementa $a en uno, luego devuelve $a. Post-decremento $a-- Devuelve $a, luego decrementa $a en uno. <?php $a = 10; $a++; echo $a; //11 $a--; echo $a; // 10 ?> 39
  • 40. Tipos : Cadenas ● Cadenas (String) – Secuencia de caracteres – Antes de PHP 6 : un carácter -> un byte – 256 tipos de caracteres diferentes – Diferentes maneras de especificar – Caracteres de escape – No hay limite de tamaño 40
  • 41. Tipos : Cadenas ● Cadenas (String) : Definición de cadenas – Comillas simples : ' – Imprimir comilla simple: ● ' – Para imprimir barra invertida ● <?php echo 'Esto es una cadena'; $c = 'Una cadena en una variable'; echo 'Imprime una cadena con saltos'; 41 ?>
  • 42. Tipos : Cadenas ● Cadenas (String) : Definición de cadenas – Comillas dobles : “Esto es una cadena” – Caracteres escapados ● n : Imprime una linea nueva ● t : Imprime una tabulación horizontal ● : Imprime una barra invertida ● $ : Imprime un signo de dólar ● ” : Imprime una comilla doble – Los nombres de las variables serán expandidos 42
  • 43. Tipos : Cadenas ● Cadenas : Comillas dobles <?php $nombre = “esti”; echo ”Frase con n tres n saltos de linea.n”; Frase con tres saltos de linea. “n” != “<br/>” $articulo = “tFrase tabuladanSin tabular”; echo $articulo; Frase tabulada Sin Tabular echo ”Ha seleccionado ”5” 'articulos' “; Ha seleccionado “5” 'articulos' ?> 43
  • 44. Tipos : Cadenas ● Cadenas : Expansión de variables – Las variables son interpretadas <?php $nombre = “ainhoa”; echo ”Bienvenid@ $nombre”; // Imprime Bienvenid@ ainhoa $articulo = “camiseta”; $cantidad = 5; echo ”Ha seleccionado $cantidad $articulos “; // Incorrecto echo ”Ha seleccionado $cantidad ${articulo}s “; // Correcto echo ”Ha seleccionado $cantidad {$articulo}s “; // Correcto echo ”Ha seleccionado $cantidad $articulo's “; // Correcto ?> 44
  • 45. Tipos : Cadenas ● Cadenas : Heredoc – Definir cadenas largas – Uso similar a comillas dobles – Caracteres de escape – Expansión de variables <?php $cadena = <<<FIN Ejemplo de una cadena que se extiende por varias líneas usando la sintaxis heredoc. FIN; ?> 45
  • 46. Tipos : Cadenas ● Cadenas : Heredoc – Expansión de variables <?php $nombre = $_REQUEST['txNombre']; $apellido = $_REQUEST['txApellido']; $dni = $_REQUEST['txDni']; $cadena = <<<FIN El usuario $nombre $apellido con dni $dni certifica que .... FIN; ?> 46
  • 47. Tipos : Cadenas ● Cadenas : Acceso a caracteres – Indices [ 0 .. longitud_cadena -1] <?php $cadena = “esto es una prueba”; echo $cadena; esto es una prueba echo $cadena[0]; // Imprime el primer caracter e echo $cadena[6]; // Imprime el 7 caracter s $cadena[0]='E'; echo $cadena; Esto es una prueba ?> 47
  • 48. Operadores de cadena ● Concatenación '.' <?php $cadena = “<label class='datos'>”.$nombre.” “.$apellido”.”</labe>; echo $cadena; <label class='datos'>Esti Goikoetxea</label> //Html : Esti Goikoetxea ?> ● Asignación sobre concatenación ' .= ' <?php $cadena = “<label class='; ... $cadena.=”datos”; ... $cadena.=”'>”.$nombre.” “.$apellido”.”</label>; ... ?> 48
  • 49. Tipos : Booleanos ● Booleanos : – 2 valores : true o false || TRUE o FALSE ● 0,0.0, “” , '',”0”, null,array vacio = false ● Cualquier otro valor = true <?php var_dump((bool) "");        // bool(false) var_dump((bool) 1);         // bool(true) var_dump((bool) -2);        // bool(true) var_dump((bool) "foo");     // bool(true) var_dump((bool) 2.3e5);     // bool(true) var_dump((bool) array(12)); // bool(true) var_dump((bool) array());   // bool(false) var_dump((bool) "false");   // bool(true) 49 ?>
  • 50. Operadores lógicos ● Operadores Operacion Nombre Resultados $a and $b Y TRUE si tanto $a como $b son TRUE. $a or $b O TRUE si cualquiera de $a o $b es TRUE. $a xor $b XOR TRUE si $a o $b es TRUE, pero no ambos. ! $a No TRUE si $a no es TRUE. $a && $b Y TRUE si tanto $a como $b son TRUE. $a || $b O TRUE si cualquiera de $a o $b es TRUE. 50
  • 51. Tipos : Array ● Matrices (Array) – Serie de pares de clave/valor (con un orden) – No puede haber claves repetidas – Multidimensionales – Por defecto : claves numéricas consecutivas – Claves : integer o string – Valor : cualquier tipo de PHP – Mediante los arrays podemos agrupar datos / variables en una sola variable – Los valores no tienen por que ser del mismo tipo 51
  • 52. Tipos : Array ● Matrices (Array) : Definir array – Podemos definir/crear arrays de diferentes maneras <?php $laborables = array(“lunes”,”martes”,”miércoles”,”jueves”,”viernes”); $laborables = array(0=>”lunes”,1=>”martes”,2=>”miércoles”, 3=>”jueves”,4=>”viernes”); ?> – De las dos maneras tendríamos la siguiente estructura (¡en una sola variable!) Índice 0 1 2 3 4 Valor “lunes” “martes” “miércoles” “jueves” “viernes” 52
  • 53. Tipos : Array ● Matrices (Array) : Definir array – Podemos especificar los índices directamente <?php $festivos[0]=”sábado”; $festivos[1]=”domingo”; ?> Índice 0 1 Valor “sábado” “domingo” – Los índices no tiene por que ser consecutivos 53
  • 54. Tipos : Array ● Matrices (Array) : Definir array – Los índices numéricos no se reordenan <?php $usuario[0]=”ainhoa”; $usuario[2]=”ane”; $usuario[1]=”iñaki”; ?> Índice 0 2 1 Valor “ainhoa” “ane” “iñaki” – Aunque disponemos de herramientas para hacerlo 54
  • 55. Tipos : Array ● Matrices (Array) : Añadir elementos al array – Podemos añadir elementos al array sin especificar el índice <?php $estaciones[0]=”invierno”; $estaciones[1]=”primavera”; $estaciones[]=”verano”; $estaciones[]=”otoño”; ?> – De esta manera se añadirán al final del array y su indice será el mayor indice del array incrementado en uno Índice 0 1 2 3 Valor “invierno” “primavera” “verano” “otoño” 55
  • 56. Tipos : Array ● Matrices (Array) : Acceder a los valores $laborables = array(“lunes”,”martes”,”miércoles”,”jueves”,”viernes”); echo $laborables; Array echo $laborables[2]; miércoles $estaciones[0]=”invierno”; $estaciones[1]=”primavera”; $estaciones[]=”verano”; $estaciones[]=”otoño”; print_r($estaciones); Array ( [0] => invierno [1] => primavera [2] => verano [3] => otoño ) 56
  • 57. Tipos : Array ● Matrices (Array) : Array asociativo – Los índices no tienen por que ser numéricos <?php $laborables = array(“enero”=>31, ”febrero”=>28, ”marzo”=>31, ”abril”=>30, .... ,”diciembre”=>31); echo $laborables[“abril”]; 30 print_r ($laborables[2]); Array ( [enero] => 31 [febrero] => 28 [marzo] => 31 [abril] => 30 ... ) ?> 57
  • 58. Tipos : Array ● Matrices (Array) : Array asociativo – Generalmente con BD => Asociativos <?php echo “<tr><td>Nombre:</td><td>” . $fila['nombre'] . ”</td></tr>”; echo “<tr><td>Apellido:</td><td>” . $fila['apellido'] . ”</td></tr>”; echo “<tr><td>Dni:</td><td>” . $fila['dni'] . ”</td></tr>”; ?> Nombre Ainara Apelido Etxeberria Dni 99999999K 58
  • 59. Tipos : Array ● Matrices (Array) : Array multidimensional <?php $apuntados = array( “enero”=>array(“mikel”,”ainhoa”,”ane”), ”febrero”=>array(“ainara”,”eneko”), .... ,”diciembre”=>0); ?> Índice “enero” “febrero” .... “diciembre” Valor “mikel “ainara” “ainhoa” “eneko” “ane” 59
  • 60. Tipos : Array ● Matrices (Array) : Array multidimensional <?php $apuntados = array( “enero”=>array(“mikel”,”ainhoa”,”ane”), ”febrero”=>array(“ainara”,”eneko”), .... ,”diciembre”=>0); echo $apuntados[“enero”][1]; ainhoa echo $apuntados[“febrero”][0]; ainara echo $apuntados[“diciembre”]; 0 ?> 60
  • 61. Tipos : Array ● Matrices (Array) : Array multidimensional <?php ... echo “<pre>”; print_r ($apuntados); echo “</pre>”; Array ( [enero] => Array ( [0] => mikel [1] => ainhoa [2] => ane ) [febrero] => Array ( [0] => ainara .... [diciembre] => 0 ) 61 ?>
  • 62. Operadores de matrices ● Operadores Operacion Nombre Resultados $a + $b Unión Unión de $a y $b. $a == $b Igualdad TRUE si $a y $b tienen las mismas parejas llave/valor. $a === $b Identidad TRUE si $a y $b tienen las mismas parejas llave/valor en el mismo orden y de los mismos tipos. $a!=$b No-igualdad TRUE si $a no es igual a $b. $a <> $b No-igualdad TRUE si $a no es igual a $b. $a !== $b No-identidad TRUE si $a no es idéntico a $b. 62
  • 63. Tipos : NULL ● Variable que no tiene valor ● Posibles valor : null || NULL <?php $var =null; ?> 63
  • 64. Tipos : Resource ● Contiene una referencia a un recurso externo ● Los recursos son usados por funciones especiales – Algunos recursos : mysql, ldap,gd ... – Mysql : ● Recurso : mysql link ● Crear recurso : $con = mysql_connect('host' ...) ● mysql_query(“SELECT ...”, $con); ● .... 64
  • 65. Variables predefinidas ● Variables del servidor – $_SERVER ● PHP_SELF ● SERVER_ADDR ● SERVER_ADDR ● DOCUMENT_ROOT ● QUERY_STRING ● REMOTE_ADDR ● HTTP_HOST ● ... [http://es2.php.net/reserved.variables] 65
  • 66. Constantes ● Definición de constantes – define($nombre,$valor) – $nombre (string) : nombre de la constante – $valor : Valor de la constante <?php define("const1","primera constante"); define("MAX",10); echo MAX; 10 echo const1 primera constante ?> 66
  • 67. Estructuras de control ● Controlar la ejecución de instrucciones ● Decidir en tiempo de ejecución que sentencias ejecutar u omitir ● Crear bloques repetitivos ● En tiempo de ejecución / contexto 67
  • 68. Estructuras de control : IF ● Permite la ejecución condicional de sentencias ● Si la condición se cumple en tiempo de ejecución : se ejecuta un bloque de código predeterminado <?php if (expr)     sentencia ?>  ● Las tabulaciones no son necesarias pero si 68 recomendables para la legibilidad el código
  • 69. Estructuras de control : IF ● expr : “cualquier cosa que tiene un valor” <?php $a = 5;  ?>  – Los literales son expresiones – '5' es una expresión con el valor 5 – Las variables son expresiones – $a es una expresión con el valor 5 69
  • 70. Estructuras de control : IF ● expr : “cualquier cosa que tiene un valor” – Las comparaciones son una expresion con valores booleanos (true o false ) (verdadero o falso) <?php $a = 10; if ( $a > 0 ) echo “a es mayor que cero”; ?>  – $a > 0 es una expresión con valor TRUE 70
  • 71. Estructuras de control : IF ● expr se evalúa a su valor condicional (boolean) – Si la expresión se evalúa como true se ejecuta la sentencia – Si la expresión se evalúa como false no se ejecuta la sentencia <?php $a = 10; if ($a > 0)     print "a es mayor que 0"; if ($a) print “a es diferente a 0”; ?>  71
  • 72. Operadores de comparación ● Operadores Operacion Nombre Resultados $a == $b Igual TRUE si $a es igual a $b. $a === $b Idéntico TRUE si $a es igual a $b, y son del mismo tipo. $a != $b Diferente TRUE si $a no es igual a $b. $a <> $b Diferente TRUE si $a no es igual a $b. $a !== $b No idénticos TRUE si $a no es igual a $b.TRUE si $a no es igual a $b, o si no son del mismo tipo. $a < $b Menor que TRUE si $a es escrictamente menor que $b. $a > $b Mayor que TRUE si $a es estrictamente mayor que $b. $a <= $b Menor o igual que TRUE si $a es menor o igual que $b. $a >= $b Mayor o igual que TRUE si $a es mayor o igual que $b. 72
  • 73. Operadores de comparación ● Las expresiones de comparación siempre devuelven un valor boolean <?php $a = 5; $b = 0; $c = "0"; var_dump($a>$b);   //bool(true) var_dump($a<$b);   //bool(false) var_dump($a>$c);   //bool(true) var_dump($b==$c);  //bool(true) var_dump($b===$c); //bool(false) var_dump($b!=$c);  //bool(false) var_dump($b!==$c); //bool(true) var_dump($b<>$c);  //bool(false) var_dump($a>=$b);  //bool(true) ?>  73
  • 74. Estructuras de control : IF ● Comparación <?php $a = 5; $c = "0"; if($a>0) echo “a es mayor que cero”; if($c==0) echo “c es igual a cero” if($_SERVER['HTTP_USER_AGENT']=='MSIE') echo “<link rel='stylesheet' type='text/css'”   .“href='style_ie.css'/> if ($_SERVER['HTTP_USER_AGENT']=='Firefox') echo “<link rel='stylesheet' type='text/css'”  .”href='style_firefox.css'/>”; 74 ?>
  • 75. Estructuras de control : IF ● If : Bloques – Podemos agrupar bloque de instrucciones mediante { } <?php if ($usuario != null ) {    echo “<span class='datos'>$nombre</span>”; echo “<span class='datos'>$apellido</span>”; echo “<span class='datos'>$telefono</span>”; } ?> 75
  • 76. Estructuras de control : IF ● If : Anidar condiciones – Podemos anidar indefinidamente condiciones <?php if ($usuario != null ) {    echo “<span class='datos'>$nombre</span>”; echo “<span class='datos'>$apellido</span>”; echo “<span class='datos'>$telefono</span>”; if($telefono2 != null){ echo “<span class='datos'>$telefono2</span>”; } } ?> 76
  • 77. Estructuras de control : IF ● If : Condiciones de múltiples expresiones – Operadores lógicos <?php if ( $edad < 18 ) {    ... } if ( $edad >= 18 and $edad <=35 ){ //Solo si se cumplen ...   // las dos condiciones } if ( $edad > 35 and $edad <= 60){  //Solo si se cumplen ...   // las dos condiciones } ?> 77
  • 78. Estructuras de control : IF ● If : Condiciones de múltiples expresiones <?php if ( $annos<18 or ($annos == 18 and  $mesNacimiento < $mesActual)) {    ... } if ( $result!=null and ($numResult > 100 or $pagina=0)){ ... } ?> 78
  • 79. Estructuras de control : IF ... ELSE ● else : Ejecutar sentencias en caso de que la expresión evaluada en el if sea igual a false <?php echo “<link rel='stylesheet' type='text/css'”; if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) {    echo “ href='style_explorer.css'/>”; } else{  echo “ href='style_firefox.css'/>”; } ?>  79
  • 80. Estructuras de control : ELSEIF ● elseif : combinación if y else – Se ejecuta si if = false y se da otra condición nueva <?php echo “<link rel='stylesheet' type='text/css'”; if ($_SERVER['HTTP_USER_AGENT']=='MSIE' ) {    echo “ href='style_explorer.css'/>”; } elseif ($_SERVER['HTTP_USER_AGENT']=='SAFARI'){  echo “ href='style_safari.css'/>”; } else{  echo “ href='style_firefox.css'/>”; } ?> 80
  • 81. Estructuras de control : ELSEIF ● elseif : No hay limite de sentencias elseif – Solo una se ejecuta <?php if ($opcion==1 ) {    ... } elseif ($opcion==2){ //Si se da la condición, se ejecuta  ...  //el bloque y se sale de la estructura } elseif ($opcion==3){ ... } else{ //Si no se da ninguna condición anterior ... //Se ejecuta el bloque else } ?>  81
  • 82. Estructuras de control : SWITCH ● switch : Comparar la misma variable – Similar a bloque if – elseif – else ( != 1 variable) <?php switch ($i) {     case 0: echo "i = 0"; break;     case 1: echo "i = 1"; break;     case 2: echo "i = 2"; break; } ?> 82
  • 83. Estructuras de control : SWITCH ● switch : sentencia break – Las sentencias se empiezan a ejecutar desde una sentencia case que se cumpla hasta el final del switch o hasta una sentencia break <?php <?php $i=1; $i=1; switch ($i) { switch ($i) {     case 0:     case 0: echo "i = 0"; echo "i = 0"; break;     case 1:     case 1: echo "i = 1"; echo "i = 1";     case 2: break; echo "i = 2";     case 2: } echo "i = 2"; ?> break; } i=1i=2 ?> i=1  83
  • 84. Estructuras de control : SWITCH ● switch : caso default – ~ else : En caso de que no se cumpla ningún 'case' <?php $i=1; switch ($i) {     case 0: echo "i = 0"; break;     case 1: echo "i = 1"; break;     case 2: echo "i = 2"; break; default: ... } ?> 84
  • 85. Estructuras de control : Bucles ● Estructuras repetitivas ● El código se ejecuta mientras se de una condición ● Diferentes tipos de bucles ● Diferentes sentencias 85
  • 86. Estructuras de control : Bucles ● while – Tipo mas simple – while (expr) sentencia – Si la condición nunca obtiene el valor false ● Bucle infinito !!! – Múltiples sentencias : { } <?php $i=0; while($i<10){ echo $i; $i=$i+1; } ?> 86
  • 87. Estructuras de control : Bucles ● while <?php $valorMax=10; $valorMin=1; $aux=$valorMin; while( $aux <= $valorMax ){ echo “<input type='radio' name='vota' value='$aux'/>$auxn”; $aux=$aux+1; } $cont=0; while(!empty($imagenes[$cont])){     echo “<img src='{$imagenes[$cont]}'/>”;     $cont++; } ?> 87
  • 88. Estructuras de control : Bucles ● do .. while – Similar a while : La condición se evalúa al final <?php  $i = 0; do {      print $i; } while ($i>0); ?> 88
  • 89. Estructuras de control : Bucles ● For – for (expr1 ; expr2 ; expr3 ) sentencia ● expr1 : Se ejecuta una sola vez al comienzo del bucle ● expr2 : Se evalúa en el comienzo de cada iteración – true : el bucle continua ejecutándose – false : termina la ejecución del bucle ● expr3 : Se ejecuta al final de cada iteración <?php for ($i=1;$i<=10;$i++){ echo “<input type='radio' name='vota' value='$i'/>$in”; } ?> 89
  • 90. Estructuras de control : Bucles ● For <?php echo “<table”>; for ($i=0;$i<$maxUsuarios;$i++){ echo “<tr>”; echo “<td>{$usuario[$i]['nombre']}</td>”; echo “<td>{$usuario[$i]['apellido']}</td>”; echo “<td>{$usuario[$i]['dni']}</td>”; echo “</tr>”; } echo “</table>”; ?> 90
  • 91. Estructuras de control : Bucles ● Foreach – Fácil iteración sobre matrices ● foreach(expresion_array as $value) sentencia ● foreach(expresion_array as $key => $value) sentencia <?php $arUsuarios = array(“jon”,”ainara”,”mikel”,”ane”); foreach($arUsuarios as $usuario){ echo “<a href='editar.php?usuario=$usuario'>$usuario</a>n”; } <a href='editar.php?usuario=jon'>jon</a> <a href='editar.php?usuario=ainara'>ainara</a> <a href='editar.php?usuario=mikel'>mikel</a> <a href='editar.php?usuario=ane'>ane</a> ?> 91
  • 92. Estructuras de control : Bucles ● Foreach <?php $usuario = array(“Nombre”=>“jon”,   ”Fecha de nacimiento”=>”1982-10-25”   “Dirección”=>”francia 4”); foreach($usuario as $dato=>$valor){ echo “$dato : $valor <br/>“; } ?> Nombre : Jon Fecha de nacimiento : 1982-10-25 Dirección : francia 4 92
  • 93. Estructuras de control : Bucles ● Foreach <?php $arUsuarios = array(   “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”),   “22222222”=>array(”ainara”,”1967-06-22”,”Bilbo”),   “33333333”=>array(“mikel”,”1983-05-04”,”Donostia”) ); echo “<table border='2'>”; foreach($arUsuarios as $dni=>$arUsuario){ echo “<tr>”; foreach($arUsuario as $datosUsuario){ echo “<td>$datosUsuario</td>”; } echo “</tr>”; } echo “</table>”; ?> 93
  • 94. Estructuras de control : break ● break : sentencia para salir del bucle <?php $arUsuarios = array(   “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”,”admin”),   “22222222”=>array(”ainara”,”1967-06-22”,”Bilbo”,”admin”), ...      “44444444”=>array(“ane”,”1983-05-04”,”Bilbo”,”desarrollo”) ); foreach($arUsuarios as $dni=>$arUsuario){ if($arUsuario[3]==”desarrollo”){ break; } echo “<tr><td>$dni</td>”; foreach($arUsuario as $datosUsuario){ echo “<td>$datosUsuario</td>”; } echo “</tr>”; } echo “</table>”; ?> 94
  • 95. Estructuras de control : continue ● continue : sentencia para terminar iteración <?php $arUsuarios = array(  “11111111”=>array(“jon”,”1975-10-22”,”Gasteiz”,”admin”),   “22222222”=>array(”ane”,”1967-06-22”,”Bilbo”,”desarrollo”), ...     “44444444”=>array(“ana”,”1983-05-04”,”Bilbo”,”desarrollo”) ); foreach($arUsuarios as $dni=>$arUsuario){ if($arUsuario[3]==”desarrollo”){ continue; } echo “<tr><td>$dni</td>”; foreach($arUsuario as $datosUsuario){ echo “<td>$datosUsuario</td>”; } echo “</tr>”; } echo “</table>”; ?> 95
  • 96. Estructuras de control ● Sintaxis alternativa – if , while , for , switch – abrir llave = dos puntos (:) – cerrar llave = ● endif; endwhile; endfor; endswitch; <?php if($a==5):?> <p>A es igual a 5</p> <?php endif;?> <?php for($i=0;$i<10;$i++): echo “<input type='radio' name='vot' value='$i'/>$i”; endfor; ?> 96
  • 97. Incluir código de ficheros externos ● Include y require – Funciones para incluir otros ficheros – include ([ruta]nombre fichero); – require ([ruta] nombre fichero); ● Si no se encuentra el fichero – Include produce un warning (el script continua) – Require produce un error fatal (el script NO notinua) <?php include('cabecera.php'); ... 97 include('pie.php');  ?>
  • 98. Incluir código de ficheros externos ● Include y require – El código se inserta en el lugar donde se encuentra la instrucción include/require <?php <?php $apuntados = 3; define(“MAX”,10); echo MAX - $apuntados.”<br/”>; ?> include("constantes.php"); echo MAX - $apuntados; ?> -3 7 98
  • 99. Incluir código de ficheros externos ● Include y require – Si los ficheros no están al mismo nivel : ruta – Podemos incluir desde url /var/www/cursos/apuntados/ /var/www/cursos/include/ <?php <?php $apuntados = 3; echo MAX - $apuntados.”<br/”>; define(“MAX”,10); include("../include/constantes.php"); ?> echo MAX - $apuntados; ?> -3 7 99
  • 100. Incluir código de ficheros externos ● Include_once y require_once – Mismo funcionamiento que include y require – Pero si el fichero ha sido evaluado e incluido no vuelve a incluirse <?php //constante.php $apuntados = 3; <?php echo MAX - $apuntados.”<br/”>; include(“funciones.php”); include("constantes.php"); include(“funciones.php”); define(“MAX”,10); ?> echo MAX - $apuntados; ?> Fatal error: Cannot redeclare funcion() (previously declared in ... ) 100
  • 101. Funciones ● No repetir código ● Divide y vencerás ● Funciones especificas ● Funciones variables mediante parámetros ● El código no se ejecuta hasta la llamada a la función ● Funciones definidas por el usuario ● Funciones predefinidas (API) 101
  • 102. Funciones ● Funciones : definición y llamada – Definición: function nombreDeFuncion (parametros){ cuerpo de función } – Llamada nombreDeFuncion($parametro); 102
  • 103. Funciones ● Funciones : definición y llamada <?php function bienvenida(){ echo “hola mundo!”; } bienvenida(); bienvenida(); echo “<br/>”; bienvenida(); hola mundo!hola mundo! hola mundo! ?> 103
  • 104. Funciones ● Funciones : en ficheros externos <?php <?php require_once(“funciones.php”); function bienvenida(){ echo “Bienvenido”; bienvenida(); } echo “<br/>”; despedida(); function despedida(){ echo “Gracias por su visita”; } ?> ?> Bienvenido Gracias por su visita 104
  • 105. Funciones ● Funciones : parámetros – Podemos pasarle variables a las funciones – Lista de variables separadas por comas – Los parámetros han de definirse al definir la función – Si se definen parámetros, hay que pasarle variables a la función en la llamada <?php function suma($num1,$num2){ echo $num1 + $num2; } suma(14,6); //20 suma(34,5615); //5649 suma(2); //Warning ... 105 ?>
  • 106. Funciones ● Funciones : parámetros <?php <?php require_once(“funciones.php”); function bienvenida($nombre){ $usuario1 = “jon”; echo “Bienvenido $nombre”; $usuario2 = “ainhoa”; } bienvenida($usuario1); function despedida($nom){ echo “<br/>”; echo “Adios $nom”; despedida($usuario1); } echo “<br/>”; bienvenida($usuario2); ?> ?> Bienvenido jon Adios jon Bienvenido ainhoa 106
  • 107. Funciones ● Funciones : parámetros por defecto <?php function asistentes($numero = 0){ echo “han asistido $numero personas”; } $b=45; asistentes(); asistentes(10); asistentes($b); asistentes(24,23,”doce”); ?> 0 10 45 24 107
  • 108. Funciones ● Funciones : ámbito de las variables <?php <?php function suma($a,$b){ function suma($a,$b){ $a = $a + $b; $a = $a + $b; echo $a; echo $a; } } $a=10; $num1=10; $b=5; $num2=5; $c=20; $num3=20; suma($a,$b); suma($a,$b); echo $a; echo $a; suma($a,$c); suma($num1,$num2); echo $a; echo $b; ?> ?> 25 0 10 //nada 30 15 10 //nada 108
  • 109. Funciones ● Funciones : Return – Las funciones pueden devolver un valor mediante la sentencia return – Puede devolverse cualquier tipo de valor – Solo puede devolverse un valor – Podemos devolver múltiples valores dentro de un elemento array por ejemplo <?php function suma($a,$b){ $a = $a + $b; return $a; } $result = suma(23,10); echo $result; // 33 109 ?>
  • 110. Funciones ● Funciones : Return <?php function esPar($num){ <table> return $num % 2 == 0; <tr class='par'> } <td>ane</td> </tr> $usuarios = array(“ane”,”mikel”, <tr class='impar'> ”jon”,”ainhoa”,”roger”); <td>mikel</td> echo “<table>”; </tr> foreach($usuarios as $indice=>$usuario){ <tr class='par'> echo “<tr class=”; if(esPar($indice)){ <td>jon</td> echo “'par'>”; </tr> } <tr class='impar'> else{ <td>ainhoa</td> echo “'impar'>”; </tr> } <tr class='par'> echo “t<td>$usuario</td></tr>”; <td>roger</td> } </tr> echo “</table>”; </table> 110 ?>
  • 111. Funciones ● Funciones : <?php function imprimirTabla($mat){ <table> echo “<table>”; <tr class='par'> foreach($mat as $fila){ <td>mikel</td> echo “<tr>”; <td>millan</td> foreach($fila as $valor){ <td>999999999</td> echo “<td>$valor</td>”; </tr> } <tr class='impar'> echo “</tr>”; <td>jon</td> } <td>guereñu</td> echo “</table>”; <td>686868686</td> } </tr> <tr class='impar'> $usuarios = array( <td>manu</td> array(”mikel”,”millan”,”999999999”), <td>arregi</td> array(”jon”,”guereñu”,”686868686”) <td>12345678</td> array(“manu”,”arregi”,”123456789”)); </tr> </table> imprimirTabla($usuarios); 111 ?>
  • 112. Funciones ● Funciones : Parametros por referencia – Accedemos a la variable por referencia – No se crea una copia, accedemos a la variable original <?php function incrementar(&$val){ $val ++; } $cont=1; echo $cont; incrementar($cont); echo $cont; ?> 1 2 112
  • 113. Funciones predefinidas ● Redireccionar – header() : enviar cabeceras – Redireccionar a otra página <?php if(usuarioValido($usuario){ header(“Location: correcto.php”); } else{ header(“Location: incorrecto.php”); } ?> <?php $dominio = $_SERVER['HTTP_HOST']; if(usuarioValido($usuario){ header(“Location: http://$dominio/usuarios”); } else{ header(“Location: http://$dominio/error”); 113 } ?>
  • 114. Funciones predefinidas ● Redireccionar – header() : No puede haber texto antes de una llamada a header – No puede haber ningun echo, print ... antes de una llamada a header <?php $dominio = $_SERVER['HTTP_HOST']; if(usuarioValido($usuario){ header(“Location: http://$dominio/usuarios”); ERROR } ?> <body> ... <?php ERROR header(“Location: http://$dominio/usuarios”); 114 ?> ?>
  • 115. Funciones predefinidas ● Funciones de variables – printf (string_formateado,$var [,$var]) ● Imprime strings formateados – %% : literal '%' – %b : Integer binario – %c : Integer caracter ASCII – %d : Integer decimal con signo – %e : Notación científica – %u : Integer decimal sin signo – %f : Float numero de coma flotante – %o : Integer octal – %x : Integer hexadedimal 115
  • 116. Funciones predefinidas ● Funciones de variables – printf (string_formateado,$var [,$var]) <?php     $num=126;     printf("decimal num=%d",$num);     printf("binario num=%b",$num);     printf("hexadecimal num=%x",$num);     printf("float num=%f",$num); printf("float num=%.2f",$num);     printf("ascii num=%c",$num); printf("cientifico num=%e",$num); ?> decimal num=126 binario num=1111110 hexadecimal num=7e float num=126.000000 float num=126.00 ascii num=~ cientifico num=1.260000e+2 116
  • 117. Funciones predefinidas ● Funciones de variables – empty ($variable) ● Devuelva si la variable existe o no / si está definida o no – unset ($variable) ● Destruye la variable ● Elimina un elemento de un array ( ¡¡¡no lo reordena!!!) <?php <?php if(!empty($nombreUsuario){ obtenerDatosUsuario($nombreUsuario); unset($cont); } unset($usuarios[$i]); else{ echo “Inserta el nombre de usuario”; ?> } ?> 117
  • 118. Funciones predefinidas ● Funciones de variables – is_tipo($variable) ● Devuelve si la variable es del tipo o no (true || false) ● is_bool() , is_int(), is_float(), is_string(), is_array() ... <?php if(is_int($num)){ printf(“El valor es : %u”,$num); } elseif(is_float($num)){ printf(“El valor es : %.2f”,$num); } else{ printf(“No ha insertado un numero”); } ?> [http://es2.php.net/manual/es/ref.var.php] 118
  • 119. Funciones predefinidas ● Funciones matemáticas – floor($float) : devuelve el siguiente integer mas pequeño – rand($int_min,$int_max) : genera un numero aleatorio – sqrt($float) : raiz cuadrada – pow($base,$exp) : potencia – sin($float) : seno – cos($float) : coseno – tan($float) : tangente – ... [http://es2.php.net/manual/es/ref.math.php] 119
  • 120. Funciones predefinidas ● Funciones matemáticas <?php $num1 = 18; $num2 = 5; $div=round($num1/$num2); //3 $resto=$num1 % num2; //3 $num1=9; $raiz = sqrt($num1); //3 $x = 0; $y = 0; $senoX = sin($x); //0 $cosenoY = cos($y); //1 $aleatorio = rand(10,500); //324 ?> 120
  • 121. Funciones predefinidas ● Funciones de cadenas (no codificación) – strlen ($cadena) : devuelve el número de caracteres – strpos ($pajar,$aguja) : Devuelve la posición de la primera ocurrencia de $aguja en $pajar – stripos ~ strpos (stripos : indiferente a mayus – minus) – strtolower ($cadena) : devuelve la cadena en minusculas – strtoupper ($cadena) : devuelve la cadena en mayusculas – trim ($cadena) : elimina espacios en blanco en principo y fin de cadena – str_replace ($cad,$sus,$orig) : sustituye todas las apariciones de $cad por $sus en $orig – explode ($separador,$cadena) : divide $cadena en trozos separados por $separador y devuelve un array con los trozos 121
  • 122. Funciones predefinidas ● Funciones de cadenas (no codificación) <?php <?php $cadena = "hola soy una cadena"; echo strlen($cadena); $cadena = "   tengo   espacios   "; 19 echo trim($cadena); tengo espacios $cadena = "hola soy una cádena"; echo strlen($cadena); $cad = "soy una cadena"; 20 str_replace("cadena","cadenita",$cad); hola soy una cadenita $cadena = "hola soy una cadena"; echo strpos($cadena,"soy"); print_r(explode(" ",$cadena)); 5 Array $cadena = "Hola Soy Una Cadena"; ( echo strtolower($cadena);     [0] => hola hola soy una cadena     [1] => soy     [2] => una echo strtoupper($cadena);     [3] => cadena HOLA SOY UNA CADENA ) ?> ?> 122
  • 123. Funciones predefinidas ● Funciones de cadenas (codificadas) – Operan sobre cadenas codificadas en UTF-8,ISO-8859 ... – Podemos especificar la codificación en las funciones – Podemos establecer una codificación por defecto ● mb_internal_encoding ("UTF-8"); ● mb_internal_encoding() : muestra la codificación interna <?php echo mb_internal_encoding (); //ISO-8859-1 echo mb_strlen ( "camión") ; //7 mb_internal_encoding ("UTF-8");  echo mb_internal_encoding (); //UTF-8 echo mb_strlen ( "camión") ; //6 ?> 123
  • 124. Funciones predefinidas ● Funciones de cadenas (codificadas) – mb_strlen ($cadena,[$cod]) : Número de caracteres – mb_strpos ($pajar,$aguja) : Posición de la primera ocurrencia de $aguja en $pajar – mb_stripos ~ mb_strpos (stripos : indiferente a mayus – minus) – mb_strtolower ($cadena) : devuelve la cadena en minúsculas – mb_strtoupper ($cadena) : devuelve la cadena en mayúsculas – mb_ereg_replace ($patron,$sus,$orig) : sustituye todas las apariciones de $patron por $sus en $orig – mb_split ($patron,$cadena) : divide $cadena en trozos separados por $patron y devuelve un array con los trozos 124
  • 125. Funciones predefinidas ● Funciones de cadenas (codificadas) <?php <?php mb_internal_encoding ("UTF-8"); mb_internal_encoding ("UTF-8"); $cadena = "Ahí está mi camión"; $cad = "soy una cadena"; echo mb_strlen($cadena); mb_ereg_replace("soy","era",$cad); 18 era una cadena $cadena = "Ahí está mi camión"; $cadena = "hola soy una cadena"; echo mb_strpos($cadena,"soy"); print_r(mb_split(" ",$cadena)); 5 Array $cadena = "Ahí Está Mi Camión"; ( echo mb_strtolower($cadena);     [0] => Ahí ahí está mi camión     [1] => está     [2] => mi echo mb_strtoupper($cadena);     [3] => camión AHí ESTá MI CAMIóN ) ?> ?> 125
  • 126. Funciones predefinidas ● Funciones de arrays – count ($array) : devuelve el numero de elementos del array – asort ($array) : ordena $array utilizando los valores menor-mayor – arsort ($array) : ordena $array utilizando los valores mayor-menor – ksort ($array) : ~ asort pero utilizando las claves – krsort ($array) : ~ arsort pero utilizando las claves – array_keys ($array) : devuelve un array con las claves – array_values ($array) : devuelve un array con los valores 126
  • 127. Funciones predefinidas ● Funciones de arrays – in_array ($aguga,$array) : devuelve true si aguja está en $array – array_search($aguja,$array) : Busca $aguja en $array y si lo encuentra devuelve su clave (si no, false) – implode ($separador,$array) : Devuelve una cadena con todos los elementos del array separados por el separador – list ($var1,...,$varN) : Crea variables a partir de un array 127
  • 128. Funciones predefinidas ● Funciones de arrays <?php – <?php $usuarios=array("mikel","ane", $usuarios=array( "eneko","manu"); "99999999"=>"mikel", echo count($usuarios); "34343434"=>"ane", 4 "12121212"=>"eneko", "76677667"=>"manu"); asort($usuarios); print_r($usuarios); echo count($usuarios); 4 $Array krsort($usuarios); ( print_r($usuarios);     [1] => ane     [2] => eneko Array     [3] => manu (     [0] => mikel     [99999999] => mikel )     [76677667] => manu     [34343434] => ane     [12121212] => eneko ) ?> ?> 128
  • 129. Funciones predefinidas ● Funciones de arrays – <?php $usuarios=array(“99999999"=>"mikel", "34343434"=>"ane",  "12121212"=>"eneko","76677667"=>"manu"); $dnis=array_keys($usuarios); print_r($dnis); Array (     [0] => 99999999     [1] => 34343434     [2] => 12121212     [3] => 76677667 ) $cad_dni = implode(“, “,$dnis); echo $cad_dni; 99999999, 34343434, 12121212, 76677667 ?> 129
  • 130. Funciones predefinidas ● Funciones de arrays <?php $usuarios=array("99999999"=>"mikel","34343434"=>"ane",  "12121212"=>"eneko","76677667"=>"manu"); $usuario = “eneko”; if(in_array($usuario,$usuarios)){ echo “El usuario $usuario está en la lista.”; } else{ echo “El usuario $usuario no está en la lista”; } if($pos=array_search($usuario,$usuarios)){ unset($usuarios[$pos]); } ?> 130
  • 131. Accediendo a DB : MySQL ● MySQL – Servidor de Bases de Datos – Almacenaje de datos en bruto – Cada BD es independiente – Las BD tienen tablas – Tablas tiene registros (filas + columnas) BD : blog Tabla : usuario Tabla : accesos id user pass id user acceso 1 mikel 12321 1 1 10/01/09 2 ainhoa 32343 2 1 05/03/09 131
  • 132. Accediendo a DB : MySQL ● MySQL : Gestionando mysql con phpmyadmin – Crear/eliminar/editar ... BD, tablas, registros, usuarios ... 132
  • 133. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Obteniendo datos de tablas – Obtener todos los datos de una tabla (tabla usuario) SELECT * FROM usuario – Obtener una columna de una tabla SELECT nombre FROM usuario – Obtener mas de un campo de una tabla SELECT nombre,apellido,dni FROM usuario 133
  • 134. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Obteniendo datos de tablas (II) – Condiciones SELECT * FROM usuario WHERE edad>18 – SELECT * FROM usuario WHERE nombre = “ane” – SELECT * FROM usuario WHERE nombre LIKE “%ana%” 134
  • 135. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Insertando datos en tablas – INSERT INTO usuario(nombre,pass) VALUES (“mikel”,”123”) – INSERT INTO usuario (nombre) VALUES (“mikel”) – INSERT INTO usuario(id,pass) VALUES (“1”,”123”) 135
  • 136. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Actualizando datos de tablas – UPDATE usuario SET pass=”1010” WHERE nombre =”ane” – UPDATE usuario SET pass=”0000” WHERE nombre LIKE “a%” – UPDATE usuario SET pass=”0000” AND nombre=”jon” WHERE id=”1” 136
  • 137. Accediendo a DB : MySQL ● MySQL : SLQ (Structured Query Language) ● Consultas : Eliminando datos de tablas – DELETE FROM usuario WHERE id=”2” – DELETE FROM usuario WHERE nombre LIKE “%a” – DELETE FROM usuario WHERE pass =”” OR pass=”0000” 137
  • 138. Accediendo a DB : MySQL ● Acceder al servidor de BD MySQL ● Funciones mysql: – http://es.php.net/manual/es/ref.mysql.php – Crear , eliminar, modificar, obtener ... – BD, tablas, usuarios, privilegios ... ● Tipo recurso ( referencia a recurso externo ) ● mysql_connect($hostname,$usuario,$password) – devuelve un identificador de enlace o false – $hostname ~ host[:puerto] 138
  • 139. Accediendo a DB : MySQL ● Crear / Abrir la conexión – mysql_connect ($hostname,$usuario,$password) – Si no hay problemas devuelve el enlace – El enlace se cerrara automáticamente al finalizar el script o mediante la función mysql_close($link) <?php $con = mysql_connect(“localhost”,”user”,”pass”)  or die(“No se pudo abrir la conexión:” . mysql_error()); if($con){ echo “Conexión exitosa”; } ?> 139
  • 140. Accediendo a DB : MySQL ● Cerrar la conexión – mysql_close ($link) <?php $con = mysql_connect(“localhost”,”user”,”pass”)  or die(“No se pudo abrir la conexión:” . mysql_error()); ... mysql_close($con); ?> 140
  • 141. Accediendo a DB : MySQL ● Seleccionar BD – mysql_select_db($dbname,[$link]); – Devuelve true o false <?php $con = mysql_connect(“localhost”,”user”,”pass”)  or die(“No se pudo abrir la conexión:” . mysql_error()); if (mysql_select_db(“usuarios”,$con)){ ... } else{ echo “no se pudo seleccionar la base de datos”); } mysql_close($con); ?> 141
  • 142. Accediendo a DB : MySQL ● Realizar consultas – mysql_db_query($link) – Crear, eliminar, modificar ... ● BD, tablas, permisos, registros ... – Valores retornados ● SELECT,SHOW,DESCRIBE,EXPLAIN : resource ● INSERT,UPDATE,DELETE,DROP ... : true o false 142
  • 143. Accediendo a DB : MySQL ● Consultas sin retorno de valor <?php $con = mysql_connect(“localhost”,”user”,”pass”); $SQL = “CREATE DATABASE prueba”; if( mysql_query($SQL)){ echo “BD creada con exito”;} $SQL = “CREATE TABLE prueba (user VARCHAR(10),pass VARCHAR(10))”; if(mysql_query($SQL)){ echo “Tabla creada con exito”;} $SQL= "INSERT INTO prueba(user,pass) VALUES('usuario1','pass1')"; if(mysql_query($SQL)){ echo “Se insertaron los datos con exito”;} $SQL =”DELETE FROM prueba WHERE user='usuario1'”; if(mysql_query($SQL)){ echo “Registro eliminado con exito”;} mysql_close($con); ?> 143
  • 144. Accediendo a DB : MySQL ● Consultas con retorno de valor – Valores en una variable tipo recurso – Funciones para tratar los valores retornados – mysql_fecth_assoc ($RS) ● $RS : El valor retornado por mysql_query ● Devuelve una matriz asociativa ● Claves = nombres de las columnas 144
  • 145. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_assoc <?php $con = mysql_connect(“localhost”,”user”,”pass”); mysql_select_db("prueba",$con); $SQL = "SELECT * FROM prueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_assoc($RS)){ echo “Usuario : ”.$fila['user']; echo “Pass : ”.$fila['pass']; } ?> 145
  • 146. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_row($RS) ● $RS : El valor retornado por mysql_query ● Devuelve una matriz numérica ● Claves = enteros empezando por 0 146
  • 147. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_row <?php 0 = usuario1 $con = mysql_connect(“localhost”,”user”,”pass”); 1 = pass1 0 = usuario2 mysql_select_db("prueba",$con); 1 = pass2 ... $SQL = "SELECT * FROM prueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_row($RS)){ foreach($fila as $clave=>$valor){ echo “$clave = $valor”; } } ?> 147
  • 148. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_array ($RS,[$tipo]) ● $RS : El valor retornado por mysql_query ● Devuelve una matriz asociativa, numérica o ambas ● Por defecto : ambas ● $tipo : constante que puede tener los siguientes valores – MYSQL_ASSOC – MYSQL_NUM – MYSQL_BOTH 148
  • 149. Accediendo a DB : MySQL ● Consultas con retorno de valor – mysql_fetch_array <?php 0 = usuario1 $con = mysql_connect(“localhost”,”user”,”pass”); name = usuario1 1 = pass1 mysql_select_db("prueba",$con); pass = pass1 0 = usuario2 $SQL = "SELECT * FROM prueba"; name = usuario2 1 = pass2 $RS=mysql_query($SQL); ... while($fila=mysql_fetch_array($RS)){ foreach($fila as $clave=>$valor){ echo “$clave = $valor”; } } ?> 149
  • 150. Accediendo a DB : MySQL ● Errores – mysql_error ($link) ● Devuelve el texto del mensaje de error de la última operación MySQL ● Si no ocurrió error : “” (cadena vacía) <?php $con = mysql_connect(“localhost”,”user”,”pass”); if(!mysql_select_db("pruebaaaa",$con)){ echo mysql_error(); } ?> Unknown database 'pruebaaaa' 150
  • 151. Cookies ● Pequeños ficheros que se escriben en el ordenador del cliente ● Contienen información que las páginas que las han escrito pueden recuperar y utilizar ● Se puede establecer el tiempo que el ordenador del usuario guardará el fichero ● Idioma,temas,ultimo acceso ... 151
  • 152. Cookies ● Creación de cookie – setcookie($nombre[,$valor][,$expire][,$path] [,$dominio][,$secure][,$httponly]) ● $nombre (string) : Nombre de la cookie ● $valor (string ) : Valor de la cookie ● $expire (int ) : Tiempo de caducidad (time()+60*60*24*30 : 30 dias) ● $path (string) : ruta en el servidor ● $dominio (string ) : dominio ● $secure (bool) : indica si solo será accesible mediante https ● $httponly (bool) : accesible solo mediante http 152
  • 153. Cookies ● Obtención de cookie – $_COOKIE[$nombreCookie] <?php //Establecer cookie $caducidad = time()*60*60*24*365; setcookie(“idioma”,$idiomaSeleccionado,$caducidad); ?> <?php //Obtener cookie $idiomaPreferido = $_COOKIE[“idioma”]; ?> 153
  • 154. Sesiones ● Mecanismo para preservar datos a lo largo de accesos posteriores ● Almacena información en el servidor accesible a través de diferentes scripts ● La información se guarda en variables de sesión 154
  • 155. Sesiones ● Iniciar sesión – session_start() : antes de cualquier etiqueta html ● Crear variable de sesión – $_SESSION ['nombre'] = $valor; ● Recuperar variable de sesión – $variable = $_SESSION ['nombre']; 155
  • 156. Sesiones <?php session_start(); if(usuarioValido($usuario)){ $_SESSION['valido']=true; } .... ?> <?php session_start(); if(!empty($_SESSION['valido'] and $_SESSION['valido']==true)){ ... } else{ header(“Location : login.php?error=true”); } ?> 156
  • 157. Sesiones ● Funciones – session_start : inicia la sesión – session_destroy : destruye los datos de sesión – session_unset : elimina todas las variables de sesion – session_cache_expire : Devuelve/establece la caducidad actual del caché [http://es2.php.net/manual/es/ref.session.php] 157
  • 158. Ficheros y directorios ● Ficheros – abrir fichero : fopen ($fichero,$modo) ● $fichero (string ) : ruta + nombre de fichero ● $modo (string ) : – a : Añadir datos al final del fichero. Si no existe, se crea – a+ : Añadir datos al final del fichero y leer datos. Si no existe, se crea. – r : Solo lectura – r+ : Lectura y escritura. Se añade al principio del fichero – w : Escritura. Todo el contenido será borrado. Si no existe, se crea. – w+ : Lectura y escritura. Todo el contenido será borrado. Si no existe se crea. 158
  • 159. Ficheros y directorios ● Ficheros – abrir fichero : fopen ($fichero,$modo) <?php $fichero = “files/salida.txt”; if (fopen($fichero,'a+')) {     echo (“El fichero se ha abierto con exito.”); } else{     echo (“Error : no se a podido abrir el fichero”); } ?> 159
  • 160. Ficheros y directorios ● Ficheros – Leer desde fichero : fgets($fichero,$longitud) – Lee una linea de $longitud - 1 bytes – feof($fichero) : verifica si el apuntador del fichero está al final del mismo <?php $fichero = fopen("datos.txt", "r"); if ($fichero) {     while (!feof($fichero)) {         $bufer = fgets($fichero);         echo $bufer;     }     fclose ($fichero); } ?> 160
  • 161. Ficheros y directorios ● Ficheros – Escribir en fichero : fwrite($fichero , $cadena [,$longitud] ) – Escribe $cadena – n : nueva linea <?php $fich = fopen("escrito","a+"); fwrite($fich,"hola soy una linean"); fwrite($fich,"hola soy otra linean"); fwrite($fich,"hola soy una:n linea"); ?> hola soy una linea hola soy otra linea hola soy una: linea 161
  • 162. Ficheros y directorios ● Ficheros – Cerrar fichero : fclose ($fichero) <?php $fichero = “files/salida.txt”; if (fopen($fichero,'a+')) {     echo (“El fichero se ha abierto con exito.”); } else{     echo (“Error : no se a podido abrir el fichero”); } if(fclose($fichero)){ echo “el fichero se ha cerrado correctamente”; } ?> [http://es2.php.net/manual/es/ref.filesystem.php] 162
  • 163. Ficheros y directorios ● Ficheros – Subir ficheros al servidor <html> ... <form action=”upload.php” enctype=”multipart/form-data”   method=”post> <input type=”file” name=”fich”/> <?php $dir=”public/files/”; copy($_FILES['fich']['tmp_name'],$dir.$_FILES['fich']['name']); [name] => fichero.pdf [type] => application/pdf [tmp_name] => tmp/php/phpJbTkgB [error] => 0 [size] => 450307 163 ?>
  • 164. Ficheros y directorios ● Directorios – Abrir directorio : opendir($ruta) ● Devuelve un recurso ($gestor) – Leer directorio : readdir($gestor) ● Devuelve el nombre del fichero <?php if($gestor=opendir(“images”)){ while(false!==($fich = readdir($gestor))){ echo “<img src='$fich'/>”; } } ?> [http://es2.php.net/manual/es/book.dir.php] 164
  • 165. Clases y objetos ● Definición de clases – Variables (atributos) y Funciones (métodos) – Las funciones acceden a los atributos – class nombreClase { ... } – $this : accedemos a los atributos y métodos de la clase desde “dentro” de la clase ● $this->name //accede al atributo $name ● $this->imprimir() //accede al método imprimir – Desde fuera de la clase: ● $obj = new MiObjeto(); ● MiObjeto->imprimir(); – Podemos crear tantos objetos (instancias) de la clase como queramos 165
  • 166. Clases y objetos ● <?php class usuario{ private $nombre; private $apellido; public function getNombre(){ return $this->nombre;} public funcion getApellido(){ return $this->apellido;} public function setNombre($nombre){$this->nombre=$nombre;} public function setApellido($ape){$this->apellido=$ape;} } $user = new Usuario(); $user->setNombre(“Jon”); $user->setApellido(“Brown”); $usuario2 = new Usuario(); $usaurio2->setNombre(“Ane”); echo “usuario :”.$usuario2->getNombre(); ?> 166

×