You are on page 1of 166

PHP

PHP HiperText Preprocesor

1
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

4
Introduccin (III)
Scripts del lado del servidor
BD
Servidor

HTML + PHP
Cliente LDAP
Procesa PHP

Genera HTML ...

5
Introduccin (III)
Scripts del lado del servidor
Servidor BD:
Servidor Web : Apache2 MySQL

HTML + PHP

Navegador
(Firefox)
Procesa PHP

Genera HTML
c:\

6
Introduccin
Requisitos
PHP5
Servidor Web : apache2
Servidor BD : mysql
Editor : netbeans
Todo en 1 : XAMPP (Apache + MySQL + PHP)
Netbeans

Software libre !!!


7
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>
<? ... ?>
<% ... %>
recomendado : <?php .... ?>
XHTML
XML
14
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:

<?php echo hola mundo ;?>

<?php echo hola mundo; ?>

<?php

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/*
Estos comentarios
/* No se puede anidar produciran un error
/* bloques de comentarios*/
*/ 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 <?php
$cont=1; $1Usuario = mikel;
$_cont=1; $usuario-2 = ainara;
$nombre_usuario=mikel $nmero = 12;
$PESO22_=102g $cont 1 = 0;
?> ?>
20
CORRECTO INCORRECTO
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)
Mostrar tipo variable
var_dump($variable);
Mostrar contenido variable
print_r($variable)
echo
printf
23
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
Compuestos
Matrices
Objetos
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
<?php

$num=16.6765464;
echo $num;
16.6765464

?>

printf
<?php
$num=16.6765464;
printf("el numero es : %.2f ",$num);
16.68
?> 35
Operadores aritmticos
Podemos realizar operaciones aritmticas

Operacion Operador Ejemplo


suma + $total = $precio + $iva;
resta - $oferta = $total - $descuento;
multiplicacion * $iva = $precio*0.16;
division / $media = $suma / $total;
mdulo (resto) % $resto = $total % 5;
negacin - $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
<?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); //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 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
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 : Imprime una linea nueva
\t : 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. \n != <br/>

$articulo = \tFrase tabulada\nSin tabular;


echo $articulo;
Frase tabulada
Sin Tabular

echo Ha seleccionado \5\ 'articulos' ;


Ha seleccionado 5 'articulos'
?>
43
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 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
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!)
ndice 0 1 2 3 4
Valor lunes martes mircoles jueves viernes

52
Tipos : Array
Matrices (Array) : Definir array
Podemos especificar los ndices directamente
<?php
$festivos[0]=sbado;
$festivos[1]=domingo;

?>

ndice 0 1
Valor sbado 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 0 2 1
Valor ainhoa ane 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
<?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
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
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
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 Nombre Resultados


$a + $b Unin Unin 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 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
...
[http://es2.php.net/reserved.variables]
65
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 68


recomendables para la legibilidad el cdigo
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
Las variables son expresiones
$a es una expresin con el valor 5

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 Nombre Resultados


$a == $b Igual TRUE si $a es igual a $b.
$a === $b Idntico 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 idnticos 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
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 <?php
$i=1; $i=1;
switch($i){ switch($i){
case0: case0:
echo"i=0"; echo"i=0";
break; case1:
case1: echo"i=1";
echo"i=1"; case2:
break; echo"i=2";
case2: }
echo"i=2"; ?>
break;
} i=1i=2
?>
i=1 83
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);
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');
?>
Incluir cdigo de ficheros externos
Include y require
El cdigo se inserta en el lugar donde se encuentra
la instruccin include/require
<?php <?php
$apuntados=3; define(MAX,10);
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/apuntados/ /var/www/cursos/include/

<?php <?php
$apuntados=3;
echoMAX-$apuntados.<br/>; define(MAX,10);

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
<?php //constante.php

$apuntados=3; <?php
echoMAX-$apuntados.<br/>;
include(funciones.php);
include("constantes.php");
include(funciones.php); define(MAX,10);
?>
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 <?php

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

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); //20
suma(34,5615); //5649
suma(2); //Warning... 105
?>
Funciones
Funciones : parmetros

<?php <?php

require_once(funciones.php); functionbienvenida($nombre){
$usuario1=jon; echoBienvenido$nombre;
$usuario2=ainhoa; }

bienvenida($usuario1); functiondespedida($nom){
echo<br/>; echoAdios$nom;
despedida($usuario1); }
echo<br/>;
bienvenida($usuario2); ?>
?>

Bienvenidojon
Adiosjon
Bienvenidoainhoa

106
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 <?php
functionsuma($a,$b){ functionsuma($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
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){ <table>
return$num%2==0; <trclass='par'>
} <td>ane</td>
</tr>
$usuarios=array(ane,mikel, <trclass='impar'>
jon,ainhoa,roger); <td>mikel</td>
echo<table>; </tr>
foreach($usuariosas$indice=>$usuario){ <trclass='par'>
echo<trclass=;
if(esPar($indice)){ <td>jon</td>
echo'par'>; </tr>
} <trclass='impar'>
else{ <td>ainhoa</td>
echo'impar'>; </tr>
} <trclass='par'>
echo\t<td>$usuario</td></tr>; <td>roger</td>
} </tr>
echo</table>; </table>
110
?>
Funciones
Funciones :
<?php
functionimprimirTabla($mat){ <table>
echo<table>; <trclass='par'>
foreach($matas$fila){ <td>mikel</td>
echo<tr>; <td>millan</td>
foreach($filaas$valor){ <td>999999999</td>
echo<td>$valor</td>; </tr>
} <trclass='impar'>
echo</tr>; <td>jon</td>
} <td>guereu</td>
echo</table>; <td>686868686</td>
} </tr>
<trclass='impar'>
$usuarios=array( <td>manu</td>
array(mikel,millan,999999999), <td>arregi</td>
array(jon,guereu,686868686) <td>12345678</td>
array(manu,arregi,123456789)); </tr>
</table>
imprimirTabla($usuarios);
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 ERROR
header(Location:http://$dominio/usuarios);
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
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{
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); //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
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 <?php
$cadena="holasoyunacadena";
echostrlen($cadena); $cadena="tengoespacios";
19 echotrim($cadena);
tengoespacios
$cadena="holasoyunacdena";
echostrlen($cadena); $cad="soyunacadena";
20 str_replace("cadena","cadenita",$cad);
holasoyunacadenita
$cadena="holasoyunacadena";
echostrpos($cadena,"soy"); print_r(explode("",$cadena));
5
Array
$cadena="HolaSoyUnaCadena"; (
echostrtolower($cadena); [0]=>hola
holasoyunacadena [1]=>soy
[2]=>una
echostrtoupper($cadena); [3]=>cadena
HOLASOYUNACADENA )

?> ?> 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(); //ISO-8859-1
echomb_strlen("camin"); //7
mb_internal_encoding("UTF-8");
echomb_internal_encoding(); //UTF-8
echomb_strlen("camin"); //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 <?php
mb_internal_encoding("UTF-8"); mb_internal_encoding("UTF-8");

$cadena="Ahestmicamin"; $cad="soyunacadena";
echomb_strlen($cadena); mb_ereg_replace("soy","era",$cad);
18 eraunacadena

$cadena="Ahestmicamin";
$cadena="holasoyunacadena";
echomb_strpos($cadena,"soy"); print_r(mb_split("",$cadena));
5
Array
$cadena="AhEstMiCamin"; (
echomb_strtolower($cadena); [0]=>Ah
ahestmicamin [1]=>est
[2]=>mi
echomb_strtoupper($cadena); [3]=>camin
AHESTMICAMIN )
?> ?>

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
<?php
$usuarios=array("mikel","ane", $usuarios=array(
"eneko","manu"); "99999999"=>"mikel",
echocount($usuarios); "34343434"=>"ane",
4 "12121212"=>"eneko",
"76677667"=>"manu");
asort($usuarios);
print_r($usuarios); echocount($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
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 user pass id user acceso
1 mikel 12321 1 1 10/01/09
2 ainhoa 32343 2 1 05/03/09 131
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 ...
Valores retornados
SELECT,SHOW,DESCRIBE,EXPLAIN : resource
INSERT,UPDATE,DELETE,DROP ... : true o false

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
<?php 0=usuario1
$con=mysql_connect(localhost,user,pass); 1=pass1
0=usuario2
mysql_select_db("prueba",$con); 1=pass2
...
$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
<?php 0=usuario1
$con=mysql_connect(localhost,user,pass); name=usuario1
1=pass1
mysql_select_db("prueba",$con); pass=pass1
0=usuario2
$SQL="SELECT*FROMprueba"; name=usuario2
1=pass2
$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

You might also like