Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cursophp 100105110809 Phpapp01
Cursophp 100105110809 Phpapp01
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)
Scripts del lado del servidor Scripts en linea de comandos Aplicaciones con interfaz grfica PHP-GTK
Introduccin (III)
Genera HTML
...
/
5
Introduccin (III)
Procesa PHP
Introduccin
Requisitos
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
Introduccin
Introduccin
IDE : Netbeans, Eclipse, Zend Studio NetBeans http://www.netbeans.org/downloads/index.html PHP + Spanish + Windows
10
Introduccin
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
12
Introduccin
13
Ejecutar proyecto
<?php ... ?> <script language=php> ... </script> <? ... ?> <% ... %> XHTML XML
14
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
Scripts PHP :
Serie de sentencias / instrucciones Ejecutadas secuencilmente Datos en variables Estructuras de control Funciones Clases (POO)
16
17
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
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 :
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)
Variables (IV)
24
Variables (V)
25
Variables (VI)
Variables (VII)
HTTP : protocolo sin estado El valor de las variables existe durante la vida del script (pgina) Pasar datos entre scripts (pginas)
28
Metodo : POST
<!-- index.html --> <form action =logon.php method=post> <input type=text name=user/> <input type=text name=pass/> <input type=submit </form>
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>
Tipos
Tipos
Escalares
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
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 reales Tambin conocidos como doble o real Tamao depende de la plataforma Usual : ~1.8e308
echo
$num=16.6765464; echo $num; 16.6765464
<?php
?>
printf
35
Operadores aritmticos
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
El orden de ejecucin :
* +
/ -
<?php echo (8 % 3 * 5); // 10 echo (8 * 3 % 5); // 4 echo (5 * 8 % 3); // 1 echo (5 % 8 * 3); // 15 ?>
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 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
\' \\
<?php echo 'Esto es una cadena'; $c = 'Una cadena en una variable'; echo 'Imprime una cadena con saltos'; ?>
41
Tipos : Cadenas
\n \t \\ \$ \
: Imprime una linea nueva : Imprime una tabulacin horizontal : Imprime una barra invertida : Imprime un signo de dlar : Imprime una comilla doble
Tipos : Cadenas
\n != <br/>
Tipos : Cadenas
<?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
<?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 ?>
' .= '
48
Tipos : Booleanos
Booleanos :
<?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
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
Tipos : Array
<?php $usuario[0]=ainhoa; $usuario[2]=ane; $usuario[1]=iaki; ?> ndice Valor 0 ainhoa 2 ane 1 iaki
Tipos : Array
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
Tipos : Array
<?php
?>
57
Tipos : Array
<?php
58
Tipos : Array
ndice Valor
enero
mikel ainhoa ane
diciembre
59
Tipos : Array
Tipos : Array
?>
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.
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
63
Tipos : Resource
Contiene una referencia a un recurso externo Los recursos son usados por funciones especiales
Recurso : mysql link Crear recurso : $con = mysql_connect('host' ...) mysql_query(SELECT ..., $con); ....
64
Variables predefinidas
$_SERVER
[http://es2.php.net/reserved.variables]
Constantes
Definicin de constantes
<?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 ?>
68
Estructuras de control : IF
69
Estructuras de control : IF
Las comparaciones son una expresion con valores booleanos (true o false ) (verdadero o falso)
70
Estructuras de control : IF
Si la expresin se evala como true se ejecuta la sentencia Si la expresin se evala como false no se ejecuta la sentencia
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
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
75
Estructuras de control : IF
If : Anidar condiciones
Estructuras de control : IF
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
78
else : Ejecutar sentencias en caso de que la expresin evaluada en el if sea igual a false
<?php if ($opcion==1){ ... } elseif ($opcion==2){//Sisedalacondicin,seejecuta ... //elbloqueysesaledelaestructura } elseif ($opcion==3){ ... } else{ //Sinosedaningunacondicinanterior ... //Seejecutaelbloqueelse } ?>
81
<?php switch($i){ case0: echo"i=0"; break; case1: echo"i=1"; break; case2: echo"i=2"; break; } ?>
82
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
<?php $i=1; switch ($i){ case0: echo"i=0"; break; case1: echo"i=1"; break; case2: echo"i=2"; break; default: ... } ?>
84
while
Tipo mas simple while (expr) sentencia Si la condicin nunca obtiene el valor false
Mltiples sentencias : { }
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
do .. while
?>
88
For
expr1 : Se ejecuta una sola vez al comienzo del bucle expr2 : Se evala en el comienzo de cada iteracin
89
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
Foreach
Foreach
<?php $usuario=array(Nombre=>jon, Fechadenacimiento=>1982-10-25 Direccin=>francia4);
92
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
94
95
Estructuras de control
Sintaxis alternativa
if , while , for , switch abrir llave = dos puntos (:) cerrar llave =
<?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
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
Include y require
98
Include y require
Si los ficheros no estn al mismo nivel : ruta Podemos incluir desde url
/var/www/cursos/include/ <?php define(MAX,10); ?>
99
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
Definicin:
Llamada
nombreDeFuncion($parametro);
102
Funciones
Funciones
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
Funciones
Funciones
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
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
Accedemos a la variable por referencia No se crea una copia, accedemos a la variable original
112
Funciones predefinidas
Redireccionar
<?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
?>
ERROR
114
Funciones predefinidas
Funciones de variables
%% : 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
<?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)
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() ...
[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
Funciones predefinidas
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 predefinidas
Operan sobre cadenas codificadas en UTF-8,ISO-8859 ... Podemos especificar la codificacin en las funciones Podemos establecer una codificacin por defecto
123
Funciones predefinidas
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 predefinidas
Funciones de arrays
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
Accediendo a DB : MySQL
132
Accediendo a DB : MySQL
Obtener todos los datos de una tabla (tabla usuario) SELECT * FROM usuario
Accediendo a DB : MySQL
MySQL : SLQ (Structured Query Language) Consultas : Obteniendo datos de tablas (II)
Accediendo a DB : MySQL
Accediendo a DB : MySQL
Accediendo a DB : MySQL
Accediendo a DB : MySQL
http://es.php.net/manual/es/ref.mysql.php Crear , eliminar, modificar, obtener ... BD, tablas, usuarios, privilegios ...
Accediendo a DB : MySQL
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)
Accediendo a DB : MySQL
Cerrar la conexin
mysql_close ($link)
140
Accediendo a DB : MySQL
Seleccionar BD
Accediendo a DB : MySQL
Realizar consultas
BD, tablas, permisos, registros ... SELECT,SHOW,DESCRIBE,EXPLAIN : resource INSERT,UPDATE,DELETE,DROP ... : true o false
Valores retornados
142
Accediendo a DB : MySQL
Accediendo a DB : MySQL
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
mysql_fetch_assoc
Accediendo a DB : MySQL
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
mysql_fetch_row
0=usuario1 1=pass1 0=usuario2 1=pass2 ...
147
Accediendo a DB : MySQL
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
148
Accediendo a DB : MySQL
mysql_fetch_array
0=usuario1 name=usuario1 1=pass1 pass=pass1 0=usuario2 name=usuario2 1=pass2 ...
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)
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
Sesiones
<?php session_start(); if(usuarioValido($usuario)){ $_SESSION['valido']=true; } .... ?>
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
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
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
Ficheros y directorios
Ficheros
<?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
[http://es2.php.net/manual/es/ref.filesystem.php]
162
Ficheros y directorios
Ficheros
<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
[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