Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste...

67
Bases de Datos Cliente Servidor

Transcript of Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste...

Page 1: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Bases de Datos Cliente Servidor

Page 2: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Arquitectura Cliente Servidor

Esta 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.

Page 3: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Arquitecturas Cliente Servidor

Page 4: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

PHP: Hypertext Pre-Procesor(1998)

Herramienta para el desarrollo de aplicaciones

Web

Page 5: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Propósitos de PHP Lenguaje de scripts de propósito

general Lenguaje 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

Page 6: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Características de PHP

Lenguaje 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

Page 7: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

Page 8: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Características de PHP

Software libre Multiplataforma (Unix, Windows, Mac:

Open Source)

Aplicaciones sencillas Aplicaciones avanzadas (BD,

gráficos)

Page 9: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Capacidades de PHP Soporte para múltiples sistemas

operativos Soporte 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)

Page 10: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

ASP vs. PHP ASP (Active Server Pages) Derivado de Visual Basic Bá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)

Page 11: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Instalación

Configuración más habitual: LAMP

Apache : Servidor de Web

MySQL: Gestor de BD

Page 12: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Nuestro primer PHP

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head>

<body>

Parte de HTML normal. <BR><BR>

<?php    echo "Parte de PHP<br>";        for($i=0;$i<10;$i++)    {       echo "Linea ".$i."<br>";    } ?>

</body> </html>

sentencias PHP en las páginas HTMLAzul: HTML Rojo: PHP

Parte de HTML normal.

Parte de PHPLinea 0Linea 1Linea 2Linea 3Linea 4Linea 5Linea 6Linea 7Linea 8Linea 9

Page 13: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Variables Comienzan con el símbolo del dólar $ y no se defiinen No tienen tipos (misma variable: número y caract.)

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head>

<body> <?php    $a = 1;    $b = 3.34;    $c = "Hola Mundo";    echo $a,"<br>",$b,"<br>",$c; ?> </body> </html>

13.34Hola Mundo

Page 14: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Operadores Aritméticos

Parecidos a los de C y Java

Aplicables

a variables y const. numéricas.

Operador

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

Page 15: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Operadores Aritméticos <!-- Manual de PHP de

WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    $a = 8;    $b = 3;    echo $a + $b,"<br>";    echo $a - $b,"<br>";    echo $a * $b,"<br>";    echo $a / $b,"<br>";    $a++;    echo $a,"<br>";    $b--;    echo $b,"<br>"; ?> </body> </html>

115242.666666666666792

Page 16: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Operadores de Comparación

Comparar y tomar decisiones.

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

Page 17: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Operadores de Comparación

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    $a = 8;    $b = 3;    $c = 3;   echo $a == $b,"<br>";    echo $a != $b,"<br>";    echo $a < $b,"<br>";    echo $a > $b,"<br>";    echo $a >= $c,"<br>";    echo $b <= $c,"<br>"; ?> </body> </html>

1

111  

Devuelve cierto cuando se cumple la condición

Page 18: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Operadores Lógicos

Operador Nombre Ejemplo

&& Y (7>2) && (2<4)

and Y (7>2) and (2<4)

|| O (7>2) || (2<4)

or O (7>2) or (2<4)

! NO !(7>2)

Page 19: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Operadores Lógicos

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    $a = 8;    $b = 3;    $c = 3;    echo ($a == $b) && ($c > $b),"<br>";    echo ($a == $b) || ($b == $c),"<br>";    echo !($b <= $c),"<br>"; ?> </body> </html>

1

Page 20: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Sentencias Condicionales

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    $a = 8;    $b = 3;    if ($a < $b)    {       echo "a es menor que b";    }    else    {       echo "a no es menor que b";    } ?> </body> </html>

a no es menor que b

Page 21: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Sentencia switch ... case<!-- Manual de PHP de WebEstilo.com -->

<html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    $posicion = "arriba";        switch($posicion) {       case "arriba":   // Bloque 1          echo "La variable contiene";          echo " el valor arriba";          break;       case "abajo":   // Bloque 2          echo "La variable contiene";          echo " el valor abajo";          break;       default:   // Bloque 3          echo "La variable contiene otro valor";          echo " distinto de arriba y abajo";    } ?> </body> </html>

La variablecontiene el valorarriba

Page 22: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Sentencia While <!-- Manual de PHP de

WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> Inicio<BR> <?php    $i=0;    while ($i<10)    {       echo "El valor de i es ", $i,"<br>";       $i++;    } ?> Final<BR> </body> </html>

InicioEl valor de i es 0El valor de i es 1El valor de i es 2El valor de i es 3El valor de i es 4El valor de i es 5El valor de i es 6El valor de i es 7El valor de i es 8El valor de i es 9Final

Page 23: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Sentencia For <!-- Manual de PHP de WebEstilo.com

--> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> Inicio<BR> <?php    for($i=0 ; $i<10 ; $i++)    {       echo "El valor de i es ", $i,"<br>";    } ?> Final<BR> </body> </html>

InicioEl valor de i es 0El valor de i es 1El valor de i es 2El valor de i es 3El valor de i es 4El valor de i es 5El valor de i es 6El valor de i es 7El valor de i es 8El valor de i es 9Final

Page 24: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Salida Sentencia printf <!-- Manual de PHP de

WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    printf("El numero dos con diferentes formatos: %d %f %.2f",2,2,2); ?> </body> </html>

%s cadenas

%d enteros

%f reales

%c caracteres

El numero dos con diferentes formatos: 2 2.000000 2.00

Page 25: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Printf <!-- Manual de PHP de WebEstilo.com -->

<html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php    $var="texto";    $num=3;    printf("Puede fácimente intercalar <b>%s</b> con números <b>%d</b> <br>",$var,$num);        printf("<TABLE BORDER=1 CELLPADDING=20>");    for ($i=0;$i<10;$i++)    {       printf("<tr><td>%10.d</td></tr>",$i);    }    printf("</table>"); ?> </body> </html>

Puede fácimente intercalar texto con números 3 0

1

2

3

4

5

6

7

8 9

Page 26: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

Page 27: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

<?php    echo strlen("12345"),"<br>";        $palabras=split(" ","Esto es una prueba");    for($i=0;$palabras[$i];$i++)       echo $palabras[$i],"<br>";           $resultado=sprintf("8x5 = %d <br>",8*5);    echo $resultado,"<br>";        echo substr("Devuelve una subcadena de otra",9,3),"<br><br>";

   if (chop("Cadena \n\n ") == "Cadena")       echo "Iguales<br><br>";

   echo strpos("Busca la palabra dentro de la frase", "palabra"),"<br><br>";        echo str_replace("verde","rojo","Un pez de color verde, como verde es la hierba."),"<br>";     ?>

5Estoesunaprueba8x5 = 40

una

Iguales

9

Un pez de color rojo, como rojo es la hierba.

Page 28: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Funciones <!-- Manual de PHP -->

<html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php       function media_aritmetica($a, $b)    {       $media=($a+$b)/2;       return $media;    }        echo media_aritmetica(4,6),"<br>";    echo media_aritmetica(3242,524543),"<br>";     ?> </body> </html>

<?php    function Nombre(param1, param2...)    {       instrucción1;       instrucción2;       instrucción3;       instrucción4;

      return valor_de_retorno;    } ?>

5263892.5

Page 29: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

LibreríaPermiten 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.

<!-- Manual de PHP de WebEstilo.com --> <?php    function CabeceraPagina()    { ?>    <FONT SIZE="+1">Esta cabecera estará

en todas sus páginas.</FONT><BR>    <hr> <?    }        function PiePagina()    { ?>       <hr>    <FONT SIZE="-1">Este es el pie de página.</FONT><BR>    Autor: Joaquin Gracia <?       } ?>

Ahora vamos a crear 2 páginasque usan la librería

Page 30: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Página con la misma cabecera y pie de página definida en la librería "libreria01.phtml"

<!-- Manual de PHP --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php include("libreria01.phtml") ?> <?php CabeceraPagina(); ?>

Página 1 <BR><BR><BR><BR><BR>

Contenido blalbl blalb alb<BR><BR> más cosas...<BR><BR>

fin<BR><BR>

<?php PiePagina(); ?> </body> </html>

Esta cabecera estará en todas sus páginas.Página 1

Contenido blalbl blalb alb

más cosas...

fin

Este es el pie de página.Autor: Joaquin Gracia

Page 31: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Página con la misma cabecera y pie de página definida en la librería "libreria01.phtml"

<!-- Manual de PHP--> <html> <head>    <title>Ejemplo de PHP</title>

</head> <body> <?php include("libreria01.phtml") ?> <?php CabeceraPagina(); ?>

Esta es otra página<BR> <BR> completamente

distinta<BR><BR> pero comparte el pie y la cabecera con la otra.<BR><BR>

<?php PiePagina(); ?> </body> </html>

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

Page 32: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

<!-- Manual de PHP de WebEstilo.com -->

<?php    function CabeceraPagina()    { ?>   <FONT SIZE="+1">Esta cabecera estará en todas sus páginas.</FONT><BR>    <hr> <?   }        function PiePagina()    { ?>      <hr>    <FONT SIZE="-1">Este es el pie de página.</FONT><BR>    Autor: Joaquin Gracia <?   }        function Indice()    { ?>   <A HREF="ejem06a.phtml">Pagina 1</A><BR>     <A HREF="ejem06a2.phtml">Pagina 2</A><BR> <?   } ?>

libpagina.phtml

Page 33: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

ejem06a.phtm

<!-- Manual de PHP --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php include("libpagina.phtml") ?> <?php CabeceraPagina(); ?> <TABLE> <TR>    <TD><?php Indice() ?></TD>    <TD>          Esta es otra página<BR><BR>          completamente distinta<BR><BR>          pero comparte el pie y la cabecera

con la otra.<BR><BR>    </TD> </TR> </TABLE> <?php PiePagina(); ?> </body> </html>

Esta cabecera estará en todas sus páginas.Esta es otra página

Pagina 1 completamente distintaPagina 2

pero comparte el pie y la cabecera con la otra.

Este es el pie de página.Autor: Joaquin Gracia

Page 34: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

ejem06a2.phtml

<!-- Manual de PHP --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php include("libpagina.phtml") ?>

<?php CabeceraPagina(); ?> <TABLE> <TR>    <TD><?php Indice() ?></TD>    <TD> Página 1 <BR><BR><BR><BR><BR> Contenido blalbl blalb alb<BR><BR> más cosas...<BR><BR> fin<BR><BR>    </TD> </TR> </TABLE> <?php PiePagina(); ?> </body> </html>

Esta cabecera estará en todas sus páginas.

Página 1

Pagina 1Contenido blalbl blalb alb

Pagina 2 más cosas...

fin

Este es el pie de página.Autor: Joaquin Gracia

Page 35: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Envío y recepción de datosAl 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.

<!-- Manual de PHP > <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> Introduzca su nombre: <FORM ACTION="procesa.phtml" METHOD="GET"> <INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Ejemplo de procesado de formulariosIntroduzca su nombre:

Enviar

Ejemplo de procesado de formulariosEl nombre que ha introducido es: Maria

Maria

Page 36: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Como construir Como construir FormulariosFormularios

1. <FORM> y como se comunica con el servidor. 2. componentes del formulario y los que activan

los procesos de los datos </FORM>. Ejemplo: Formulario:     <FORM METHOD="POST“ACTION="http://www.servidor.es/cgi-bin/cgi">  <INPUT NAME="campo1">  <INPUT TYPE="submit“

VALUE="Procesar"></FORM>  Se vé: 

Procesar

Page 37: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Atributo ACTION Que ejecutará el formulario en un servidor http o en local. En el ejemplo ACTION="http://www.servidor.es/cgi-bin/cgi">  se le está indicando que ejecute un programa llamado

"cgi" que está en el directorio" /cgi-bin" del servidor http "www.servidor.es".

Además de enviar datos a un servidor, ACTION también puede realizar una acción en local, como traer una página. (Ejemplo: Escribiendo <FORM METHOD="POST" ACTION="Algo.html"> ... </FORM>)

Podemos enviar un e-mail a un usuario o a una lista de ellos.

(Ejemplo: <FORM METHOD="POST" ACTION="mailto:[email protected]"> )

Page 38: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Atributo METHOD Atributo METHOD

Se refiere al método que emplearemos para enviar los datos al servidor: POST y GET.

Decisión basada en la máxima longitud de registro que puede enviarse; cada uno usa un canal de salida distinto. el método GET envía los datos usando la URL, el método POST los envía por la entrada

estándar STDIO. (soporta más longitud y es el más frecuente.

Page 39: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

GET<!-- Manual de PHP -->

<html> <head>    <title>Ejemplo</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1>

<FORM ACTION="procesa2.phtml" METHOD="GET"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Ejemplo de procesado de formulariosIntroduzca su nombre:Introduzca sus apellidos:

Ejemplo de procesado de formulariosEl nombre que ha introducido por GET es: Maria SomodevillaEl nombre que ha introducido por POST es:

MariaSomodevilla

Enviar

Page 40: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

POST <!-- Manual -->

<html> <head>    <title>Ejemplo</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> <FORM ACTION="procesa2.phtml" METHOD="POST"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Ejemplo de procesado de formulariosIntroduzca su nombre:Introduzca sus apellidos:

Ejemplo de procesado de formulariosEl nombre que ha introducido por GET es: El nombre que ha introducido por POST es: Maria Somodevilla

MariaSomodevilla

Enviar

Page 41: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

Page 42: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

INPUT admite varios atributos

SIZE 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).

Page 43: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Atributo TYPE de INPUT TYPE define como se muestra el texto. TYPE=TEXT TYPE=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.

Page 44: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Ejemplo: Formulario con diversos atributos del INPUT   

<FORM>    <INPUT VALUE="Prueba" SIZE=30 MAXLENGTH=10 NAME="Campo01">    <INPUT VALUE="Prueba" TYPE=PASSWORD NAME="Campo02"> 

  <INPUT VALUE="Prueba" TYPE=HIDDEN NAME="Campo03">    <BR>    Tipo: 1 <INPUT NAME="tipo" TYPE=RADIO VALUE="1" CHECKED>    2 <INPUT NAME="tipo" TYPE=RADIO VALUE="2">    3 <INPUT NAME="tipo" TYPE=RADIO VALUE="3">    Clase: A <INPUT TYPE="CHECKBOX" NAME="clase" VALUE="A"> 

  B <INPUT TYPE="CHECKBOX" NAME="clase" VALUE="B">    <INPUT VALUE="Reset" TYPE=RESET NAME="Reset">    <INPUT VALUE="Go" TYPE=SUBMIT NAME="Go">  </FORM> 

Se vé: 

Prueba

Tipo. 1 2 3 Clase: A B Reset Go

Page 45: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Ejemplo: Formulario para enviar un archivo:   

<FORM enctype="../" ACTION="ftp://usario@servidor/" METHOD="POST">    Enviar el fichero:    <INPUT NAME="fichero" TYPE="FILE">    <INPUT TYPE="SUBMIT" VALUE="Enviar">  </FORM> 

Se vé:  Enviar el fichero: 

Prueba Examinar Enviar

Page 46: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Envio de emails

PHP nos posibilita enviar emails usando la instrucción mail( ) <?php

   mail(destinatario, tema, texto del mensaje); ?>

destinatario: dirección de email 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( ) <?php

   mail(destinatario, tema, texto del mensaje, información adicional de cabecera); ?>

información adicional de cabecera: Reply-To:, From:, Content-type:... que nos permiten tener un mayor control sobre el mensaje.

Page 47: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de envio de email</H1> Introduzca su direccion de email: <FORM ACTION="email.phtml" METHOD="GET"> <INPUT TYPE="text" NAME="direccion"><BR><BR> Formato: <BR> <INPUT TYPE="radio" NAME="tipo" VALUE="plano" CHECKED> Texto plano<BR> <INPUT TYPE="radio" NAME="tipo" VALUE="html"> HTML<BR><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>

Page 48: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

em

ail.phtm

l

<!-- Manual de PHP de WebEstilo.com --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de envio de email</H1> <?    $direccion=$_GET['direccion'];    $tipo=$_GET['tipo'];        if ($direccion!=""){    if ($tipo=="plano"){       // Envio en formato texto plano              mail($direccion,"Ejemplo de envio de email","Ejemplo de envio de email de texto plano\n\nWebEstilo.\nhttp://www.webestilo.com/\n Manuales para desarrolladores web.\n","FROM: Pruebas <[email protected]>\n");    } else {       // Envio en formato HTML       mail($direccion,"Ejemplo de envio de email","<html><head><title>WebEstilo. Manual de PHP</title></head><body>Ejemplo de envio de email de HTML<br><br>WebEstilo.<br>http://www.webestilo.com/<br> <u>Manuales</u> para <b>desarrolladores</b> web.</body></html>","Content-type: text/html\n", "FROM: Pruebas <[email protected]>\n");    }       echo "Se ha enviado un email a la direccion: ",$direccion," en formato <b>",$tipo,"</b>."; } ?> <br> </body> </html>

Page 49: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

Page 50: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

Page 51: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Crear las tablas en la base de datos

Contienen 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 <prueba.sql

Page 52: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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) );

Page 53: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Conexión a la base de datos

Creada 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.

Page 54: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Conexión a base_datos <!-- -->

<html> <head>    <title>Ejemplo de PHP</title> </head> <body> <?php function Conectarse() {    if (!($link=mysql_connect("localhost","usuario","Password")))

   {       echo "Error conectando a la base de datos.";       exit();    }    if (!mysql_select_db("base_datos",$link))    {       echo "Error seleccionando la base de datos.";       exit();    }    return $link; }

$link=Conectarse(); echo "Conexión con la base de datos conseguida.<br>";

mysql_close($link); //cierra la conexion ?> </body> </html> Conexión con la base de datos conseguida.

Page 55: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Consultas a la base de datos

Usamos 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.

Page 56: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Librería para conección"conex.phtml“<!-- Manual de PHP -->

<?php function Conectarse() {    if (!($link=mysql_connect("localhost","usuario","Password")))    {       echo "Error conectando a la base de datos.";       exit();    }    if (!mysql_select_db("base_datos",$link))    {       echo "Error seleccionando la base de datos.";       exit();    }    return $link; } ?>

Page 57: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Instrucciones nuevas

mysql_query consultar 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.

Page 58: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

<!-- Manual de PHP --> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1> <?php    include("conex.phtml");    $link=Conectarse();    $result=mysql_query("select * from prueba",$link); ?>    <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>       <TR><TD>&nbsp;Nombre</TD><TD>&nbsp;Apellidos&nbsp;</TD></TR> <?php      

   while($row = mysql_fetch_array($result)) {       printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td></tr>", $row["Nombre"],$row["Apellidos"]);    }    mysql_free_result($result);    mysql_close($link); ?> </table> </body> </html>

Page 59: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Ejemplo de uso de bases de datos con PHP y MySQL

mysql_query("select * from prueba",$link);

Nombre Apellidos

Maria  Gomez

Marcos  Martinez

Antonio  Ferrera 

Roman  Zamora

Daniel Pineda

 Martha Mendez

Page 60: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Inserción de registros Conección a una base de datos Consultas a la base de datos, Introducir nuevos registros en la base de datos Usar un formulario <FORM ACTION="programaPHP"> 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.

Page 61: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

<!-- ejem07ed.phtml--> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1> <FORM ACTION="procesar.phtml"> <TABLE> <TR>    <TD>Nombre:</TD>    <TD><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD> </TR> <TR>    <TD>Apellidos:</TD>    <TD><INPUT TYPE="text" NAME="apellidos" SIZE="20" MAXLENGTH="30"></TD> </TR> </TABLE> <INPUT TYPE="submit" NAME="accion" VALUE="Grabar"> </FORM> <hr> <? PARTE DE PHP ?></table> </body> </html>

Page 62: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

<?php    include("conex.phtml");    $link=Conectarse();    $result=mysql_query("select * from prueba",$link); ?>    <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>       <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR> <?php      

   while($row = mysql_fetch_array($result)) {       printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>", $row["Nombre"], $row["Apellidos"]);    }    mysql_free_result($result);    mysql_close($link);    ?>

ejem07d.phtml

Page 63: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Ejemplo de uso de bases de datos con PHP y MySQL

Nombre:

Apellidos:

Grabar Nombre Apellidos

Maria  Gomez

Marcos  Martinez

Antonio  Ferrera 

Roman  Zamora

Daniel Pineda

 Martha Mendez

Page 64: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

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.

Page 65: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

<!-- ejem07e.phtml--> <html> <head>    <title>Ejemplo de PHP</title> </head> <body> <H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>

<?php    include("conex.phtml");    $link=Conectarse();    $result=mysql_query("select * from prueba",$link); ?>    <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>       <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD> <TD>&nbsp;<B>Borrar</B>&nbsp;</TD></TR> <?php      

   while($row = mysql_fetch_array($result)) {       printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><a href=\"borra.phtml?id=%d\">Borra</a></td></tr>", $row["Nombre"],$row["Apellidos"],$row["ID_Prueba"]);    }    mysql_free_result($result);    mysql_close($link); ?> </table> </body> </html>

&nbsp: non-breaking space ,Da una nueva linea, si text too long

Page 66: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

borra.phtml

<?php    include("conex.phtml");    $link=Conectarse();    $id=$_GET['id'];    mysql_query("delete from prueba where ID_Prueba = $id",$link);        header("Location: ejem07e.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

Page 67: Bases de Datos Cliente Servidor. Arquitectura Cliente Servidor Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa.

Ejemplo de uso de bases de datos con PHP y MySQL Nombre Apellidos Borrar

Maria  Gomez Borra

Marcos  Martinez Borra

Antonio  Ferrere Borra

Roman  Zamora Borra

Daniel Pineda Borra

 Martha Mendez Borra