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