INTRODUCCIÓN A PHP Curso de PHP Por Vicente Aguilar Imparte: José Alberto Rodríguez Castañeda.

Slides:



Advertisements
Presentaciones similares
Manejo de archivos.
Advertisements

Estructuras de control
Funciones.
Lenguaje PHP Capítulo 4.
Manejo de archivos.
PHP-MYSQL OPERADORES EN PHP
Orientación a Objetos con Java SE
Introducción a PHP.
Programación, Algoritmos y Estructuras de Datos
Desarrollo de Aplicaciones para Internet
ACCESO A BASES DE DATOS ORACLE CON PHP
Tema 2: Lenguaje PHP básico
1.2 Sintaxis del lenguaje Java.
Desarrollo de sitios web con PHP y MySQL
TECNOLOGÍA IDC Internet Database Connector Trinitario Gómez López.
Antonio Becerra Terón Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos.
Introducción a PHP INTRODUCCIÓN: Diferencias entre ASP y PHP Software propietario Free Software Plataformas Microsoft Varios lenguajes (VBScript,
La estructura básica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con.
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
DESARROLLO DE APLICACIONES WEB
Lenguaje C.
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
El lenguaje de programación Java
Tema 1: Lenguaje PHP básico Ing. Tulio Nel Benavides Peña
Archivos.
PAGINAS DINAMICAS PHP. INTRODUCCION PHP (Profesional Home Pages - Páginas Personales Profesionales) es un lenguaje para la creación de páginas web incrustado.
Pulse para añadir texto Desarrollo de sitios web con PHP y MySQL Tema 2: Lenguaje PHP básico Elaborado por: José Mariano González Romano
Introducción a las redes e Internet Unidad 7: Páginas web dinámicas Clase 1 Unidad 7: Páginas web dinámicas Clase 1.
Informática Ingeniería en Electrónica y Automática Industrial
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
PHP TODO SOBRE PHP.
Archivos Programación I MC Beatriz Beltrán Martínez.
Uso de las Sesiones Temas: Creación de sesiones Lectura de sesiones Borrado de sesiones.
PHP PHP (acrónimo de "PHP: Hypertext Preprocessor") es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en páginas HTML y ejecutado.
Programación en C para electrónicos

introducción al lenguaje
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Desarrollo de sitios web con PHP y MySQL
PHP con Bases de Datos Tema 2 Variables, Constantes y Tipos de Datos
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
 DATOS, VARIABLES, CONSTANTES EXPRESIONES Y OPERADORES TRABAJO GRUPAL DE WEB Y MULTIMEDIA INTEGRANTES: Juan Morocho Cristhian Palacios Yadira Peralta.
Ing. Lorena Ruhl - Marco Rapallini - Javier FabiánMódulo 3: Integración de PHP con Bases de Datos Ing. A. Lorena Ruhl Universidad.
Ihr Logo PHP Parte 2 “php toma muchas sintaxis de lenguajes de alto nivel conocidos para poder trabajar”
BARRA BARRA INSERTAR BARRA BARRA INSERTAR BARRA DE HERRAMIENTAS DE DOCUMENTO HERRAMIENTAS BARRA DE HERRAMIENTAS DE DOCUMENTO HERRAMIENTAS VENTANA DE DOCUMENTODE.
PHP el Lenguaje Ejercicios Básicos.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Tema 11 Bases de Datos y el Lenguaje SQL
Fundamentos de Programación
Práctica Profesional PHP.
UNIVA menúsalir Taller de PHP 1 TALLER DE PHP Instructor: Mario G. Contreras Arriaga
Yeray Caballero López Juan Pablo Quesada Nieves
Manual PHP Básico Camilo Cartagena.
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
FUNDAMENTOS DE PROGRAMACIÓN VARIABLES, CONSTANTES Y TIPOS DE DATOS EN C.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
PHP: HyperText Preprocessor Sebastian Lozano Herrera Felipe Rojas Hernández.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Tratamientos secuenciales I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 8 Versión
Programación de Algoritmos Autor: Luis Eduardo Villavicencio Prof.: Ing. Danilo Jaramillo.
Consultas a mysql desde PHP índice 1. Introducción 5. Ejemplo 4. Tratamiento de datos 2. Instrucción SQL 3. Pasos C o n s u l t a s a m y s q l d e s d.
1 Tema 2.5 Cookies. Inicio 2 1.CookiesCookies La principal utilidad de las cookies (galletas) es la de solventar el problema de la falta de estado en.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
PROYECTO PYTHON INTEGRANTES DEL EQUIPO: NAVA CASTILLO CYNTHIA PAOLA VÁZQUEZ ORTEGA FELYBIER.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

INTRODUCCIÓN A PHP Curso de PHP Por Vicente Aguilar Imparte: José Alberto Rodríguez Castañeda

Dinámicas VS Estáticas Una página Web estática es aquélla que no cambia cuando un usuario la solicita: el servidor Web envía la página al navegador Web solicitante sin modificarla. El servidor modifica las páginas Web dinámicas antes de enviarlas al navegador solicitante.

Estáticas

Dinámicas

Acceso a base de datos Un servidor de aplicaciones le permite trabajar con recursos del lado del servidor, como una base de datos. Por ejemplo, una página dinámica puede indicar al servidor de aplicaciones que extraiga datos de una base de datos y los inserte en el código HTML.

Aplicación Web Una aplicación Web es un conjunto de páginas Web que interactúan entre sí, con el usuario y con diversos recursos en un servidor Web, incluidas las bases de datos. El contenido final de una página se determina sólo cuando el usuario solicita una página del servidor Web.

Base de datos El servidor de aplicaciones sólo se puede comunicar con la base de datos a través de un controlador que actúe de intermediario con la base de datos: el software actúa entonces como un intérprete entre el servidor de aplicaciones y la base de datos.

Tecnológias de servidor

1. INTRODUCCIÓN: Diferencias entre ASP y PHP Software propietario Free Software Plataformas Microsoft Varios lenguajes (VBScript, JavaScript) Multiplataforma Un solo lenguaje: PHP ASPPHP

Características de PHP Más rápido que ASP Lenguaje más fácil y potente Integración perfecta con 8 servidores HTTP Acceso a 20 tipos de Bases de Datos Diseño modular de fácil ampliación Licencia abierta

Historia y Desarrolladores Fechas Inicio del desarrollo en otoño de 1994 PHP Versión 1 en primavera 1995 PHP Versión PHP Versión PHP Versión 4 en el segundo trimestre de 2000 Equipo de Desarrollo (195 personas con acceso al CVS) Zeev Suraski y Andi Gutmans (Israel) Shane Caraveo (Florida) Stig Bakken (Norway) Andrei Zmievski (Lincoln, Nebraska) Sascha Schumann (Dortmund, Germany) Thies C. Arntzen (Hamburg, Germany) Jim Winstead (Los Angeles) Sam Ruby (Raleigh, NC) Rasmus Lerdorf (San Francisco)

Estadísticas de uso Fuente: etcraft Agosto 2000etcraft 3,314,634 Dominios, 637,746 Direcciones IP 19,823,296 Dominios analizados PHP instalado en el 16.7% de todos los dominios Fuente: ecuritySpacecom Septiembre 2000 Informe sobre Módulos ApacheecuritySpacecom 1,322,329 Servidores Apache analizados 429,589 (32.49%) PHP 247,642 (18.73%) Frontpage 133,414 (10.09%) mod_perl 111,576 (8.44%) mod_ssl 78,030 (5.90%) OpenSSL 46,404 (3.51%) ApacheJServ

Plataformas soportadas Plataformas (actualidad): UNIX (todas las variantes) Win32 (NT/W95/W98/W2000) QNX Mac (WebTen) OS/2 BeOS Plataformas (en perparación): OS/390 AS/400 Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus) NSAPI (Netscape iPlanet) Java servlet AOLServer Roxen Servidores (en preparación): Apache 2.0 WSAPI (O'Reilly WebSite) phttpd thttpd

Bases de datos soportadas SQL Adabas D Empress IBM DB2 Informix Ingres Interbase Frontbase mSQL Direct MS-SQL MySQL ODBC Oracle (OCI7,OCI8) PostgreSQL Raima Velocis Solid Sybase Otros dBase filePro (sólo lectura) dbm (ndbm, gdbm, Berkeley db)

2. El lenguaje PHP

2.1. Extensión de los ficheros .php3 Indica código PHP 3.x. .php4 Indica código PHP 4.x. .php Indica código PHP. Preferiremos esta extensión por ser más genérica. .phtml Actualmente en desuso.

2.2. Delimitadores echo 'Algunos editores (como el FrontPage) Sólo entienden este método';

20 OR Hour(time) Buenas noches. Buenos días. 20 || Hour(time) Buenas noches. Buenos días. <?php if ( Hour(time)>20 || Hour(time)<4) { echo “Buenas noches.”; } else { echo “Buenos días.”; } ?> 2.2. Delimitadores. Ejemplo.

2.3. Fin de línea print( date("M d, Y H:i:s", time()) ); print ( date( "M d, Y H:i:s", time() ) ;

2.4. Comentarios /* Comentarios estilo C. * Pueden extenderse durante varias líneas. */ // Comentarios estilo C++. Hasta fin de línea. # Comentarios estilo Perl. Hasta fin de línea.

Variables. Declaración y Uso. NO hace falta declararlas Llevan delante el signo del dólar ‘$’. $var_1 = 123; $var_2 = ’hola’; $var_3 = $var_1 * 2;

$mi_variable = ’Inicializamos como texto’; $mi_variable = 3; // Entero. $mi_variable = 3.14 * $mi_variable; // Float. $mi_variable = new MiClase(); // Objeto. Variables débilmente tipadas (tipo mixed) Variables. Tipado.

2.5.2.Variables. Tipado. Conversión automática. PHP realiza conversiones automáticas de tipo: $mivar = 123; echo $mivar; // Se convierte a string $mivar = ’3’; // Se convierte a entero $mivar = 2 + $mivar; // para realizar la suma

2.5.2.Variables. Tipado. Conversión explícita. Operador cast: $mivar = (string)123; Cabiar el tipo de una variable: $mivar = 12; settype($mivar, "double");

Variables. Ámbito. En el cuerpo de un fichero, las variables son GLOBALES al fichero y ficheros incluidos. En una función, son LOCALES a esa función. Dentro de una clase, sólo pueden ser accedidas a través del operador “->” sobre el nombre del objeto.

Referencias. Se definen con el carácter ‘&’: $alias = &$variable Se puede eliminar una referencia con la función unset(): $a = 1; $b = &$a; unset ($a); // Pero $b sigue valiendo 1

2.6. Tipos de datos. Enteros, en decimal, octal o hexadecimal. $MiVar = 123; Punto flotante. $MiVar = 1.3e4; Arrays. $MiVar[2] = 123; Strings. $MiVar = “Cadena de texto\n”; Objetos: $MiVar = new MiClase();

Tipos de datos Integer. Double. Boolean. String. Array. Object.

Conversiones Cambiar el tipo de dato a una variable: settype($var, “tipo de dato"). Retornar el tipo de dato de una variable: gettype($var). Casting, ejemplo: (tipo de dato) $var. Funciones relacionadas: is_bool($var), is_int($var), is_long($var), is_double($var), is_string($var), is_object($var), etc.

Arreglos Para crear un vector basta con usar corchetes. Ejemplo: var[1000]. Las matrices se utiliza doble corchete. Ejemplo: var[25][30]. En vez de utilizar índices se puede utilizar nombres. Ejemplo: var[‘nombre’].

Tipos de datos. Arrays. $MiArray[0] = 1; $MiArray[1] = “hola!!”; $MiArray[] = 3; echo $MiArray[2]; // 3

Tipos de datos. Arrays (2). Funcionan como vectores o tablas hash al mismo tiempo: $MiArray[“nombre”] = “Homer”; echo $MiArray[0]; // 1 echo $MiArray[“nombre”]; // “Homer” Y pueden tener más de una dimensión: $MiOtroArray[1][“pepe”][4] = “3 dimensiones!”;

Tipos de datos. Arrays (3). También se pueden definir con el constructor array() : $OtroArrayMas = array( 1, “hola”, 5); $YOtroArray = array( 0 => 1, 1 => “hola”, 2 => 5, 3 => 8, “nombre” => “Homer” );

Funciones relacionadas con arreglos count(vector) o sizeof(vector).-Devuelve el número de elementos. next, reset, prev, currenty end.-Se desplaza por el vector. array_splice(vector, pos ini, tamaño).-Extrae la posición de un elemento.

Tipos de datos. Strings. Comillas dobles.

Tipos de datos. Strings (2). Comillas simples. Si se delimitan entre comillas simples (’), las variables no se expanden y además las únicas secuencias de escape que se reconocen son “\\” y “\'” (barra invertida y comillas simples.)

Tipos de datos. Strings (4). Para concatenar cadenas se utiliza el operador ‘.’ : $cad = ‘A esta cadena ‘; $cad = $cad. ‘le vamos a añadir más texto.’; Se puede acceder a cada carácter como si fuera un array: $cad2 = “Tercer carácter de \$cad : ‘$cad[2]’”;

2.7. Constantes. define(“SALUDO”, “Hola, mundo!”); echo “La constante SALUDO vale ”. SALUDO; Las constantes se definen con la función define(): Las constantes en PHP se diferencian de las variables en que: no llevan el símbolo del dólar delante. puede accederse a ellas desde cualquier parte del código donde han sido definidas, sin restricciones de ámbito como en las variables. no pueden ser redefinidas o borradas una vez definidas. sólo pueden contener valores escalares, no vectores.

2.8. Mayúsculas y minúsculas. Comportamiento mixto en variables y funciones: En las variables, las mayúsculas y minúsculas IMPORTAN. En los nombres de funciones y palabras reservadas, las mayúsculas NO IMPORTAN.

Operadores aritméticos.

Auto-incremento y auto-decremento.

Operadores de bits.

Operadores lógicos.

Operadores. Asignación, igualdad e identidad.

Operadores. Asignación, igualdad e identidad. Ejemplo. $var1 = 1;// Asignación $var2 = 1; $var3 = “1”; ($var1 == $var2)// Cierto, son iguales ($var1 == $var3)// Son iguales (tras conversión) ($var1 === $var2)// Cierto, son idénticas ($var1 === $var3)// FALSO, el tipo no coincide

Operadores. Asignación, igualdad e identidad. Error. $var1 = 1; $var2 = 2; if( $var1 = $var2 ) { echo ‘iguales’; } else { echo ‘distintas’; }

Comparaciones.

Operadores de cadenas. $a = 1; $b = 2; $c = ‘El resultado de ‘. $a. ‘ + ‘. $b. ‘ es ‘. $a + $b;

Atajos en la asignación. += -= *= /= %= &= ^=.= >>= y <<= $var1 += 3;// $var1 = $var1 + 3; $var2 /= 2;// $var2 = $var2 / 2; $var3 >>= 1;// $var3 = $var3 >> 1;

Precedencia.

Estructuras de control. if … elseif … else if (expresión) { comandos } if (expresión) { comandos_cierto } else { comandos_falso }

Estructuras de control. if … elseif … else (2) if (expresion1) { comandos1 } elseif (expresion2) { comandos2 } elseif (expresion3) { comandos3 }... else { comandosElse }

while y do … while while (expresión) { comandos } do { comandos } while (expresión);

for for (expresión1; expresión2; expresión3) { comandos } $factorial5 = 1; for ($i = 2; $i <= 5; $i++ ) { $factorial5 *= $i; }

for (2) for ($factorial5 = 1, $i = 2; $i <= 5; $i++ ) { $factorial5 = $factorial5 * $i; } for ($factorial5=1, $i=2; $i<=5; $factorial5*=$i, $i++);

for (3). ASP. ’ ASP // PHP <?php for ($i = 1; $i <= 100; $i++) { echo $MiVar; } ?>

foreach foreach (array as variable) { comandos } $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Valor actual de \$a: $v.\n"; } // Valor actual de $a: 1 // Valor actual de $a: 2 // Valor actual de $a: 3 // Valor actual de $a: 17

foreach (2) foreach (array as indice => variable) { comandos }

switch switch (variable) { case valor1: comandos1 case valor2: comandos2... case valorN: comandosN default: comandosDefault }

switch (2) switch ($i) { case 1: echo “Código del 1”; case 2: echo “Código del 2”; case 3: echo “Código del 3”; break; case 4: echo “Código del 4”; }

2.11. Cierto o falso. Valores numéricos. $x = 1; // $x if( $x ) // se evalúa a cierto $x = 0; // $x definida como el entero 0 if( $x ) // se evalúa a falso

2.11. Cierto o falso. Strings. $x = "hello"; // asignamos una cadena a $x if( $x ) // se evalúa a cierto $x = ""; // cadena vacía if( $x ) // evalúa a falso // Excepción: $x = "0"; // cero en una cadena if( $x ) // evalúa a falso // (se convierte a entero)

2.11. Cierto o falso. Arrays. $x = array(); // $x es un array vacío if( $x ) // se evalúa como falso $x = array( "a", "b", "c" ); if( $x ) // se evalúa a cierto

2.11. Cierto o falso. Objetos. Class Yod {} // clase vacía $x = new Yod(); if( $x ) // se evalúa a falso Class Yod { // clase no vacía var $x = 1; } $x = new Yod(); if( $x ) // se evalúa a cierto

2.11. Cierto o falso. Constantes. TRUE es el valor entero decimal 1. FALSE es la cadena vacía.

Fechas Las funciones date() y gmdate() sirvan para dar el formato deseado a una cadena conteniendo una fecha. Si no se pasa ninguna cadena a estas funciones, se da el formato al tiempo actual (calculado internamente con time().

Comprobando fechas checkdate(nMes, nDia, nAño) nos permite chequear si una fecha dada es posible: es decir, que no se trata del dia 32 del mes 13. <?PHP if (checkdate(31, 2, 2000)) { echo "La fecha es correcta"; } else { echo "La fecha es incorrecta"; } ?>

2.12. Funciones. function nombre ($arg_1, $arg_2,..., $arg_n) { comandos return $salida; }

2.12. Funciones. (2) Ejemplo. function factorial ($valor) { if ($valor < 0) { return –1; // Error } if ($valor == 0 ) { return 1; } if ($valor == 1 || $valor == 2) { return $valor; } $ret = 1; for ($i = 2; $i <= $valor; $i++) { $ret = $ret * $i; } return $ret; } $factorial5 = factorial(5);

2.12. Funciones. (3) Valores por defecto. function enlace($url = ” { echo ‘ Pulsa aquí ’; }

Funciones. Argumentos por referencia. function MiFuncion(&$var) { $var++; } $a = 5; MiFuncion($a); // Aquí $a == 6

Funciones. Devolución por referencia. function &buscar_cliente($nombre) { //... buscamos... return $registro; } $cliente = &buscar_cliente(“Juan”); echo $cliente->dni;

Reutilizar Las construcciones include y require son de las mas conocidas en php. Con ellas puedes reutilizar porciones de código (script, o simple html) cuantas veces quieras, siendo uno de sus usos mas sencillos y típicos el de incluir cabeceras y pies de páginas en un sistema de plantillas.

Include Include o require La sentencia include() inserta y evalúa el archivo especificado. Puedes incluir aqui no solamente un fichero en tu servidor, sino una página web remota (indicando la url).

2.13. include y require require(“cabecera.inc”); If ($incluir == TRUE) { $ficheros = array(“uno”, ”dos”, ”tres”); foreach ($ficheros as $fichero) { include($fichero); }

3. Programando en PHP

Forms. Valores sencillos. Su nombre: Su edad: Hola. Tiene años.

Forms. Valores múltiples. Tortilla Paella Fabada Lentejas <?php echo "Su elección: "; foreach($menu as $plato) { echo "$plato \n"; } ?>

Acceso a las variables Existen 2 maneras de obtener el valor de las variables de una página HTML: 1.Se debe configurar el archivo PHP.ini y la variable register_globals activarla, luego con se puede referenciar en phpde esta manera: $varHTML. 2.Usando los arreglos: $HTTP_GET_VARS[“varHTML’], $HTTP_POST_VARS[“varHTML”] y $HTTP_POST_FILES[“varHTML”].

Funciones para variables isset($var).-Devuelve true si la variable existe. empty($var).-Devuelve truesi la variable está definida pero no se le ha asignado ningún valor. unset($var).-Libera los recursos asociados a las variables que se le pasan como parámetros. Devuelve 1 si no ha habido error y 0 si lo hubo. *. Para redirigir el script a una página, se puede usar el siguiente comando: header(“Location: ruta web”); exit();

3.2. Cookies. setcookie(“PruebaCookie”, “expiraré dentro de una hora”, time() ); setcookie(“PruebaCookie”, “”, time()); int setcookie (string nombre [, string valor [, int fin [, string camino [, string dominio [, int seguro]]]]])

3.3. Sesiones. bool session_start(void); bool session_register (mixed name [, mixed...]) bool session_destroy(void); // Ejemplo, un contador session_start(); print($contador); $contador++; session_register("contador"); ">Continuar

3.4. Tratamiento de errores. $nombre = '/etc/shadow'; $fichero ($nombre, 'r'); if( !$fichero ) { die("No se pudo abrir el fichero ($nombre)"); }

Cadenas. Comparación. int strcmp (string str1, string str2) int strcasecmp (string str1, string str2) // Ejemplo: if (strcmp($a, $b) == 0) { echo ‘iguales’; }

Cadenas. Subcadenas. string substr (string cadena, int inicio [, int tamaño]) $str = substr('abcdef', 2, 3); // cde $str = substr('abcdef', -2); // ef $str = substr('abcdef', -2, 1); // e $str = substr('abcdef', 1, -2); // bcd

Cadenas. Subcadenas. (2) int strpos (string cadena, string referencia [, int inicio]) int strrpos (string cadena, char referencia) string strstr (string cadena, string referencia) $i = strpos('cadena de prueba', 'de'); // $i = 2 $i = strpos('cadena de prueba', 'de', 5); // $i = 7 $s = strrpos('cadena de prueba', 'de'); // $s = 7 $s = strstr('cadena de prueba', 'de'); // $s = dena de prueba

Funciones de cadenas chr(#).-Devuelve el carácter asciiasociado. ord(caracter).-Devuelve el número asciiasociado a un caracter. strtolower($var) y strtoupper($var).-Convierte a minúscula y mayúscula respectivamente. strlen($var).-Devuelve la cantidad de caracteres. $var1.$var2.-Concatena. strpos($var,$subcadena).-Devuelve la posición de la subcadena, es false si no la encuentra.

Funciones de cadenas split(separador,cadena). Divide una cadena en varias usando un carácter separador. chop(cadena). Elimina los saltos de línea y los espacios finales de una cadena. strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicándonos la posición en la que se encuentra. str_replace(cadena1, cadena2, texto). Reemplaza la cadena1 por la cadena2 en el texto.

Funciones de cadenas Trim() Eliminar espacios en las puntas de la cadena. Tambien existe rtrim() y ltrim() para eliminar solo espacios a la derecha o a la izquierda respectivamente de una cadena pasada como argumento.

Funciones de fechas time().-Devuelve un long con la cantidad de segundos desde el hasta la actualidad. getdate(long_fecha).-Devuelve un vector con los siguientes campos: seconds, minutes, hours, mday, mon, yeary otros menos importantes. mktime(hora,minutos,segundos,mes,día,año)- Devuelve un long con los valores enviados. checkdate(mes,día,año).-Devuelve true si la fecha ingresada es válida.

Cadenas. Imprimir y formatear. int printf (string formato [, mixed args...]) string sprintf (string formato [, mixed args...]) 1.Relleno 2.Alineación 3.Número de caracteres 4.Precisión 5.Tipo %El carácter de tanto por ciento. bEntero en binario. cEntero como carácter ASCII. dEntero en decimal. fDouble en punto flotante. oEntero en octal. sCadena. xEntero en hexadecimal (minúsculas). XEntero en hexadecimal (mayúsculas). Secuencias de formato

printf() y sprintf() Estas funciones sirven para manipular (dar formato) a una cadena. La única diferencia entre ellas es que printf vuelca la cadena con formato.

Ejemplos <?php $pi=3.1416; printf("Pi es:%d ",$pi); printf("Pi es:%.2f ",$pi); printf("Pi es:%.3f ",$pi); printf("Pi es:%.4f ",$pi); $numero = 65; printf("%c",$numero); $number= 255; printf("En formato decimal: %d ",$number); printf("En formato hexadecimal: %x ",$number); printf("En formato hexadecimal: %X ",$number); printf("En formato octal: %o ",$number); printf("Decimal exponencial: %e ",$number); printf("En binario: %b ",$number); ?>

Ejemplos <? printf("%.2s\n ", "patata"); // pa printf("%.4s\n ", "patata"); // pata printf("*%9.4s\n ", "patata"); printf("*%9s\n ", "patata"); printf("%-9s*\n ", "patata"); // rellena espacios a la izquierda printf("%09s\n ", "patata"); // 9 caracteres rellena con ceros printf("%'x9s\n ", "patata"); // patata. El resto hasta 9 caracteres ?>

Ejemplos <? printf("%02d/%02d/%04d", "02", "12", "2005"); $pago1=68.75; $pago2=54.35; $pago=$pago1 + $pago2; // echo $pago mostraría "123.1" // Mostrar al menos un dígito entero y exactamente // dos decimales, rellenando con ceros printf ("%01.2f", $pago); ?>

Escapar caracteres. SQL. $busca = “D’Alton”; // Habrá que escapar el apóstrofe $sql = “SELECT * FROM usuarios WHERE apellido = \”’. addslashes($busca). “\’”; *Inyección SQL

Escapar caracteres. Shell. string system (string comando [, int valor_salida]) echo system(“finger $usuario”); ¿Qué pasa si $usuario=“pepe ; apachectl stop” ? string escapeshellcmd (string comando)

Ejemplo

Exec y comandos con ` <? exec(dir, $a); echo gettype($a); foreach ($a as $aa){ echo "$aa "; } $a=`ls –l`; echo $a; ?>

Escapar caracteres. HTML. $valor = “a>b”; echo ‘<input type=hidden name=var value=”’. htmlspecialchars($valor). ‘”>’; // Test "); echo $nuevo; ?> <?php $valor="select * from empleados where nombre like % "; $valor=urlencode($valor); ?> Urldecode();

Extraer campos. array explode (string delimitador, string cadena [, int límite]) string implode (string delimitador, array campos) $cadena = implode(“:”, $campos); $cadena = “campo1:campo2:campo3”; $campos = explode(“:”, $cadena);

array explode ( string separador, string cadena [, int limite] ) <?php // Ejemplo 1 $pizza = "trozo1 trozo2 trozo3 trozo4 trozo5 trozo6"; $trozos = explode(" ", $pizza); echo $trozos[0]; // trozo1 echo $trozos[1]; // trozo2 ?>

implode ( string elemento_union, array trozos ) Devuelve una cadena que contiene una representación de todos los elementos de la matriz en el mismo orden, pero con la cadena elemento_union en medio de los mismos. <?php $array = array('apellido', ' ', 'telefono'); $separado_por_comas = implode(",", $array); echo $separado_por_comas; // apellido, ,telefono ?>

Extraer campos. Expresiones regulares. array split (string delimitador, string cadena [, int límite]) $fecha = "12/4 2000"; $campos = split ('[ /.-]', $fecha);

Ejemplos if (ereg("^[0-9]*$", $numero)) -e if (ereg("^[1-9][0-9]{6,7}", $numero)) -t if (ereg("^[1-9][0-9]{1,2}", $numero)) -l if (ereg("^[0-9]+\.[0-9]{1,2}$", $numero)) -f str_replace (" ", "\r\n", $instr); split('[- :]', $iso_date) ereg("^abc",$string); ereg("abc",$string);

Ejemplos eregi("(ozilla.[23]|MSIE.3)",$HTTP_USER_A GENT); $string = ereg_replace("^"," ",$string);

Ordenar un array. sort(): Ordena el array por contenido en orden ascendente. rsort():Ordena por contenido en orden descendente. ksort():Ordena por el índice en orden ascendente. rksort():Ordena por el índice en orden descendente.

Archivos. Abrir y cerrar. int fopen (string nombre, string modo [, int include_path]) int fclose (int identificador) Modos: ‘r’Sólo lectura. Puntero al inicio. ‘r+’Lectura/escritura. Puntero al inicio. ‘w’Sólo escritura. Se trunca el fichero. ‘w+’Lectura/escritura. Se trunca el fichero. ‘a’Sólo escritura. Puntero al final. ‘a+’Lectura/escritura. Puntero al final.

Ficheros. Leer y escribir. string fgets (int identificador, int tamaño) mixed fscanf (int identificador, string formato [, string var1...]) int feof (int identificador) array file (string fichero [, int include_path]) int fwrite (int identificador, string cadena [, int tamaño])

Ficheros. Copiar / renombrar / borrar. int copy (string origen, string destino) int rename (string origen, string destino) int unlink (string fichero)

Otras funciones de archivos file_exists(“archivo”); is_file(“archivo”); is_directory(“archivo”); is_readable(“archivo”); is_writeable(“archivo”); is_executable(“archivo”);

Directorios. int chdir (string directorio) int mkdir (string nombre, int modo) int rmdir (string nombre) int opendir (string nombre) string readdir (int identificador) void closedir (int identificador)

Directorio. Listado de contenidos. $directorio = opendir('.'); while (($fichero = readdir($directorio)) !== FALSE) { echo "$fichero\n"; } closedir($directorio);

Ficheros. Envío. <FORM ENCTYPE="multipart/form-data" ACTION="recibir.php" METHOD=POST> Fichero: // Contenido de “recibir.php” echo ’Recibido el fichero: "’.$fichero_name.’" ’; echo ’Tamaño del fichero: ’. $fichero_size. ’ ’; echo ’Tipo mime: ’. $fichero_type. ’ ’; rename($fichero, $fichero_name);

POO. Definición de una clase. class NombreClase { var $variables; function metodos ($parametros) { codigo }

POO. Definición de una clase. Ejemplo. class Coche { var $velocidad; // Velocidad actual // Constructor por defecto. El coche está parado. function coche() { $this->velocidad = 0; } // Constructor que indica la velocidad inicial. function coche($vel) { $this->velocidad = $vel; } // Método acelerar. El coche va más rápido. function acelerar() { $this->velocidad++; } // Método frenar. El coche va más lento hasta frenar. function frenar() { if ($this->velocidad > 0) { $this->velocidad--; }

POO. Herencia. class ClaseDerivada extends ClaseBase { // definición de métodos y variables // exclusivos de ClaseDerivada, // y redefinición (especialización) // de métodos de ClaseBase }

POO. Herencia. Ejemplo. class CocheFantastico extends coche() { // Frenado instantáneo function frena() { $this->velocidad = 0; } // ¡El coche habla! function habla() { echo “Hola, Michael.”; } // ¡Salta! function salta() { echo “Boing!!”; } // Turbo propulsión function turbo() { $this->velocidad = 200; }

POO. Creación y uso de objetos. // Creación (instanciación) $MiCoche = new Coche; $MiCocheSeMueve = new Coche(10); // Uso $MiCoche->acelerar(); echo $MiCoche->velocidad; $MiCoche->frenar();

BD. Conexión y desconexión. int mysql_connect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contraseña]]]) int mysql_close ([int identificador]) int mysql_pconnect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contraseña]]]) int mysql_pclose ([int identificador])

BD. Conexión y desconexión. Ejemplo. $link = mysql_connect (" "nobody", ""); if (!$link) { die ("No se pudo conectar"); } print ("Conexión realizada"); mysql_close ($link);

BD. Elegir una BD. int mysql_select_db (string nombre_bd [, int identificador]) if (!mysql_select_db("prueba", $link)) { die (“No existe la BD”); }

BD. Querys. int mysql_query (string query [, int identificador]) int mysql_db_query (string nombre_bd, string query [, int identificador]) int mysql_free_result (int result) $query = "SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura"; $asignaturas = mysql_query($query, $link); if (!$asignaturas) { die (“Error en el query”); }

BD. Extraer información. int mysql_affected_rows ([int identificador]) int mysql_num_rows (int resultado) array mysql_fetch_row (int resultado) array mysql_fetch_array(int resultado [, int tipo_resultado]) object mysql_fetch_object (int result) array mysql_fetch_lengths (int resultado) int mysql_data_seek (int resultado, int numero_fila)

BD. Extraer información. Ejemplos. while ($fila = mysql_fetch_array($asignaturas)) { echo $fila[‘codigo’]. ‘ ‘. $fila[‘nombre’]. “\n”; } while ($fila = mysql_fetch_object($asignaturas)) { echo $fila->codigo. ‘ ‘. $fila->nombre. “\n”; }

3.9. Acceso a BD unificado. Clase ConexionGenerica. class ConexionGenerica { var $link; function connect($servidor, $usuario, $clave) { echo " El método connect ", "no está implementado en la ", "clase ".get_class($this)." "; return FALSE; } function close() {} function select_db($base_datos) {} function query($query) {} function fetch_array($resultado) {} function free_result($resultado) {} }

3.9. Acceso a BD unificado. Clase ConexionMySQL. require ("ConexionGenerica.inc"); class ConexionMySQL extends ConexionGenerica { function connect($servidor="localhost", $usuario="nobody", $clave="") { return $this->link = mysql_connect($servidor, $usuario, $clave); } function close() {} function select_db($base_datos) {} function query($query) {} function fetch_array($resultado) {} function free_result($resultado) {} }

3.9. Acceso a BD unificado. Uso. // Fichero CreaConexion.inc require ("ConexionMySQL.inc"); $conexion = new ConexionMySQL(); require ("CreaConexion.inc"); $conexion->connect("localhost", "nobody"); $conexion->select_db("prueba", $link); $asignaturas = $conexion->query("SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura");

SQL server <? $conectID = mssql_connect("NombreServidor","SA",""); mssql_select_db("Northwind“, $conectID ); $result=mssql_query("select * from products",$numero ); ? >

Conexión ODBC

<? $process=odbc_exec($sqlconnect, $sqlquery); while(odbc_fetch_row($process)){ $company=odbc_result($process,"company"); echo "$companyName "; } odbc_close($sqlconnect); ?>

Obtiendo los datos <? while ($row=mssql_fetch_array($result)) { $counter++; $c1=$row["ProductName"]; $c2=$row["UnitPrice"]; echo ("$counter c1: $c1 c2: $c2\n"); } mssql_close($conectID); ?>

Postgres Triggers Rules Sub-system de permisos de usuarios Sequencias Explicacion de consultas Soporte para language procedural User-defined functions: SQL, C, Tcl, Ruby, Perl, PL/PgSQL, Python

Transacciones Extensiones PostgreSQL para lenguajes como: SQL, C, Perl, PL/PgSQL, Python, Ruby, Tcl

Postgres - Conexión <? $conn = pg_connect("host= port=5432 password=a user=postgres dbname=prueba"); if (pg_ErrorMessage($conn)) { echo " Ocurrio un error conectando a la base de datos:. "; exit; } ?>

Conexiones persistentes <? //conexión tradicional $conn = pg_connect("dbname=test user=testuser password=testuser"); //Abre una conexión persistente $conn = pg_pconnect("dbname=test user=testuser password=testuser"); ?>

La consulta, inserción o actualización <? $resultado=pg_exec("insert into cinemas values ('6','cinemas 6','centro')");} if (!$resultado) { echo " Error de busqueda "; exit; } ?>

Recorriendo el recordset <? for($cont=0;$cont<$filas;$cont++) { $campo1=pg_result($resultado,$cont,0); $campo2=pg_result($resultado,$cont,1); echo " $campo1 $campo2\n"; } pg_FreeResult($resultado); //liberando ?>

Recorriendo el recordset como objeto <? while ($tRow = pg_fetch_object($tResult)) { print(“$tRow->character “); } ?>

Transacciones <? pg_exec($conn, "BEGIN;"); pg_exec($conn, "INSERT INTO plant VALUES (6, 'cactus', 'green')"); pg_exec($conn, "COMMIT;"); ?>

ADODB ADOdb es una librería de astracción de bases de datos para php, existe tambien una equivalente para Pearl.

Soporte MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, and generic ODBC, ODBTP. The Sybase, Informix, FrontBase and PostgreSQL.

Caracteristicas “La mas rápida” Ampliamente portable Suporte para generación de código SQL, performance monitoring. Facil de aprender Control de calidad Madura, desde 2000 Disponible bajo Licencia BSD

Ejemplo Mysql <? include('/path/to/adodb.inc.php'); $DB = NewADOConnection('mysql'); $DB->Connect($server, $user, $pwd, $db); $rs = $DB->Execute("select * from table where key=?",array($key)); while (!$rs->EOF) { print_r($rs->fields); $rs->MoveNext(); } ?>

Ejemplo Postgres <? $conn = &ADONewConnection('postgres'); $conn->PConnect('host= port=5432 dbname=phpcurso user=phpuser password=php); ?> PEAR :: DBD:: 2

Access a traves de ADODB <? $db =& ADONewConnection('access'); $dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=d:\\northwind.mdb;Uid=Adm in;Pwd=;"; $db->Connect($dsn); ?>

Obteniendo datos con PHP <? $rs =& $rs->Execute($sql); while (!$rs->EOF) { var_dump($rs->fields); $rs->MoveNext(); } ?>

Obteniendo datos con extension ADODB <? $rs =& $rs->Execute($sql); $array = adodb_getall($rs); var_dump($array); ?>

MVC Model View Controller Separando las cosas…

MVC Es un patrón de diseño de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos de forma que las modificaciones al componente de la vista pueden ser hechas con un mínimo impacto en el componente del modelo de datos.datos interfaz de usuariológica de controlcomponentes

Flujo de datos El usuario interactúa con la interfaz de alguna manera (ej. presionando un botón, enlace) El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario El controlador accede al modelo, posiblemente actualizando los datos enviados por el usuario

Flujo de datos El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario La vista usa el modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista. La interfaz espera por nuevas interacciones de usuario para iniciar nuevamente el ciclo.

Modelo El Modelo es todo acceso a base de datos, y las funciones que llevan lo que llaman "lógica de negocio". O sea, las funciones más "pequeñas" con significado: ingresar una cantidad, obtener un listado de historias,...

Vista La vista, en una aplicación web, es el HTML (o XML, WAP, PDF,...) y lo necesario para convertir datos en HTML. El acceso a bases de datos no es vista. La gestión de sesiones no es vista.

Controlador El controlador es lo que une la vista y el modelo. Por ejemplo, son las funciones que toman los valores de un formulario, consultan la base de datos (a través del modelo) y producen valores, que la vista tomará y convertirá en HTML.

¿Porque? Tener la vista separada del controlador permite cambiar la aplicación para que genere, en lugar de HTML, algo distinto sin tener que tocar más que una parte completamente delimitada del código. Ayuda a evitar el spaghetti. Si se cambia de gestor de bases de datos este cambio sólo afecta a estas funciones

Frameworks Midgard Project Blueshoes Mojavi Project Phrame Cake PRADO WACT Jaws BinaryCloud Biscuit TaniPHP PHPonTRAX

MVC rapido y sin complicaciones Un case Funciones u objetos Pantallas de presentacion

Generación de PDF - FPDF FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib.

Caracteristicas Elección de la unidad de medida, formato de página y márgenes Gestión de cabeceras y pies de página Salto de página automático Salto de línea y justificación del texto automáticos Admisión de imágenes (JPEG y PNG) Colores Enlaces Admisión de fuentes TrueType, Type1 y codificación Compresión de página

Ejemplo AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,'¡Hola, Mundo!‘,1); $pdf->Cell(60,10,'Hecho con FPDF.',0,1,'C'); $pdf->Output(); ?> tamaño a4 alargado, milímetros

Imagenes <? $pdf->Image('foto.png',50,50,80); //(->, abajo, ancho) ?>

Tablas <? $data[0][0]=1; $data[0][1]=2; $data[0][2]=3; $data[0][3]=4; $pdf->Ln(); foreach($data as $row) { foreach($row as $col) $pdf->Cell(10,6,$col,1); $pdf->Ln(); } ?>

Enlaces <? $pdf->Write(5,'aquí'," $pdf->Image('foto.png',10,10,30,0,'', ' ?>

Imágenes - Librería GD GD es un librería open source para la creación dínámica de imágenes escrita en C, puede ser usada en Perl y PHP Activar la librería gd2 en php.ini

Ejemplo Simple <? header ("Content-type: image/png"); $im = ImageCreate (100, 30); $color_fondo = ImageColorAllocate ($im, 240, 240, 240); $color_texto = ImageColorAllocate ($im, 233, 14, 91); ImageString ($im, 10, 25, 5, "fsafa", $color_texto); ImagePng ($im); ?>

Ejemplo 2 <?php Header("Content-type: image/png"); $im = ImageCreate(300, 300); $green = ImageColorAllocate($im, 0, 255, 0); $white = ImageColorAllocate($im, 255, 255, 255); $blue = ImageColorAllocate($im, 0, 0, 255); // ponemos los vertices por pares, en este caso son 5 vertices $vertices = Array(150, 10, 250, 100, 250, 200, 50, 200, 50, 100); ImageFill($im, 0, 0, $white); // dibujamos un pentagono ImagePolygon($im, $vertices, 5, $blue); // relenamos el pentagono de verde y lo bordeamos por azul ImageFillToBorder($im, 150, 150, $blue, $green); ImagePng($im); ?>

Envio de correo <? $ // Dirección a la que va dirigida el e- mail. $asunto // no comment :) $cuerpo // el cuerpo del correo. mail("$ ","$asunto","$cuerpo"); ?>

Fin