Está en la página 1de 166

PHP

PHP HiperText Preprocesor

Contenidos

Introduccin Sintaxis bsica Variables, tipos y operadores Variables predefinidas Constantes Estructuras de Control Incluir cdigo de ficheros externos Funciones Accediendo a MySQL Cookies Sesiones Ficheros y directorios Clases y Objetos (PHP 5)
2

Introduccin

Que es PHP?

Lenguaje de programacin de alto nivel Empotrado en pginas HTML Ejecutado en servidor Software libre
3

Introduccin (II)

Que puedo hacer con PHP?

Scripts del lado del servidor Scripts en linea de comandos Aplicaciones con interfaz grfica PHP-GTK

Introduccin (III)

Scripts del lado del servidor


Servidor HTML + PHP Cliente Procesa PHP LDAP BD

Genera HTML

...

/
5

Introduccin (III)

Scripts del lado del servidor


Servidor Web : Apache2 HTML + PHP Navegador (Firefox)

Servidor BD: MySQL

Procesa PHP

Genera HTML c:\

Introduccin

Requisitos

PHP5 Servidor Web : apache2 Servidor BD : mysql Editor : netbeans

Todo en 1 : XAMPP (Apache + MySQL + PHP) Netbeans Software libre !!!

Introduccin

Instalacin en windows

XAMPP : http://www.apachefriends.org/es/xampp.html
Installer : Instalacin por defecto : C:\xampp Raiz de documentos : c:\xampp\htdocs Configuracin php : c:\xampp\apache\bin\php.ini Configuracin apache : C:\xampp\apache\conf\httpd.conf Configuracin mysql : C:\xampp\mysql\bin\my.cnf

Navegador : http://localhost MySQL : http://localhost/phpmyadmin


8

Introduccin

Instalacin 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

Introduccin

Instalacin en windows (II)

IDE : Netbeans, Eclipse, Zend Studio NetBeans http://www.netbeans.org/downloads/index.html PHP + Spanish + Windows

10

Introduccin

Primer proyecto php en netbeans


Archivo Proyecto nuevo Categora PHP Proyectos PHP application Project Name Nombre_del_proyecto Sources folder C:\xampp\htdocs\Nombre_del_proyecto Run as Local web site Project URL http://localhost/Nombre_del_proyecto
11

Introduccin

Primer proyecto php en netbeans (II)


Nombre del projecto : PhpProject1

12

Introduccin

Primer proyecto php en netbeans (II)

Ejecutar proyecto: Ejecutar Set project configuration Personalizar

13

Ejecutar proyecto

Sintaxis Bsica (I)


Cdigo PHP empotrado en documentos HTML Instrucciones entre etiquetas:


<?php ... ?> <script language=php> ... </script> <? ... ?> <% ... %> XHTML XML
14

recomendado : <?php .... ?>


Sintaxis Bsica (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>Ttulo de la pgina</title> </head> <body> <?php echo "<p>Estas usando:".$_SERVER['HTTP_USER_AGENT']."</p>"; ?> </body> </html>

15

Sintaxis Bsica (III)

Scripts PHP :

Serie de sentencias / instrucciones Ejecutadas secuencilmente Datos en variables Estructuras de control Funciones Clases (POO)

16

Sintaxis Bsica (IV)

Los espacios/tabulaciones/saltos de linea entre las instrucciones, no afectan al comportamiento

Las siguientes instrucciones tienen el mismo resultado:


echo hola mundo ?> ;?>

<?php <?php <?php

echo hola mundo;

echo hola mundo; ?> <?php echo hola mundo; ?>

17

Sintaxis Bsica (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

Sintaxis Bsica (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/* /* No se puede anidar /* bloques de comentarios*/ */ ?>
Estos comentarios produciran un error 19

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 maysculas/minsculas El nombre de la variable :

Empezar con letra o _ (guin bajo) Contener : letras nmeros _


<?php $1Usuario = mikel; $usuario-2 = ainara; $nmero = 12; $cont 1 = 0; ?> INCORRECTO

<?php $cont=1; $_cont=1; $nombre_usuario=mikel $PESO22_=102g ?> CORRECTO

20

Operadores de Asignacin

Asignacin : =

Permite asignar valores a variables El operando de la izquierda recibe el valor de la expresin de la derecha

<?php $cont = 123; $cont =Hola; $a = ($b = 4) + 5; echo $a; echo $b; ?> 9 4

21

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 ejecucin 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

Variables (III)

Para forzar variables


settype($variable,tipo) Moldear variables (casting) var_dump($variable); print_r($variable) echo printf


23

Mostrar tipo variable

Mostrar contenido variable


Variables (IV)

Mostrar contenido variables : ejemplos


<?php $cont = 123; echo $cont; 123 $mensaje =Pgina en construccin; echo $mensaje; Pgina en construccin echo $cont; echo $mensaje; 123Pgina en construccin ?>

24

Variables (V)

Mostrar contenido variables : Saltos de linea


<?php $cont = 123; $mensaje =Pgina en construccin; echo $cont; echo $mensaje; ?> Fuente HTML : 123Pgina en construccin Navegador: 123Pgina en construccin

25

Variables (VI)

Mostrar contenido variables : Saltos de linea (II)


<?php $cont = 123; $mensaje =Pgina en construccin; echo $cont; echo <br/>; echo $mensaje; ?> Fuente HTML : 123<br/>Pgina en construccin Navegador: 123 Pgina en construccin
26

Variables (VII)

Mostrar contenido variables : Saltos de linea (III)


<?php $cont = 123; $mensaje =Pgina en construccin; echo $cont; echo \n; echo $mensaje; ?> Fuente HTML : 123 Pgina en construccin Navegador: 123Pgina en construccin
27

Pasar datos entre scripts


HTTP : protocolo sin estado El valor de las variables existe durante la vida del script (pgina) Pasar datos entre scripts (pginas)

Formularios Enlaces GET Cookies Sesiones

28

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

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

Tipos

Tipos

Escalares

Enteros Coma flotante Cadenas Booleanos Matrices Objetos

Compuestos

Null Resource
31

Tipos : Enteros

Enteros (Integer)

Nmeros enteros del conjunto Z = {...,-2,1,0,1,2,...} Tamao 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

Tipos : Enteros (II)

Enteros (Integer)
Declarando variables de enteros: <?php $cont = 123;// Un nmero decimal $cont = -123;// Un nmero decimal negativo $cont = 0123;// Un nmero octal $cont = 0x1A;// Un nmero hexadecimal $edadMinima = 18; ?> Desbordamiento de enteros : <?php $numeroGrande = 2147483647; var_dump($numeroGrande);// Devuelve : int(2147483647) $numeroGrande = 2147483648; var_dump($numeroGrande);// Devuelve : float(2147483647) ?>

33

Tipos : Reales

Nmeros de coma flotante (Float)


Nmeros reales Tambin conocidos como doble o real Tamao depende de la plataforma Usual : ~1.8e308

<?php $a = 1.234; $b = 1.2e3; $c = 7E-10; ?>


34

Tipos : Reales (II)

Float : Imprimir variables de tipo float

echo
$num=16.6765464; echo $num; 16.6765464

<?php

?>

printf

<?php $num=16.6765464; printf("el numero es : %.2f ",$num); 16.68 ?>

35

Operadores aritmticos

Podemos realizar operaciones aritmticas

Operacion suma resta multiplicacion division mdulo (resto) negacin

Operador + * / % -

Ejemplo $total = $precio + $iva; $oferta = $total - $descuento; $iva = $precio*0.16; $media = $suma / $total; $resto = $total % 5; $a = 10*-$b;

El operador ' / ' devuelve un valor flotante a menos que los dos operandos sean enteros y los nmeros sean divisibles sin residuos
36

Operadores aritmticos (II)

El orden de ejecucin :

* +

/ -

Izquierda a derecha Parntesis : orden de ejecucin


echo 8%(3*5); // 8 echo 8*(3%5); //24 echo 5 *( 8 % 3); //10 echo 5 %( 8 * 3); // 5

<?php echo (8 % 3 * 5); // 10 echo (8 * 3 % 5); // 4 echo (5 * 8 % 3); // 1 echo (5 % 8 * 3); // 15 ?>

echo ((($a+($b-$c))/$d) % 3); //parntesis de aperture = parntesis de cierre


37

Operadores aritmticos (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

Operadores aritmticos (IV)

Operadores de incremento/decremento :
Operacion Pre-incremento Post-incremento Pre-decremento Post-decremento Ejemplo ++$a $a++ --$a $a-Ejemplo Incrementa $a en uno, y luego devuelve $a. Devuelve $a, y luego incrementa $a en uno. Decrementa $a en uno, luego devuelve $a. Devuelve $a, luego decrementa $a en uno.

<?php $a = 10; $a++; echo $a; //11 $a--; echo $a; // 10 ?>
39

Tipos : Cadenas

Cadenas (String)

Secuencia de caracteres Antes de PHP 6 : un carcter -> un byte 256 tipos de caracteres diferentes Diferentes maneras de especificar Caracteres de escape No hay limite de tamao

40

Tipos : Cadenas

Cadenas (String) : Definicin 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

Tipos : Cadenas

Cadenas (String) : Definicin de cadenas


Comillas dobles : Esto es una cadena Caracteres escapados


\n \t \\ \$ \

: Imprime una linea nueva : Imprime una tabulacin horizontal : Imprime una barra invertida : Imprime un signo de dlar : Imprime una comilla doble

Los nombres de las variables sern expandidos


42

Tipos : Cadenas

Cadenas : Comillas dobles


<?php $nombre = esti; echo Frase con \n tres \n saltos de linea.\n; Frase con tres saltos de linea. $articulo = \tFrase tabulada\nSin tabular; echo $articulo; Frase tabulada Sin Tabular echo Ha seleccionado \5\ 'articulos' ; Ha seleccionado 5 'articulos' ?>
43

\n != <br/>

Tipos : Cadenas

Cadenas : Expansin 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

Tipos : Cadenas

Cadenas : Heredoc

Definir cadenas largas Uso similar a comillas dobles Caracteres de escape Expansin de variables

<?php $cadena = <<<FIN Ejemplo de una cadena que se extiende por varias lneas usando la sintaxis heredoc. FIN; ?>
45

Tipos : Cadenas

Cadenas : Heredoc

Expansin 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

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

Operadores de cadena

Concatenacin

'.'

<?php $cadena = <label class='datos'>.$nombre. .$apellido.</labe>; echo $cadena; <label class='datos'>Esti Goikoetxea</label> //Html : Esti Goikoetxea ?>

Asignacin sobre concatenacin


<?php $cadena = <label class='; ... $cadena.=datos; ... $cadena.='>.$nombre. .$apellido.</label>; ... ?>

' .= '

48

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

Operadores lgicos

Operadores
Operacion $a and $b $a or $b $a xor $b ! $a $a && $b $a || $b Nombre Resultados Y TRUE si tanto $a como $b son TRUE . O TRUE si cualquiera de $a o $b es TRUE . XOR TRUE si $a o $b es TRUE , pero no ambos. No TRUE si $a no es TRUE . Y TRUE si tanto $a como $b son TRUE . O TRUE si cualquiera de $a o $b es TRUE .

50

Tipos : Array

Matrices (Array)

Serie de pares de clave/valor (con un orden) No puede haber claves repetidas Multidimensionales Por defecto : claves numricas 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

Tipos : Array

Matrices (Array) : Definir array

Podemos definir/crear arrays de diferentes maneras

<?php $laborables = array(lunes,martes,mircoles,jueves,viernes); $laborables = array(0=>lunes,1=>martes,2=>mircoles, 3=>jueves,4=>viernes); ?>

De las dos maneras tendramos la siguiente estructura (en una sola variable!)
0 lunes 1 martes 2 3 4 viernes
52

ndice Valor

mircoles jueves

Tipos : Array

Matrices (Array) : Definir array

Podemos especificar los ndices directamente

<?php $festivos[0]=sbado; $festivos[1]=domingo; ?> ndice Valor 0 sbado 1 domingo

Los ndices no tiene por que ser consecutivos


53

Tipos : Array

Matrices (Array) : Definir array

Los ndices numricos no se reordenan

<?php $usuario[0]=ainhoa; $usuario[2]=ane; $usuario[1]=iaki; ?> ndice Valor 0 ainhoa 2 ane 1 iaki

Aunque disponemos de herramientas para hacerlo


54

Tipos : Array

Matrices (Array) : Aadir elementos al array

Podemos aadir elementos al array sin especificar el ndice

<?php $estaciones[0]=invierno; $estaciones[1]=primavera; $estaciones[]=verano; $estaciones[]=otoo; ?>

De esta manera se aadirn 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 otoo
55

Tipos : Array

Matrices (Array) : Acceder a los valores


$laborables = array(lunes,martes,mircoles,jueves,viernes); echo $laborables; Array echo $laborables[2]; mircoles $estaciones[0]=invierno; $estaciones[1]=primavera; $estaciones[]=verano; $estaciones[]=otoo; print_r($estaciones); Array ( [0] => invierno [1] => primavera [2] => verano [3] => otoo )
56

Tipos : Array

Matrices (Array) : Array asociativo

Los ndices no tienen por que ser numricos


$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 ... )

<?php

?>
57

Tipos : Array

Matrices (Array) : Array asociativo

Generalmente con BD => Asociativos


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>;

<?php

?> Nombre Apelido Dni Ainara Etxeberria 99999999K

58

Tipos : Array

Matrices (Array) : Array multidimensional


<?php $apuntados = array( enero=>array(mikel,ainhoa,ane), febrero=>array(ainara,eneko), .... ,diciembre=>0); ?>

ndice Valor

enero
mikel ainhoa ane

febrero .... ainara eneko

diciembre

59

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

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

Operadores de matrices

Operadores
Operacion $a + $b $a == $b $a === $b Nombre Unin Igualdad Identidad Resultados Unin de $a y $b.
TRUE si $a y $b tienen las mismas parejas llave/valor.

$a!=$b $a <> $b $a !== $b

No-igualdad No-igualdad No-identidad

TRUE si $a y $b tienen las mismas parejas llave/valor en el mismo orden y de los mismos tipos. TRUE si $a no es igual a $b. TRUE si $a no es igual a $b. TRUE si $a no es idntico a $b.

62

Tipos : NULL

Variable que no tiene valor Posibles valor : null || NULL


<?php $var =null; ?>

63

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

Variables predefinidas

Variables del servidor

$_SERVER

PHP_SELF SERVER_ADDR SERVER_ADDR DOCUMENT_ROOT QUERY_STRING REMOTE_ADDR HTTP_HOST ...


65

[http://es2.php.net/reserved.variables]

Constantes

Definicin 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

Estructuras de control

Controlar la ejecucin de instrucciones Decidir en tiempo de ejecucin que sentencias ejecutar u omitir Crear bloques repetitivos En tiempo de ejecucin / contexto

67

Estructuras de control : IF

Permite la ejecucin condicional de sentencias Si la condicin se cumple en tiempo de ejecucin : se ejecuta un bloque de cdigo predeterminado
<?php if(expr) sentencia ?>

Las tabulaciones no son necesarias pero si recomendables para la legibilidad el cdigo

68

Estructuras de control : IF

expr : cualquier cosa que tiene un valor


<?php $a=5; ?>

Los literales son expresiones

'5' es una expresin con el valor 5 $a es una expresin con el valor 5

Las variables son expresiones

69

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) echoaesmayorquecero; ?>

$a > 0 es una expresin con valor TRUE

70

Estructuras de control : IF

expr se evala a su valor condicional (boolean)


Si la expresin se evala como true se ejecuta la sentencia Si la expresin se evala como false no se ejecuta la sentencia

<?php $a=10; if($a>0) print"aesmayorque0"; if($a) printaesdiferentea0; ?>


71

Operadores de comparacin

Operadores
Operacion $a == $b $a === $b $a != $b $a <> $b $a !== $b $a < $b $a > $b $a <= $b $a >= $b Resultados TRUE si $a es igual a $b. TRUE si $a es igual a $b, y son del mismo tipo. TRUE si $a no es igual a $b. TRUE si $a no es igual a $b. TRUE si $a no es igual a $b.TRUE si $a no es igual a $b, o si no son del mismo tipo. Menor que TRUE si $a es escrictamente menor que $b. Mayor que TRUE si $a es estrictamente mayor que $b. Menor o igual que TRUE si $a es menor o igual que $b. Mayor o igual que TRUE si $a es mayor o igual que $b. Nombre Igual Idntico Diferente Diferente No idnticos

72

Operadores de comparacin

Las expresiones de comparacin 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

Estructuras de control : IF

Comparacin
<?php $a=5; $c="0"; if($a>0) echoaesmayorquecero; if($c==0) echocesigualacero
if($_SERVER['HTTP_USER_AGENT']=='MSIE') echo<linkrel='stylesheet'type='text/css' .href='style_ie.css'/> if($_SERVER['HTTP_USER_AGENT']=='Firefox') echo<linkrel='stylesheet'type='text/css' .href='style_firefox.css'/>;

74

?>

Estructuras de control : IF

If : Bloques

Podemos agrupar bloque de instrucciones mediante { }

<?php if ($usuario!=null){ echo<spanclass='datos'>$nombre</span>; echo<spanclass='datos'>$apellido</span>; echo<spanclass='datos'>$telefono</span>; } ?>

75

Estructuras de control : IF

If : Anidar condiciones

Podemos anidar indefinidamente condiciones

<?php if($usuario!=null){ echo<spanclass='datos'>$nombre</span>; echo<spanclass='datos'>$apellido</span>; echo<spanclass='datos'>$telefono</span>; if($telefono2!=null){ echo<spanclass='datos'>$telefono2</span>; } } ?>


76

Estructuras de control : IF

If : Condiciones de mltiples expresiones

Operadores lgicos

<?php if ($edad<18){ ... } if($edad>=18and$edad<=35){ //Solosisecumplen ... //lasdoscondiciones } if ($edad>35and$edad<=60){//Solosisecumplen ... //lasdoscondiciones } ?>
77

Estructuras de control : IF

If : Condiciones de mltiples expresiones


<?php if ($annos<18or($annos==18and $mesNacimiento<$mesActual)) { ... } if ($result!=nulland($numResult>100or$pagina=0)){ ... } ?>

78

Estructuras de control : IF ... ELSE

else : Ejecutar sentencias en caso de que la expresin evaluada en el if sea igual a false

<?php echo<linkrel='stylesheet'type='text/css'; if ($_SERVER['HTTP_USER_AGENT']=='MSIE'){ echohref='style_explorer.css'/>; } else{ echohref='style_firefox.css'/>; } ?>


79

Estructuras de control : ELSEIF

elseif : combinacin if y else

Se ejecuta si if = false y se da otra condicin nueva

<?php echo<linkrel='stylesheet'type='text/css'; if ($_SERVER['HTTP_USER_AGENT']=='MSIE') { echohref='style_explorer.css'/>; } elseif($_SERVER['HTTP_USER_AGENT']=='SAFARI'){ echohref='style_safari.css'/>; } else{ echohref='style_firefox.css'/>; } ?>


80

Estructuras de control : ELSEIF

elseif : No hay limite de sentencias elseif

Solo una se ejecuta

<?php if ($opcion==1){ ... } elseif ($opcion==2){//Sisedalacondicin,seejecuta ... //elbloqueysesaledelaestructura } elseif ($opcion==3){ ... } else{ //Sinosedaningunacondicinanterior ... //Seejecutaelbloqueelse } ?>
81

Estructuras de control : SWITCH

switch : Comparar la misma variable

Similar a bloque if elseif else ( != 1 variable)

<?php switch($i){ case0: echo"i=0"; break; case1: echo"i=1"; break; case2: echo"i=2"; break; } ?>
82

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 $i=1; switch($i){ case0: echo"i=0"; case1: echo"i=1"; case2: echo"i=2"; } ?> i=1i=2
83

<?php $i=1; switch($i){ case0: echo"i=0"; break; case1: echo"i=1"; break; case2: echo"i=2"; break; } ?> i=1

Estructuras de control : SWITCH

switch : caso default

~ else : En caso de que no se cumpla ningn 'case'

<?php $i=1; switch ($i){ case0: echo"i=0"; break; case1: echo"i=1"; break; case2: echo"i=2"; break; default: ... } ?>

84

Estructuras de control : Bucles

Estructuras repetitivas El cdigo se ejecuta mientras se de una condicin

Diferentes tipos de bucles Diferentes sentencias


85

Estructuras de control : Bucles

while

Tipo mas simple while (expr) sentencia Si la condicin nunca obtiene el valor false

Bucle infinito !!!

Mltiples sentencias : { }

<?php $i=0; while($i<10){ echo$i; $i=$i+1; } ?>


86

Estructuras de control : Bucles

while
<?php $valorMax=10; $valorMin=1; $aux=$valorMin; while($aux<=$valorMax){ echo<inputtype='radio'name='vota'value='$aux'/>$aux\n; $aux=$aux+1; } $cont=0; while(!empty($imagenes[$cont])){ echo<imgsrc='{$imagenes[$cont]}'/>; $cont++; } ?>
87

Estructuras de control : Bucles

do .. while

Similar a while : La condicin se evala al final

<?php $i=0; do { print$i; } while($i>0);

?>

88

Estructuras de control : Bucles

For

for (expr1 ; expr2 ; expr3 ) sentencia


expr1 : Se ejecuta una sola vez al comienzo del bucle expr2 : Se evala en el comienzo de cada iteracin

true : el bucle continua ejecutndose false : termina la ejecucin del bucle

expr3 : Se ejecuta al final de cada iteracin

<?php for($i=1;$i<=10;$i++){ echo<inputtype='radio'name='vota'value='$i'/>$i\n; } ?>

89

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

Estructuras de control : Bucles

Foreach

Fcil iteracin sobre matrices


foreach(expresion_array as $value) sentencia foreach(expresion_array as $key => $value) sentencia

<?php $arUsuarios=array(jon,ainara,mikel,ane); foreach($arUsuariosas$usuario){ echo<ahref='editar.php?usuario=$usuario'>$usuario</a>\n; } <ahref='editar.php?usuario=jon'>jon</a> <ahref='editar.php?usuario=ainara'>ainara</a> <ahref='editar.php?usuario=mikel'>mikel</a> <ahref='editar.php?usuario=ane'>ane</a> ?>


91

Estructuras de control : Bucles

Foreach
<?php $usuario=array(Nombre=>jon, Fechadenacimiento=>1982-10-25 Direccin=>francia4);

foreach($usuarioas$dato=>$valor){ echo$dato:$valor<br/>; } ?> Nombre:Jon Fechadenacimiento:1982-10-25 Direccin:francia4

92

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<tableborder='2'>; foreach($arUsuariosas$dni=>$arUsuario){ echo<tr>; foreach($arUsuarioas$datosUsuario){ echo<td>$datosUsuario</td>; } echo</tr>; } echo</table>; ?>
93

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($arUsuariosas$dni=>$arUsuario){ if($arUsuario[3]==desarrollo){ break; } echo<tr><td>$dni</td>; foreach($arUsuarioas$datosUsuario){ echo<td>$datosUsuario</td>; } echo</tr>; } echo</table>; ?>

94

Estructuras de control : continue

continue : sentencia para terminar iteracin


<?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($arUsuariosas$dni=>$arUsuario){ if($arUsuario[3]==desarrollo){ continue; } echo<tr><td>$dni</td>; foreach($arUsuarioas$datosUsuario){ echo<td>$datosUsuario</td>; } echo</tr>; } echo</table>; ?>

95

Estructuras de control

Sintaxis alternativa

if , while , for , switch abrir llave = dos puntos (:) cerrar llave =

endif; endwhile; endfor; endswitch;

<?php if($a==5):?> <p>Aesiguala5</p> <?php endif;?> <?php for($i=0;$i<10;$i++): echo<inputtype='radio'name='vot'value='$i'/>$i; endfor; ?>

96

Incluir cdigo de ficheros externos

Include y require

Funciones para incluir otros ficheros include ([ruta]nombre fichero); require ([ruta] nombre fichero); Include produce un warning (el script continua) Require produce un error fatal (el script NO notinua)

Si no se encuentra el fichero

<?php include('cabecera.php'); ... include('pie.php'); ?>


97

Incluir cdigo de ficheros externos

Include y require

El cdigo se inserta en el lugar donde se encuentra la instruccin include/require


<?php define(MAX,10); ?>

<?php $apuntados=3; echoMAX-$apuntados.<br/>; include("constantes.php"); echoMAX-$apuntados; ?> -3 7

98

Incluir cdigo de ficheros externos

Include y require

Si los ficheros no estn al mismo nivel : ruta Podemos incluir desde url
/var/www/cursos/include/ <?php define(MAX,10); ?>

/var/www/cursos/apuntados/ <?php $apuntados=3; echoMAX-$apuntados.<br/>; include("../include/constantes.php"); echoMAX-$apuntados; ?> -3 7

99

Incluir cdigo 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
//constante.php <?php include(funciones.php); define(MAX,10); ?>

<?php $apuntados=3; echoMAX-$apuntados.<br/>; include("constantes.php"); include(funciones.php); echoMAX-$apuntados; ?> Fatal error: Cannot redeclare funcion() (previously declared in ... )

100

Funciones

No repetir cdigo Divide y vencers Funciones especificas Funciones variables mediante parmetros El cdigo no se ejecuta hasta la llamada a la funcin Funciones definidas por el usuario Funciones predefinidas (API)
101

Funciones

Funciones : definicin y llamada

Definicin:

function nombreDeFuncion (parametros){


cuerpo de funcin

Llamada

nombreDeFuncion($parametro);

102

Funciones

Funciones : definicin y llamada


<?php functionbienvenida(){ echoholamundo!; } bienvenida(); bienvenida(); echo<br/>; bienvenida(); holamundo!holamundo! holamundo! ?>
103

Funciones

Funciones : en ficheros externos


<?php require_once(funciones.php); bienvenida(); echo<br/>; despedida(); ?> Bienvenido Graciasporsuvisita <?php functionbienvenida(){ echoBienvenido; } functiondespedida(){ echoGraciasporsuvisita; } ?>

104

Funciones

Funciones : parmetros

Podemos pasarle variables a las funciones Lista de variables separadas por comas Los parmetros han de definirse al definir la funcin Si se definen parmetros, hay que pasarle variables a la funcin en la llamada

<?php functionsuma($num1,$num2){ echo$num1+$num2; } suma(14,6); suma(34,5615); suma(2); ?> //20 //5649 //Warning...

105

Funciones

Funciones : parmetros
<?php require_once(funciones.php); $usuario1=jon; $usuario2=ainhoa; bienvenida($usuario1); echo<br/>; despedida($usuario1); echo<br/>; bienvenida($usuario2); ?> Bienvenidojon Adiosjon Bienvenidoainhoa
106

<?php functionbienvenida($nombre){ echoBienvenido$nombre; } functiondespedida($nom){ echoAdios$nom; } ?>

Funciones

Funciones : parmetros por defecto


<?php functionasistentes($numero=0){ echohanasistido$numeropersonas; } $b=45; asistentes(); asistentes(10); asistentes($b); asistentes(24,23,doce); ?> 0 10 45 24
107

Funciones

Funciones : mbito de las variables


<?php functionsuma($a,$b){ $a=$a+$b; echo$a; } $a=10; $b=5; $c=20; suma($a,$b); echo$a; suma($a,$c); echo$a; ?> 25 10 30 10 <?php functionsuma($a,$b){ $a=$a+$b; echo$a; } $num1=10; $num2=5; $num3=20; suma($a,$b); echo$a; suma($num1,$num2); echo$b; ?> 0 15 //nada //nada
108

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 mltiples valores dentro de un elemento array por ejemplo

<?php functionsuma($a,$b){ $a=$a+$b; return$a; } $result=suma(23,10); echo$result; //33 ?>

109

Funciones

Funciones : Return
<?php functionesPar($num){ return$num%2==0; } $usuarios=array(ane,mikel, jon,ainhoa,roger); echo<table>; foreach($usuariosas$indice=>$usuario){ echo<trclass=; if(esPar($indice)){ echo'par'>; } else{ echo'impar'>; } echo\t<td>$usuario</td></tr>; } echo</table>; ?> <table> <trclass='par'> <td>ane</td> </tr> <trclass='impar'> <td>mikel</td> </tr> <trclass='par'> <td>jon</td> </tr> <trclass='impar'> <td>ainhoa</td> </tr> <trclass='par'> <td>roger</td> </tr> </table>

110

Funciones

Funciones :
<?php functionimprimirTabla($mat){ echo<table>; foreach($matas$fila){ echo<tr>; foreach($filaas$valor){ echo<td>$valor</td>; } echo</tr>; } echo</table>; } $usuarios=array( array(mikel,millan,999999999), array(jon,guereu,686868686) array(manu,arregi,123456789)); imprimirTabla($usuarios); ?> <table> <trclass='par'> <td>mikel</td> <td>millan</td> <td>999999999</td> </tr> <trclass='impar'> <td>jon</td> <td>guereu</td> <td>686868686</td> </tr> <trclass='impar'> <td>manu</td> <td>arregi</td> <td>12345678</td> </tr> </table>
111

Funciones

Funciones : Parametros por referencia


Accedemos a la variable por referencia No se crea una copia, accedemos a la variable original

<?php functionincrementar(&$val){ $val++; } $cont=1; echo$cont; incrementar($cont); echo$cont; ?> 1 2

112

Funciones predefinidas

Redireccionar

header() : enviar cabeceras Redireccionar a otra pgina

<?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

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 ?> ?> header(Location:http://$dominio/usuarios);

ERROR
114

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 : Notacin cientfica %u : Integer decimal sin signo %f : Float numero de coma flotante %o : Integer octal %x : Integer hexadedimal
115

Funciones predefinidas

Funciones de variables

printf (string_formateado,$var [,$var])

<?php $num=126; printf("decimalnum=%d",$num); printf("binarionum=%b",$num); printf("hexadecimalnum=%x",$num); printf("floatnum=%f",$num); printf("floatnum=%.2f",$num); printf("asciinum=%c",$num); printf("cientificonum=%e",$num); ?> decimalnum=126 binarionum=1111110 hexadecimalnum=7e floatnum=126.000000 floatnum=126.00 asciinum=~ cientificonum=1.260000e+2

116

Funciones predefinidas

Funciones de variables

empty ($variable)

Devuelva si la variable existe o no / si est definida o no Destruye la variable Elimina un elemento de un array ( no lo reordena!!!)
<?php unset($cont); unset($usuarios[$i]); ?>

unset ($variable)

<?php if(!empty($nombreUsuario){ obtenerDatosUsuario($nombreUsuario); } else{ echoInsertaelnombredeusuario; } ?>

117

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(Elvalores:%u,$num); } elseif(is_float($num)){ printf(Elvalores:%.2f,$num); } else{ printf(Nohainsertadounnumero); } ?>

[http://es2.php.net/manual/es/ref.var.php]

118

Funciones predefinidas

Funciones matemticas

floor($float) : devuelve el siguiente integer mas pequeo 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

Funciones predefinidas

Funciones matemticas
<?php $num1=18; $num2=5; $div=round($num1/$num2); $resto=$num1%num2; $num1=9; $raiz=sqrt($num1); $x=0; $y=0; $senoX=sin($x); $cosenoY=cos($y); $aleatorio=rand(10,500); ?>
120

//3 //3 //3

//0 //1 //324

Funciones predefinidas

Funciones de cadenas (no codificacin)


strlen ($cadena) : devuelve el nmero de caracteres strpos ($pajar,$aguja) : Devuelve la posicin 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

Funciones predefinidas

Funciones de cadenas (no codificacin)


<?php $cadena="holasoyunacadena"; echostrlen($cadena); 19 $cadena="holasoyunacdena"; echostrlen($cadena); 20 $cadena="holasoyunacadena"; echostrpos($cadena,"soy"); 5 $cadena="HolaSoyUnaCadena"; echostrtolower($cadena); holasoyunacadena echostrtoupper($cadena); HOLASOYUNACADENA ?> <?php $cadena="tengoespacios"; echotrim($cadena); tengoespacios $cad="soyunacadena"; str_replace("cadena","cadenita",$cad); holasoyunacadenita print_r(explode("",$cadena)); Array ( [0]=>hola [1]=>soy [2]=>una [3]=>cadena ) ?>
122

Funciones predefinidas

Funciones de cadenas (codificadas)


Operan sobre cadenas codificadas en UTF-8,ISO-8859 ... Podemos especificar la codificacin en las funciones Podemos establecer una codificacin por defecto

mb_internal_encoding ("UTF-8"); mb_internal_encoding() : muestra la codificacin interna

<?php echomb_internal_encoding(); echomb_strlen("camin"); mb_internal_encoding("UTF-8"); echomb_internal_encoding(); echomb_strlen("camin"); ?>

//ISO-8859-1 //7 //UTF-8 //6

123

Funciones predefinidas

Funciones de cadenas (codificadas)


mb_strlen ($cadena,[$cod]) : Nmero de caracteres mb_strpos ($pajar,$aguja) : Posicin de la primera ocurrencia de $aguja en $pajar mb_stripos ~ mb_strpos (stripos : indiferente a mayus minus) mb_strtolower ($cadena) : devuelve la cadena en minsculas mb_strtoupper ($cadena) : devuelve la cadena en maysculas 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

Funciones predefinidas

Funciones de cadenas (codificadas)


<?php mb_internal_encoding("UTF-8"); $cadena="Ahestmicamin"; echomb_strlen($cadena); 18 $cadena="holasoyunacadena"; echomb_strpos($cadena,"soy"); 5 $cadena="AhEstMiCamin"; echomb_strtolower($cadena); ahestmicamin echomb_strtoupper($cadena); AHESTMICAMIN ?> <?php mb_internal_encoding("UTF-8"); $cad="soyunacadena"; mb_ereg_replace("soy","era",$cad); eraunacadena $cadena="Ahestmicamin"; print_r(mb_split("",$cadena)); Array ( [0]=>Ah [1]=>est [2]=>mi [3]=>camin ) ?>
125

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

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

Funciones predefinidas

Funciones de arrays
<?php $usuarios=array("mikel","ane", "eneko","manu"); echocount($usuarios); 4 asort($usuarios); print_r($usuarios); $Array ( [1]=>ane [2]=>eneko [3]=>manu [0]=>mikel ) <?php $usuarios=array( "99999999"=>"mikel", "34343434"=>"ane", "12121212"=>"eneko", "76677667"=>"manu"); echocount($usuarios); 4 krsort($usuarios); print_r($usuarios); Array ( [99999999]=>mikel [76677667]=>manu [34343434]=>ane [12121212]=>eneko ) ?>

?>

128

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

Funciones predefinidas

Funciones de arrays
<?php $usuarios=array("99999999"=>"mikel","34343434"=>"ane", "12121212"=>"eneko","76677667"=>"manu"); $usuario=eneko; if(in_array($usuario,$usuarios)){ echoElusuario$usuarioestenlalista.; } else{ echoElusuario$usuarionoestenlalista; } if($pos=array_search($usuario,$usuarios)){ unset($usuarios[$pos]); } ?>
130

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 1 2 1 1 user acceso 10/01/09 05/03/09
131

id 1 2

user mikel ainhoa

pass 12321 32343

Accediendo a DB : MySQL

MySQL : Gestionando mysql con phpmyadmin

Crear/eliminar/editar ... BD, tablas, registros, usuarios ...

132

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

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

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

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

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

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

Accediendo a DB : MySQL

Crear / Abrir la conexin


mysql_connect ($hostname,$usuario,$password) Si no hay problemas devuelve el enlace El enlace se cerrara automticamente al finalizar el script o mediante la funcin mysql_close($link)

<?php $con=mysql_connect(localhost,user,pass) ordie(Nosepudoabrirlaconexin:.mysql_error()); if($con){ echoConexinexitosa; } ?>


139

Accediendo a DB : MySQL

Cerrar la conexin

mysql_close ($link)

<?php $con=mysql_connect(localhost,user,pass) ordie(Nosepudoabrirlaconexin:.mysql_error()); ... mysql_close($con); ?>

140

Accediendo a DB : MySQL

Seleccionar BD

mysql_select_db($dbname,[$link]); Devuelve true o false

<?php $con=mysql_connect(localhost,user,pass) ordie(Nosepudoabrirlaconexin:.mysql_error()); if (mysql_select_db(usuarios,$con)){ ... } else{ echonosepudoseleccionarlabasededatos); } mysql_close($con); ?>


141

Accediendo a DB : MySQL

Realizar consultas

mysql_db_query($link) Crear, eliminar, modificar ...

BD, tablas, permisos, registros ... SELECT,SHOW,DESCRIBE,EXPLAIN : resource INSERT,UPDATE,DELETE,DROP ... : true o false

Valores retornados

142

Accediendo a DB : MySQL

Consultas sin retorno de valor


<?php $con=mysql_connect(localhost,user,pass); $SQL=CREATEDATABASEprueba; if(mysql_query($SQL)){echoBDcreadaconexito;} $SQL=CREATETABLEprueba(userVARCHAR(10),passVARCHAR(10)); if(mysql_query($SQL)){echoTablacreadaconexito;} $SQL="INSERTINTOprueba(user,pass)VALUES('usuario1','pass1')"; if(mysql_query($SQL)){echoSeinsertaronlosdatosconexito;} $SQL=DELETEFROMpruebaWHEREuser='usuario1'; if(mysql_query($SQL)){echoRegistroeliminadoconexito;} mysql_close($con); ?>
143

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

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*FROMprueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_assoc($RS)){ echoUsuario:.$fila['user']; echoPass:.$fila['pass']; } ?>


145

Accediendo a DB : MySQL

Consultas con retorno de valor

mysql_fetch_row($RS)

$RS : El valor retornado por mysql_query Devuelve una matriz numrica Claves = enteros empezando por 0

146

Accediendo a DB : MySQL

Consultas con retorno de valor

mysql_fetch_row
0=usuario1 1=pass1 0=usuario2 1=pass2 ...

<?php $con=mysql_connect(localhost,user,pass); mysql_select_db("prueba",$con); $SQL="SELECT*FROMprueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_row($RS)){ foreach($filaas$clave=>$valor){ echo$clave=$valor; } } ?>

147

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, numrica o ambas Por defecto : ambas $tipo : constante que puede tener los siguientes valores

MYSQL_ASSOC MYSQL_NUM MYSQL_BOTH

148

Accediendo a DB : MySQL

Consultas con retorno de valor

mysql_fetch_array
0=usuario1 name=usuario1 1=pass1 pass=pass1 0=usuario2 name=usuario2 1=pass2 ...

<?php $con=mysql_connect(localhost,user,pass); mysql_select_db("prueba",$con); $SQL="SELECT*FROMprueba"; $RS=mysql_query($SQL); while($fila=mysql_fetch_array($RS)){ foreach($filaas$clave=>$valor){ echo$clave=$valor; } } ?>

149

Accediendo a DB : MySQL

Errores

mysql_error ($link)

Devuelve el texto del mensaje de error de la ltima operacin MySQL Si no ocurri error : (cadena vaca)

<?php $con=mysql_connect(localhost,user,pass); if(!mysql_select_db("pruebaaaa",$con)){ echomysql_error(); } ?> Unknowndatabase'pruebaaaa'


150

Cookies

Pequeos ficheros que se escriben en el ordenador del cliente Contienen informacin que las pginas 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

Cookies

Creacin 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

Cookies

Obtencin de cookie

$_COOKIE[$nombreCookie]

<?php //Establecer cookie $caducidad=time()*60*60*24*365; setcookie(idioma,$idiomaSeleccionado,$caducidad); ?> <?php //Obtener cookie $idiomaPreferido=$_COOKIE[idioma]; ?>
153

Sesiones

Mecanismo para preservar datos a lo largo de accesos posteriores Almacena informacin en el servidor accesible a travs de diferentes scripts La informacin se guarda en variables de sesin

154

Sesiones

Iniciar sesin

session_start() : antes de cualquier etiqueta html

Crear variable de sesin

$_SESSION ['nombre'] = $valor;

Recuperar variable de sesin

$variable = $_SESSION ['nombre'];


155

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

Sesiones

Funciones

session_start : inicia la sesin session_destroy : destruye los datos de sesin 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

Ficheros y directorios

Ficheros

abrir fichero : fopen ($fichero,$modo)


$fichero (string ) : ruta + nombre de fichero $modo (string ) :


a : Aadir datos al final del fichero. Si no existe, se crea a+ : Aadir datos al final del fichero y leer datos. Si no existe, se crea. r : Solo lectura r+ : Lectura y escritura. Se aade 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

Ficheros y directorios

Ficheros

abrir fichero : fopen ($fichero,$modo)

<?php $fichero=files/salida.txt; if (fopen($fichero,'a+')){ echo(Elficherosehaabiertoconexito.); } else{ echo(Error:noseapodidoabrirelfichero); } ?>

159

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

Ficheros y directorios

Ficheros

Escribir en fichero : fwrite($fichero , $cadena [,$longitud] ) Escribe $cadena \n : nueva linea

<?php $fich=fopen("escrito","a+"); fwrite($fich,"holasoyunalinea\n"); fwrite($fich,"holasoyotralinea\n"); fwrite($fich,"holasoyuna:\nlinea"); ?> holasoyunalinea holasoyotralinea holasoyuna: linea
161

Ficheros y directorios

Ficheros

Cerrar fichero : fclose ($fichero)

<?php $fichero=files/salida.txt; if(fopen($fichero,'a+')){ echo(Elficherosehaabiertoconexito.); } else{ echo(Error:noseapodidoabrirelfichero); } if(fclose($fichero)){ echoelficherosehacerradocorrectamente; } ?>

[http://es2.php.net/manual/es/ref.filesystem.php]
162

Ficheros y directorios

Ficheros

Subir ficheros al servidor

<html> ... <formaction=upload.phpenctype=multipart/form-data method=post> <inputtype=filename=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

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<imgsrc='$fich'/>; } } ?>

[http://es2.php.net/manual/es/book.dir.php]

164

Clases y objetos

Definicin de clases

Variables (atributos) y Funciones (mtodos) Las funciones acceden a los atributos class nombreClase { ... } $this : accedemos a los atributos y mtodos de la clase desde dentro de la clase $this->name //accede al atributo $name $this->imprimir() //accede al mtodo imprimir Desde fuera de la clase:

$obj = new MiObjeto(); MiObjeto->imprimir(); Podemos crear tantos objetos (instancias) de la clase como queramos 165

Clases y objetos

<?php classusuario{ private$nombre; private$apellido; publicfunctiongetNombre(){return$this->nombre;} publicfunciongetApellido(){return$this->apellido;} publicfunctionsetNombre($nombre){$this->nombre=$nombre;} publicfunctionsetApellido($ape){$this->apellido=$ape;} }

$user=newUsuario(); $user->setNombre(Jon); $user->setApellido(Brown); $usuario2=newUsuario(); $usaurio2->setNombre(Ane); echousuario:.$usuario2->getNombre(); ?>


166

También podría gustarte