1 Bases de Datos Cliente Servidor
2 Arquitectura Cliente ServidorEsta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras. En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema. La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma. Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema. La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.
3 Arquitecturas Cliente Servidor
4 PHP: Hypertext Pre-Procesor (1998)Herramienta para el desarrollo de aplicaciones Web
5 Propósitos de PHP Lenguaje de scripts de propósito generalLenguaje interpretado de alto nivel embebido en páginas HTML y ejecutado en el servidor Diseñar páginas dinámicas de servidor Generar páginas bajo petición del cliente Otros lenguajes para Internet ASP, Cold Fusion, Perl
6 Características de PHPLenguaje de programación de estilo clásico: variables, sentencias condicionales, ciclos, funciones. No es un lenguaje de marcas como HTML, ó XML. Está mas cercano a JavaScript o a C. Java o JavaScript que se ejecutan en el navegador, PHP se ejecuta en el servidor, permite acceder a los recursos que tenga el servidor: BD
7 Ejecución de PHP El programa PHP es ejecutado en el servidor y el resultado enviado al navegador. El resultado es normalmente una página HTML.
8 Características de PHPSoftware libre Multiplataforma (Unix, Windows, Mac: Open Source) Aplicaciones sencillas Aplicaciones avanzadas (BD, gráficos)
9 Capacidades de PHP Soporte para múltiples sistemas operativosSoporte para múltiples servidores (Apache, Netscape) Soporte para múltiples BD (Ingres, Oracle, MySQL, DB2, Sybase) Generación de resultados en múltiples formatos (XML, imágenes, .PDF)
10 ASP vs. PHP ASP (Active Server Pages) Derivado de Visual BasicBásicamente para Windows (Microsoft) Comunicación y corrección de errores más lenta Gestión de M más lenta (en PHP los objetos se ejecutan en el mismo espacio de M) Compilación más lenta (VBScript o Jscript)
11 Instalación Configuración más habitual: LAMP Apache : Servidor de WebMySQL: Gestor de BD
12 Nuestro primer PHP Azul: HTML Rojo: PHP
"; for($i=0;$i<10;$i++) { echo "Linea ".$i."
"; } ?> Parte de HTML normal. Parte de PHP Linea 0 Linea 1 Linea 2 Linea 3 Linea 4 Linea 5 Linea 6 Linea 7 Linea 8 Linea 9 sentencias PHP en las páginas HTML Azul: HTML Rojo: PHP
13 Variables Comienzan con el símbolo del dólar $ y no se defiinen No tienen tipos (misma variable: número y caract.)
",$c; ?> Hola Mundo
14 Operadores AritméticosNombre Ejemplo + Suma 5+6 - Resta 7-9 * Multiplicacación 6*3 / División 4/8 % Módulo 7%2 ++ Suma 1 $a++ -- Resta 1 $a-- Parecidos a los de C y Java Aplicables a variables y const. numéricas.
15 Operadores Aritméticos
"; echo $a * $b,"
"; echo $a / $b,"
"; $a++; echo $a,"
"; $b--; echo $b,"
"; ?>
16 Operadores de ComparaciónNombre Ejemplo = Igual $a == $b != Distinto $a != $b < Menor que $a < $b > Mayor que $a > $b <= Menor o igual $a <= $b >= Mayor o igual $a >= $b Comparar y tomar decisiones.
17 Operadores de Comparación
"; echo $a < $b,"
"; echo $a > $b,"
"; echo $a >= $c,"
"; echo $b <= $c,"
"; ?> Devuelve cierto cuando se cumple la condición
18 Operadores Lógicos Operador Nombre Ejemplo && Y (7>2) && (2<4)and (7>2) and (2<4) || O (7>2) || (2<4) or (7>2) or (2<4) ! NO !(7>2)
19 Operadores Lógicos
"; echo ($a == $b) || ($b == $c),"
"; echo !($b <= $c),"
"; ?> 1
20 Sentencias Condicionales
21 Sentencia switch ... case
22 Sentencia While
"; $i++; } ?> Final
Inicio El valor de i es 0 El valor de i es 1 El valor de i es 2 El valor de i es 3 El valor de i es 4 El valor de i es 5 El valor de i es 6 El valor de i es 7 El valor de i es 8 El valor de i es 9 Final
23 Sentencia For
"; } ?> Final
Inicio El valor de i es 0 El valor de i es 1 El valor de i es 2 El valor de i es 3 El valor de i es 4 El valor de i es 5 El valor de i es 6 El valor de i es 7 El valor de i es 8 El valor de i es 9 Final
24 Salida Sentencia printf
25 Printf
",$var,$num); printf(""); for ($i=0;$i<10;$i++) { printf("
"); ?> Puede fácimente intercalar texto con números 3 0 1 2 3 4 5 6 7 8 9 ",$i); } printf("%10.d
26 Manejo de cadenas Strlen (cadena). Nos devuelve el número de carácteres de una cadena. split(separador,cadena). Divide una cadena en varias usando un carácter separador. sprintf(cadena de formato, var1, var2...). Formatea una cadena de texto al igual que printf pero el resultado es devuelto como una cadena. substr(cadena, inicio, longitud). Devuelve una subcadena de otra, empezando por inicio y de longitud longitud. 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.
27 5 Esto es una prueba 8x5 = 40 una Iguales 9 Un pez de color rojo,"; $palabras=split(" ","Esto es una prueba"); for($i=0;$palabras[$i];$i++) echo $palabras[$i],"
"; $resultado=sprintf("8x5 = %d
",8*5); echo $resultado,"
"; echo substr("Devuelve una subcadena de otra",9,3),"
"; if (chop("Cadena \n\n ") == "Cadena") echo "Iguales
"; echo strpos("Busca la palabra dentro de la frase", "palabra"),"
"; echo str_replace("verde","rojo","Un pez de color verde, como verde es la hierba."),"
"; ?> 5 Esto es una prueba 8x5 = 40 una Iguales 9 Un pez de color rojo, como rojo es la hierba.
28 Funciones
"; ?>
29 Librería Permiten agrupar varias funciones y variables en un mismo archivo Luego podemos incluir esta librería en distintas páginas y disponer de esas funciones fácilmente. Esta cabecera estará en todas sus páginas.
} function PiePagina() { ?>
Este es el pie de página.
Autor: Joaquin Gracia } ?> Ahora vamos a crear 2 páginas que usan la librería
30 Página con la misma cabecera y pie de página definida en la librería "libreria01.phtml"
Contenido blalbl blalb alb
más cosas...
fin
Esta cabecera estará en todas sus páginas. Página Contenido blalbl blalb alb más cosas... fin Este es el pie de página. Autor: Joaquin Gracia
31 Página con la misma cabecera y pie de página definida en la librería "libreria01.phtml"
completamente distinta
pero comparte el pie y la cabecera con la otra.
Esta cabecera estará en todas sus páginas. Esta es otra página completamente distinta pero comparte el pie y la cabecera con la otra. Este es el pie de página. Autor: Joaquin Gracia
32 Formateo de página Definir librerías para conseguir que todas nuestras páginas tengan el mismo formato de página, incluyendo las partes comunes en librerías. Modificando la librería modificamos todas las páginas muy rápido. libpagina.phtml Esta cabecera estará en todas sus páginas.
} function PiePagina() { ?>
Este es el pie de página.
Autor: Joaquin Gracia } function Indice() { ?> Pagina 1
Pagina 2
} ?>
33 Esta cabecera estará en todas sus páginasEsta cabecera estará en todas sus páginas. Esta es otra página Pagina 1 completamente distinta Pagina 2 pero comparte el pie y la cabecera con la otra. Este es el pie de página. Autor: Joaquin Gracia ejem06a.phtm
Esta es otra página
completamente distinta
pero comparte el pie y la cabecera con la otra.
34 ejem06a2.phtml
Esta cabecera estará en todas sus páginas. Página 1 Pagina 1 Contenido blalbl blalb alb Pagina más cosas... fin Este es el pie de página. Autor: Joaquin Gracia Página 1
Contenido blalbl blalb alb
más cosas...
fin
35 Envío y recepción de datos Al diseñar un formulario debemos indicar la página PHP que procesará el formulario, así como el método por el que se le pasará la información a la página. Ejemplo de procesado de formularios
41 Atributo INPUT. El elemento INPUT sin ningún atributo define por defecto una ventana de escritura de 20 caracteres de longitud por una línea de ancho. Se utiliza para: Campos de entrada por teclado. Botones de selección. Casillas de marca. Botones de proceso. Botones de inicialización (reset). Imágenes sensibles al ratón.
42 INPUT admite varios atributosSIZE define la longitud de la ventana de texto. MAXLENGTH define la máxima longitud de la cadena que se puede escribir dentro de la ventana. NAME define el nombre de la ventana (que en realidad es un campo dentro del registro que conforma el formulario). VALUE define un valor predeterminado (vacía por defecto).
43 Atributo TYPE de INPUT TYPE define como se muestra el texto. TYPE=TEXTTYPE=PASSWORD, que presenta el texto como una clave. TYPE=HIDDEN no se mostará en el navegador (aunque se pueda ver en las fuentes). TYPE=SUBMIT generar un botón que al ser pulsado cierra la captura de datos del formulario y procede a ejecutar lo definido en el atributo ACTION. TYPE=RESET, para delar los valores como estaban al incio TYPE=RADIO genera botones circulares que permiten seleccionar un valor predeterminado o activar una opción Estableciendo un valor VALUE="B" y usando CHECKED queda predeterminado. TYPE=CHECKBOX genera casillas de marca que permiten seleccionar un valor predeterminado o activar una opción. Aquí pueden seleccionarse más de una a la vez. También puede usarse CHECKED.
44 Ejemplo: Formulario con diversos atributos del INPUT Se vé: Prueba Reset Go Tipo Clase: A B
45 Ejemplo: Formulario para enviar un archivo: Se vé: Enviar el fichero: Enviar Prueba Examinar
46 Envio de s PHP nos posibilita enviar s usando la instrucción mail( ) destinatario: dirección de a donde se enviará el mensaje, tema: subject del mensaje texto: cuerpo del mensaje en formato texto plano. Sintaxis extendida de la instrucción mail( ) información adicional de cabecera: Reply-To:, From:, Content-type:... que nos permiten tener un mayor control sobre el mensaje.
47 <. -- Manual de PHP de WebEstilo Ejemplo de envio de
Introduzca su direccion de
48 <. -- Manual de PHP de WebEstilo Ejemplo de envio de
$direccion=$_GET['direccion']; $tipo=$_GET['tipo']; if ($direccion!=""){ if ($tipo=="plano"){ // Envio en formato texto plano mail($direccion,"Ejemplo de envio de ","Ejemplo de envio de de texto plano\n\nWebEstilo.\nhttp://www.webestilo.com/\n Manuales para desarrolladores web.\n","FROM: Pruebas } else { // Envio en formato HTML mail($direccion,"Ejemplo de envio de ","
WebEstilo.
http://www.webestilo.com/
Manuales para desarrolladores web.","Content-type: text/html\n", "FROM: Pruebas } echo "Se ha enviado un a la direccion: ",$direccion," en formato ",$tipo,"."; } ?>
e m a i l. p h t m l
49 MySQL: Servidor de BD PHP con acceso a base de datos hemos elegido la base de datos MySQL: gratuita mas empleada en entornos UNIX, el servidor donde tenemos alojadas las páginas (Apache) nos tiene que proporcionar herramientas para crearla o acceso al Telnet para que la creemos por nosotros mismos.
50 Crear la base de datos Comando para crear una base de datos MySQL :mysqladmin -u root create base_datos Con este comando conseguimos crear la una base de datos en el servidor de bases de datos de nuestro servidor.
51 Crear las tablas en la base de datosContienen la estructura de la información a almacenar Lenguaje de consultas SQL Ejemplo: tabla ¨prueba¨ con 3 campos: identificador, nombre y apellido de la persona. Para crear la tabla puede usar la herramienta de administración de MySQL de su servidor web escribir un archivo de texto con el contenido de la sentencia SQL equivalente y luego decirle al motor de base de datos que la ejecute con: mysql -u root base_datos
52 prueba.sql CREATE TABLE prueba ( ID_Prueba int(11) DEFAULT '0' NOT NULL auto_increment, Nombre varchar(100), Apellidos varchar(100), PRIMARY KEY (ID_Prueba), UNIQUE ID_Prueba (ID_Prueba) );
53 Conexión a la base de datosCreada la base de datos en nuestro servidor, el siguiente paso es conectarnos a la misma desde una página PHP. PHP nos proporciona una serie de instrucciones para acceder a bases de datos MySQL. Al ejecutar la instrucción mysql_connect creamos un vínculo entre la base de datos y la pagina PHP, este vínculo será usado posteriormente en las consultas que hagamos a la base de datos. Terminado de usar el vínculo con la base de datos, lo liberaremos con la instrucción mysql_close para que la conexión no quede ocupada.
54 Conexión a base_datos Conexión con la base de datos conseguida.
55 Consultas a la base de datosUsamos el vínculo establecido en la conección. Para facilitar la programación hemos separado la función de conexión en una librería a parte, de tal manera que la incluiremos en todas las páginas que accedan a la base de datos.
56 Librería para conección "conex.phtml“
57 Instrucciones nuevas mysql_query mysql_fetch_array mysql_free_resultconsultar a la base de datos en el lenguaje de consultas SQL mysql_fetch_array extraer los datos de la consulta a un arreglo mysql_free_result liberamos la memoria usada en la consulta.
59 Ejemplo de uso de bases de datos con PHP y MySQLNombre Apellidos Maria Gomez Marcos Martinez Antonio Ferrera Roman Zamora Daniel Pineda Martha Mendez mysql_query("select * from prueba",$link);
60 Inserción de registrosConección a una base de datos Consultas a la base de datos, Introducir nuevos registros en la base de datos Usar un formulario Indicamos que debe ser procesado una pagina PHP, esta página lo que hará será introducir los datos del formulario en la base de datos.
62 <. php include("conex 63 Ejemplo de uso de bases de datos con PHP y MySQLNombre: Apellidos: Grabar Nombre Apellidos Maria Gomez Marcos Martinez Antonio Ferrera Roman Zamora Daniel Pineda Martha Mendez 64 Borrado de registros Uno de los procesos más sencillos.Para indicar que elemento vamos a borrar hemos usado un enlace a la página borra.phtml pasándole el ID_Prueba de cada registro, de esta manera la página borra.phtml sabe que elemento de la tabla ha de borrar. 65  : non-breaking space , Da una nueva linea, si text too long 66 borra.phtml La página borra.phtml se conecta a la base de datos y borra el registro indicado en la variable $id que ha sido pasado desde la página ejem07e.phtml. Una vez el registro se ha borrado se vuelve a cargar la página ejem07e.phtml 67 Ejemplo de uso de bases de datos con PHP y MySQLNombre Apellidos Borrar Maria Gomez Borra Marcos Martinez Antonio Ferrere Roman Zamora Daniel Pineda Martha Mendez
Nombre Apellidos %s %s ", $row["Nombre"], $row["Apellidos"]); } mysql_free_result($result); mysql_close($link); ?> ejem07d.phtmlEjemplo de uso de bases de datos con PHP y MySQL
 : non-breaking space , Da una nueva linea, si text too long Nombre Apellidos Borrar %s %s Borra ", $row["Nombre"],$row["Apellidos"],$row["ID_Prueba"]); } mysql_free_result($result); mysql_close($link); ?>