presentación curso php dgest v1.13

220
PHP CURSO BÁSICO ISC RICARDO SANTIAGO VILLAFUERTE

Upload: k-rlos-manon

Post on 01-Dec-2015

77 views

Category:

Documents


1 download

DESCRIPTION

diseño de pagina web en php

TRANSCRIPT

Page 1: Presentación Curso PHP DGEST V1.13

PHP CURSO BÁSICO

ISC RICARDO SANTIAGO VILLAFUERTE

Page 2: Presentación Curso PHP DGEST V1.13

PRESENTACIÓN

Presentación del instructorPresentación de los participantesReglas del juegoHorario de trabajo Esquema de acreditación del curso Evaluación diagnóstica

Page 3: Presentación Curso PHP DGEST V1.13

CONTENIDO1. Introducción

1.1 Tecnologías WEB1.2 Acerca de PHP1.3 Instalación

2. Estructura y sintaxis 2.1 Herramienta case.2.2 Comentarios2.3 Variables2.4 Operadores2.5 Sentencias condicionales2.6 Sentencias de bucle2.7 Arreglos2.8 Funciones

Page 4: Presentación Curso PHP DGEST V1.13

CONTENIDO3. Librerías

3.1 Gestión de cadenas3.2 Gestión de archivos

4. Formularios4.1 Elementos de formulario4.2 Capturar formulario en la url4.3 Validación de campos4.4 Subir archivos a un servidor

5. Introducción a MySQL5.1 Crear una base de datos5.2 Conexión a MySQL5.3 Mostrar datos de consultas5.4 Operaciones con registros

6. Identificación de usuarios 6.1 Sesiones6.2 Cookies6.3 Encriptacion de datos

Page 5: Presentación Curso PHP DGEST V1.13

OBJETIVO

Ofrecer al participante los conocimientos básicos en PHP. Generar páginas web de contenido dinámico, partiendo

desde la estructura y sintaxis del lenguaje. El participante aprenderá la implementación e

incrustación en las páginas HTML. El participante conocerá las configuraciones del entorno

necesario para la ejecución de esta tecnología.

Page 6: Presentación Curso PHP DGEST V1.13

INTRODUCCIÓN

Page 7: Presentación Curso PHP DGEST V1.13

TECNOLOGÍAS WEB

Page 8: Presentación Curso PHP DGEST V1.13

REQUERIMIENTOS PARA EL DISEÑO DE APLICACIONES WEB

Para comenzar a diseñar aplicaciones web, es necesario determinar el tipo de software quese va a utilizar en nuestro servidor de desarrollo, éste puede ser libre o comercial.En general, son 5 las categorías de software que debemos definir para comenzar a diseñar:

a) Sistema Operativo.- Es lo principal, debido a que se encarga de controlar los recursos delsistema.

b) Servidor Web.- Encargado de implementar el protocolo HTTP (Hypertext TransferProtocol), diseñado para transferir páginas web o HTML (Hypertext Markup Lenguage).

c) Lenguaje de programación.- Conjunto de sintaxis y reglas usados para comunicarinstrucciones a la computadora.

d) Manejador de Base de Datos.- Interfase para gestionar las BD .

e) Editor HTML.- Software para crear documentos web o HTML.

Page 9: Presentación Curso PHP DGEST V1.13

SISTEMA OPERATIVO

LICENCIA LIBRE

Page 11: Presentación Curso PHP DGEST V1.13

LENGUAJE DE PROGRAMACIÓN

LICENCIA LIBRE

Page 12: Presentación Curso PHP DGEST V1.13

MANEJADOR DE BASE DE DATOS

LICENCIA LIBRE

Page 13: Presentación Curso PHP DGEST V1.13

EDITOR HTML

LICENCIA LIBRE

Page 14: Presentación Curso PHP DGEST V1.13

EMPAQUETADOS

Page 15: Presentación Curso PHP DGEST V1.13

Para el desarrollo de este curso, nuestra plataforma de desarrollo tendrála siguiente configuración:

OS: Microsoft Windows

Servidor Web: Apache

Lenguaje de programación: PHP

Manejador de bases de datos: MySQL

Editor HTML: DreamWeaver

Page 16: Presentación Curso PHP DGEST V1.13

ACERCA DE PHP

Lenguaje creado en 1995 por Rasmus Lerdorf. PHP es un lenguaje de programación de uso general de script del lado del

servidor originalmente diseñado para el desarrollo web de contenido dinámico.

Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos.

El código es interpretado por un servidor web con un módulo de procesador de PHP que genera la página Web resultante.

Tiene un gran parecido con los lenguajes más comunes de programación estructurada.

Permite la conexión a diferentes tipos de servidores de bases de datos. Multiplataforma. Actualmente se encuentra liberada la versión 5.5 (www.php.net)

Page 17: Presentación Curso PHP DGEST V1.13

INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR LOCAL DE PRUEBAS

Para montar nuestro servidor de pruebas, utilizaremosAppServ ver. 2.5.9

Este incluye el servidor Apache, soporta PHP 5 e instala elmanejador de base de datos PhpMyAdmin (MySQL).

A continuación veremos la forma de instalarlo y configurarlo:

Page 18: Presentación Curso PHP DGEST V1.13

1. Pantalla inicial, entre otras cosas, nos recomienda cerrar todaslas aplicaciones antes de proceder con la instalación. Damos clicen Siguiente y Aceptar los términos de licencia:

Page 19: Presentación Curso PHP DGEST V1.13

2. Debemos elegir un directorio de instalación, lo masrecomendable es dejar el que aparece por defecto (C:\AppServ):

Page 20: Presentación Curso PHP DGEST V1.13

3. Activamos todos los productos (Apache, MySQL, PHP yphpMyAdmin):

Page 21: Presentación Curso PHP DGEST V1.13

4. Elegimos el nombre que tendrá nuestro servidor de pruebas(pongámosle “localhost”) y un e-mail del administrador. Escribamos unmail ficticio (por ejemplo [email protected]. Verifiquemos que elpuerto HTTP sea el 80:

Page 22: Presentación Curso PHP DGEST V1.13

5. Ahora debemos definir el password que tendrá el administrador(usuario root) de la base de datos. El apartado MySQL ServerSettings lo dejamos como muestra la imagen:

Page 23: Presentación Curso PHP DGEST V1.13

6. En este momento comienza la instalación:

Page 24: Presentación Curso PHP DGEST V1.13

7. En la última ventana, dejamos activadas las opciones para quese inicien los servicios del Apache y el MySQL y damos clic enfinalizar:

Page 25: Presentación Curso PHP DGEST V1.13

8. Para comprobar que nuestro servidor local se ha instaladocorrectamente, en nuestro navegador de internet escribimos ladirección: http://localhost/ (recuerde que le pusimos comonombre “localhost” a nuestro servidor) y nos debe aparecer lainformación de nuestro server local:

Nota: Si a nuestro servidor le especificamos un nombre distinto de “localhost” debemos cambiar (http://nombre_de_mi_servidor/)

Nos debe aparecer lo siguiente:

Page 26: Presentación Curso PHP DGEST V1.13
Page 27: Presentación Curso PHP DGEST V1.13

9. Para comprobar que nuestro DBMS se instaló correctamente, ahoraescribimos en nuestro navegador de internet la direcciónhttp://localhost/phpMyAdmin/ En este momento nos pedirá elusuario y contraseña para acceder:

Page 28: Presentación Curso PHP DGEST V1.13

Después de logearnos nos debe aparecer lo siguiente:

Page 29: Presentación Curso PHP DGEST V1.13

CONFIGURACIÓN DE UN SITIO DE PRUEBAS

El editor HTML que utilizaremos es DreamWeaver, una vez instalado,debemos configurar un sitio de pruebas.

Un sitio de DreamWeaver permite organizar todos los documentosasociados con un sitio Web. La organización de los archivos en un sitiopermite utilizar DreamWeaver para cargar el sitio en el servidor Web,controlar y mantener los vínculos de forma automática, administrar ycompartir archivos.

Antes de ver cómo se configura un sitio de pruebas, veamos dónde estarála carpeta local de nuestro sitio. Esta carpeta será donde se guardarántodos los archivos utilizados en nuestra página y estará ubicada en eldirectorio donde hayamos instalado el AppServ.

Page 30: Presentación Curso PHP DGEST V1.13

Por ejemplo, supongamos que el AppServ lo instalamos enC:\Software\AppServ, dentro de este directorio encontraremos 4 carpetas:apache, mysql, php y www. En esta última es donde crearemos unacarpeta para nuestro sitio. Supongamos que nuestro sitio lo llamaremos“Pruebas”, entonces, dentro de la carpeta www crearemos una carpetacon el nombre “Pruebas”.

Si estamos trabajando en más de un página web, cada proyecto debetener su carpeta local. Y todas estas carpetas deben estar dentro de lacarpeta www.

Page 31: Presentación Curso PHP DGEST V1.13

a) Iniciamos DreamWeaver, y hacemos clic en Nuevo Sitio, en el menúSitio:

Page 32: Presentación Curso PHP DGEST V1.13

b) Nuestro sitio se llamará “Pruebas”. El campo de la direcciónURL del sitio lo llenaremos de la siguiente manera:

http://<nombre de nuestro servidor de pruebas>/<nombre de nuestro sitio>/

de manera que, si a nuestro servidor le llamamos “localhost”, y anuestro sitio “Pruebas” entonces quedará:

http://localhost/Pruebas/

Page 33: Presentación Curso PHP DGEST V1.13
Page 34: Presentación Curso PHP DGEST V1.13

c) Especificamos que Sí vamos a utilizar una tecnología de servidor yelegimos de la lista la opción PHP MySQL:

Page 35: Presentación Curso PHP DGEST V1.13

d) En la siguiente ventana nos pregunta cómo vamos a trabajar con losarchivos del sitio. Las opciones que nos da son 3:

1.- Editar y comprobar localmente

2.- Editar localmente y luego cargar al servidor remoto

3.- Editar directamente en el servidor de pruebas utilizando la red

La opción que utilizaremos es la segunda, ya que primero estaremoseditando nuestro sitio en nuestro servidor local y posteriormentecargaremos los archivos al servidor real mediante algún software queutilice ftp (File Transfer Protocol).

También, en esta ventana, debemos seleccionar la carpeta que creamospara nuestro sitio

(C:\AppServ\www\Pruebas\)

Page 36: Presentación Curso PHP DGEST V1.13
Page 37: Presentación Curso PHP DGEST V1.13

e) En la siguiente ventana, elegimos la opción Local/Red. En el segundocampo debemos especificar nuevamente la ubicación de la carpeta quecreamos para nuestro sitio para especificarle que ahí se guardarán losarchivos.

Page 38: Presentación Curso PHP DGEST V1.13

f) Como DreamWeaver se comunica con nuestro sitio a través de HTTP,necesitamos especificar la URL que tendrá nuestro sitio

(http://localhost/Pruebas/)

Page 39: Presentación Curso PHP DGEST V1.13

Una vez que especificamos la carpeta, hacemos clic en Comprobar URL, sitodo está bien nos deberá mostrar el siguiente aviso:

Si, por el contrario, nos muestra algún error, debemos verificar que losdirectorios especificados en los puntos anteriores sean correctos.

Page 40: Presentación Curso PHP DGEST V1.13

g) Como seremos los únicos que trabajaremos en nuestro sitio (notendremos colaboradores), desactivamos la protección en la siguienteventana:

Page 41: Presentación Curso PHP DGEST V1.13

h) La última ventana nos mostrará un resumen de la configuración delsitio. Hacemos clic en Completado:

Page 42: Presentación Curso PHP DGEST V1.13

Una vez creado el sitio, en el panel derecho podemos accesar en lapestaña “Archivos” y veremos la lista de sitios que tenemos dados de alta,así como los archivos correspondientes de cada sitio:

Page 43: Presentación Curso PHP DGEST V1.13

H T M L

Page 44: Presentación Curso PHP DGEST V1.13

El HTML (Hyper Text Markup Language) es el lenguaje con el que seescriben las páginas web. Es un lenguaje de hipertexto, es decir, unlenguaje que permite escribir texto de forma estructurada, y que estácompuesto por etiquetas, que marcan el inicio y el fin de cada elementodel documento.

Los documentos HTML deben tener la extensión html o htm, para quepuedan ser visualizados en los navegadores (programas que permitenvisualizar las páginas web).

Los navegadores se encargan de interpretar el código HTML de losdocumentos, y de mostrar a los usuarios las páginas web resultantes delcódigo interpretado.

Page 45: Presentación Curso PHP DGEST V1.13

ESTRUCTURA DE UN DOCUMENTO HTML

La estructura general de una página HTML es muy sencilla, solamenteconsta de una cabecera y un cuerpo, todo ello dentro de 2 etiquetasque delimitan el código HTML:

Page 46: Presentación Curso PHP DGEST V1.13

Todo documento HTML debe estar delimitado por un Identificador dedocumento. Son las etiquetas que aparecen al inicio y al final de éste.

La etiqueta <html> indica que comienza el documentoLa etiqueta </html> indica que termina el documento.

La cabecera de la página (Head) se usa para agrupar información propia deldocumento como puede ser su título, estilos definidos que usa, etc. Lacabecera está delimitada por las etiquetas <head> y </head>

El cuerpo del documento (Body) contiene la información propia deldocumento, es decir, lo que queremos que se visualice en el navegador(texto, imágenes, formularios, etc.). El cuerpo está delimitado por lasetiquetas <body> y </body>

Page 47: Presentación Curso PHP DGEST V1.13

ETIQUETAS

Las etiquetas delimitan cada uno de los elementos que componen undocumento HTML. Existen 2 tipos de etiqueta: las de comienzo deelemento y las de fin de elemento.

La etiqueta de comienzo está delimitada por los caracteres < y >. Estácompuesta por el identificador o nombre de la etiqueta, y puedecontener una serie de atributos opcionales que permiten añadir ciertaspropiedades. Su sintaxis es:

<identificador atributo1 atributo2 ...>

La etiqueta de final está delimitada por los caracteres </ y >. Estácompuesta por el identificador o nombre de la etiqueta, y no contieneatributos. Su sintaxis es:

</identificador>

Page 48: Presentación Curso PHP DGEST V1.13

<b>...</b> Texto en negrita

<i>...</i> Texto en itálico (También <EM>…</EM>)

<font >...</font> Texto

<strong>...</strong> Puesta en negrita del texto

<u>...</u> Texto subrayado

<!-- ... --> Comentarios ignorado por el navegador

<br> Salto de línea

<center>...</center> Centra cada elemento comprendido en la etiqueta

<div align=center>

...</div>

Capa con contenido centrado (puede cambiar a left o

right)

<p>...</p> Nuevo párrafo

<a href=” ”>...</a> Hipervínculo

<img scr="xyz.gif"> Inserción de una imagen al formato Gif

<table>...</table> Definición de una tabla

<tr>...</tr> Línea de la tabla (Renglón)

<td>...</td> Celda de la tabla (Columna)

<html>...</html> Principio y fin del fichero Html

<head>...</head> Cabecera del documento

<title>...</title> Titulo visualizado por el explorador

<body>...</body> Principio y fin del cuerpo del fichero Html

<script> … </script> Incrustación de un script en lenguaje distinto a HTML

<meta>

Añade información de la página. Dicha información es útil

para los buscadores

Page 49: Presentación Curso PHP DGEST V1.13

C A P A S

Las capas no son más que unos recuadros, que pueden situarse encualquier parte de la página, en los que podemos insertar contenidoHTML. Dichas capas pueden ocultarse y solaparse entre sí, lo queproporciona grandes posibilidades de diseño.Podemos insertar una capa a través de las etiquetas <div> y </div>.

A través de la propiedad z-index puede establecerse el índice de la capadentro de la página. Una capa podrá ser solapada por aquellas capascuyo índice sea mayor. Siempre es un valor numérico.

Page 50: Presentación Curso PHP DGEST V1.13

El siguiente código incrusta una imagen en un documento HTML (sin capa):

<html><head>

<title>Documento sin titulo</title></head><body>

<img src="BSTapiz2.jpg" width="180" height="138" /></body>

</html>.

Page 51: Presentación Curso PHP DGEST V1.13

Poniendo la imagen dentro de una capa podríamos ubicarla en el lugarque quisiéramos:

Page 52: Presentación Curso PHP DGEST V1.13

T A B L A S

Hoy en día, la mayoría de las páginas web se basan en tablas, ya que resultande gran utilidad al mejorar notablemente las opciones de diseño.

Todos los objetos se alinean por defecto a la izquierda de las páginas web,pero gracias a las tablas es posible distribuir el texto en columnas, colocarimágenes al lado de un bloque de texto, y otra serie de cosas que sin lastablas serían imposibles de realizarse.

Para crear una tabla hay que insertar las etiquetas <table> y </table>. Entredichas etiquetas habrá que especificar las filas y columnas que formarán latabla.

Para las filas se ocupan las etiquetas <tr> y </tr)

Para las columnas se ocupan las etiquetas <td> y </td>

El contenido de cada celda debe escribirse entre estas ultimas etiquetas

Page 53: Presentación Curso PHP DGEST V1.13

<table border="1"><tr>

<td>Lunes</td><td>Martes</td>

</tr><tr>

<td>Escuela</td><td>Gimnasio</td>

</tr><tr>

<td>Casa</td><td>Oficina</td>

</tr></table> Lunes Martes

Escuela Gimnasio

Casa Oficina

Page 54: Presentación Curso PHP DGEST V1.13

FORMATO DE TABLAS

ATRIBUTO SIGNIFICADO POSIBLES VALORES

width Ancho de la tablaUn número, acompañado de % cuando

se desee mencionar en porcentaje.

height Altura de la tablaUn número, acompañado de % cuando

se desee mencionar en porcentaje.

cellpaddingEspacio entre el contenido de

las celdas y el bordeUn número

cellspacing Espacio entre celdas Un número

border Grosor del borde Un número

alignAlineación de la tabla dentro

de la páginaLeft, right, center

bgcolor Color de fondo Número hexadecimal

background Imagen de fondo Un número hexadecimal

bordercolor Color del borde Un número hexadecimal

Page 55: Presentación Curso PHP DGEST V1.13

Vamos a especificar un formato para la tabla del ejemplo anterior:

<table width="50%" border="2" align="center" cellspacing="0“ bordercolor="#000000" bgcolor="#FFCC99" >….….….</table>

El resultado sería el siguiente:

Page 56: Presentación Curso PHP DGEST V1.13

FORMATO DE CELDAS

Las propiedades que se pueden modificar son las mismas, solo que aquí sehace específicamente para cada celda.

También es posible modificar estas propiedades de toda una fila,especificándolos dentro de la etiqueta <tr> en lugar de hacerlo en laetiqueta <td>.

Hay que tener en cuenta que los atributos tienen más prioridad cuandoson establecidos para una celda que cuando son establecidos para una filacompleta. Al mismo tiempo, tienen más prioridad los atributosestablecidos para una fila que los establecidos para toda la tabla.

Para ver esto, modifiquemos el código de la tabla anterior por el siguiente:

Page 57: Presentación Curso PHP DGEST V1.13

<table width="50%" border="2" align="center" cellspacing="0" bordercolor="#000000" bgcolor="#FFCC99">

<tr align="center" bgcolor="#0099CC"><td>Lunes</td><td bgcolor="#66CC99">Martes</td>

</tr><tr>

<td>Escuela</td><td>Gimnasio</td>

</tr><tr>

<td>Casa</td><td>Oficina</td>

</tr></table>

Page 58: Presentación Curso PHP DGEST V1.13

El resultado sería:

Se ha establecido el color naranja como fondo de toda la tabla, pero conla línea de código <tr align="center" bgcolor="#0099CC"> se haestablecido el color azul como color de fondo de la primera fila, por loque dicha fila se mostrará de color azul, y no de color naranja. Al mismotiempo, se ha cambiado el color de la segunda celda de la primera fila porel color verde, a través de la línea <td bgcolor="#66CC99">Domingo</td>por lo que esta fila en vez de ser azul será verde, los atributos de celdatienen prioridad sobre los de la fila.

Page 59: Presentación Curso PHP DGEST V1.13

ENCABEZADOS Y TITULO DE TABLA

Para establecer los encabezados de una tabla basta con usar las etiquetas<th> y </th> en lugar de <td> y </td> para la primer fila. Esto hará que elcontenido de las celdas de la primer fila aparezcan centrados y en negrita.También, es posible agregar un titulo de la tabla mediante las etiquetas<caption> y </caption> las cuales han de ir después de la etiqueta <table>.Veamos el ejemplo con la misma tabla:

<table width="50%" border="1" align="center"><caption align="right" valign="top">TITULO DE LA TABLA<tr><tr>

<th>Lunes</td><th>Martes</td>

</tr>….….</table>

Page 60: Presentación Curso PHP DGEST V1.13

El título aparece ajustado a la margen derecho de la tabla (align="right")y encima de la tabla (valign="top").

Page 61: Presentación Curso PHP DGEST V1.13

COMBINAR CELDAS

Para las etiquetas <td> y <th> existen los atributos colspan y rowspan, quese utilizan para combinar celdas.A través del atributo colspan se especifica el número de columnas por lasque se extenderá la celda, y a través del atributo rowspan se especifica elnúmero de filas por las que se extenderá la celda.

El siguiente sería un ejemplo de combinación de celdas:

Page 62: Presentación Curso PHP DGEST V1.13

VINCULOS

Un hiperenlace, hipervínculo, o vínculo, no es más que un enlace, que alser pulsado lleva a una página o archivo.

Aquellos elementos (texto, imágenes, etc.) sobre los que se deseeinsertar un enlace han de encontrarse entre las etiquetas <a> y </a>.

A través del atributo href se especifica la página a la que está asociado elenlace.

Por ejemplo, para crear el hiperenlace www.crodecelaya.edu.mx habríaque escribir:

<a href="http://www.crodecelaya.edu.mx">www.crodecelaya.edu.mx</a>

Existen diferentes formas de expresar una referencia a una página através del atributo href:

Page 63: Presentación Curso PHP DGEST V1.13

Referencia absoluta.- Conduce a una ubicación externa al sitio en el que

se encuentra el documento. La ubicación es en internet, en este caso

hay que empezar la referencia por http://, el nombre del dominio y, en

algunas veces, el nombre de la página. Si no se escribe el nombre de la

página se cargará la página de inicio asociada al dominio.

Por ejemplo, http://www.crodecelaya.edu.mx tendrá el mismo efecto que

http://www.crodecelaya.edu.mx/index.html

Para insertar el enlace Visita la página del CRODE habría que escribir el

código:

<a href="http://www.crodecelaya.edu.mx">Visita la página del CRODE</a>

Page 64: Presentación Curso PHP DGEST V1.13

Referencia relativa al sitio.- Conduce a un documento situado dentro del

mismo sitio que el documento actual. Un sitio web es un conjunto de

archivos y carpetas, estando todos ellos dentro de una misma carpeta,

conocida como carpeta raíz del sitio.

Por ejemplo, teniendo en cuenta que el documento Mapa.html se

encuentra directamente dentro de la carpeta raíz del sitio, para insertar

el enlace:

Mapa del sitio CRODE Celaya

Habría que escribir el código:

<a href="/Mapa.html">Mapa del sitio CRODE Celaya</a>

Observe como aparece el símbolo "/" delante del nombre del documento.

Esta barra inclinada indica la carpeta raíz del sitio. Si el documento

Mapa.html se encontrara, por ejemplo, dentro de una carpeta llamada

Arbol y esta estuviera dentro de la carpeta raíz del sitio, habría que

escribir:

<a href="/Arbol/Mapa.html">Mapa del sitio CRODE Celaya</a>

Page 65: Presentación Curso PHP DGEST V1.13

Referencia relativa al documento.- Conduce a un documento situado

dentro del mismo sitio que el documento actual, pero partiendo del

directorio en el que se encuentra el actual.

Por ejemplo, supongamos que dentro de

la carpeta raíz de nuestro sitio tenemos

un archivo Actual.html y una carpeta “x”

y que dentro de la carpeta “x” hay un

archivo Nuevo.html. Si, estando en el

archivo Actual.html quisiéramos hacer

vínculo hacia el archivo Nuevo.html

tendríamos que escribir el código:

<a href="x/Nuevo.html">Texto con hipervínculo</a>

Page 66: Presentación Curso PHP DGEST V1.13

DESTINO DE LOS ENLACES

El destino del enlace determina en qué ventana va a ser abierta la

página vinculada, se especifica a través del atributo target al que se le

puede asignar los siguientes valores:

_blank – Abre el documento vinculado en una nueva ventana del

explorador

_parent – Abre el documento vinculado en la ventana del marco que

contiene el vinculo.

_self – Abre el documento vinculado en el mismo marco o ventana

que el vinculo (opción predeterminada)

_top – Abre el documento vinculado en la ventana completa del

navegador.

Page 67: Presentación Curso PHP DGEST V1.13

VINCULOS A e-mail Y DESCARGA DE ARCHIVOS

Los vínculos hacia e-mail abren Outlook Express para escribir un correo

electrónico, cuyo destinatario será el especificado en el enlace. Para ello, la

referencia del vínculo debe ser:

mailto:dirección_destinatario

Supongamos que queremos hacer un vínculo de e-mail a la dirección

[email protected]:

Mándame un correo

Tendríamos que escribir el código:

<a href="mailto:[email protected]">Mandame un correo</a>

Page 68: Presentación Curso PHP DGEST V1.13

En los vínculos para descarga de archivos el valor del atributo href será

hacía el archivo a descargar (.zip, .doc, .xls, .pdf, etc.). cuando el valor de

este atributo hace referencia a un archivo se abre la ventana de descarga

al hacer clic sobre el vínculo:

El navegador reconoce algunas extensiones como asociadas a un

determinado programa (por ejemplo la extensión .doc está asociada al

programa Word, .pdf al programa Acrobat Reader, .xls al programa Excel...)

en este caso en el cuadro de diálogo aparece una nueva opción, la de abrir

el fichero sin descargarlo en el disco duro del usuario.

Page 69: Presentación Curso PHP DGEST V1.13

P H PEstructura y sintaxis

Page 70: Presentación Curso PHP DGEST V1.13

LENGUAJE PHP

PHP (acrónimo de Hypertext Preprocessor) - Preprocesador de Hipertexto ),

es un lenguaje interpretado de alto nivel incrustado en páginas HTML y

ejecutado del lado del servidor.

La forma en que se incrusta código PHP en un documento HTML es

mediante los símbolos <? (para comenzar) y ?> (para terminar). Un ejemplo

sería:

<html>

<head>

</head>

<body>

<?

Línea 01 de código PHP

Línea 02 de código PHP

Línea 03 de código PHP

……

……

Línea N de código PHP

?>

</body>

</html>

Page 71: Presentación Curso PHP DGEST V1.13

SINTAXIS PHP

La sintaxis de PHP es bastante similar a la de JavaScript, C, o PERL, de

manera que lo visto en el apartado JavaScript nos será de mucha ayuda

para entenderla.

COMENTARIOS

Para comentar una sola línea se usa // o #

Para comentar varias líneas se usa /* y */

USO DE MAYUSCULAS Y MINUSCULAS

La sintaxis PHP es sensible al uso de mayúsculas y minúsculas, por lo

que debemos tener cuidado en el uso de éstas.

Page 72: Presentación Curso PHP DGEST V1.13

SEPARADOR DE INSTRUCCIONES

Las instrucciones se separan igual que en C o perl terminando cada

sentencia con un punto y coma ( ; ). La etiqueta de cierre ( ?> ) también

implica el fin de la sentencia, así lo siguiente es equivalente:

<?

echo "Esto es una prueba";

?>

<? echo "Esto es una prueba" ?>

DECLARACION DE VARIABLES

En PHP las variables se representan con el signo $ seguido por el

identificador de la variable. Las reglas para el identificador son las

mismas que en lenguaje C.

$variable1 = "Esta es una variable";

$variable2 = 100;

Page 73: Presentación Curso PHP DGEST V1.13

CONSTANTES

Una constante es un identificador para expresar un valor simple. Como el

nombre sugiere, este valor no puede variar durante la ejecución del script.

Las constantes no llevan el signo pesos ($) como prefijo.

Solo pueden ser definidas usando la función define(), y no por simple

asignación.

Las constantes pueden ser definidas y accedidas desde cualquier parte.

No pueden ser redefinidas o eliminadas una vez se han definido.

<?

define("CONSTANTE", "HOLA MUNDO");

print CONSTANTE;

print Constante; // muestra "Constante"

?>

Page 74: Presentación Curso PHP DGEST V1.13

VARIABLES PREDEFINIDAS

Superglobals — Superglobals son variables internas que están disponibles siempre en todos los ámbitos$GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global$_GET — Variables HTTP GET$_POST — Variables HTTP POST$_FILES — Variables de Carga de Archivos HTTP$_REQUEST — Variables HTTP Request$_SESSION — Variables de sesión$_COOKIE — Cookies HTTP$php_errormsg — El último mensaje de error$HTTP_RAW_POST_DATA — Datos POST sin tratar$http_response_header — Encabezados de respuesta HTTP$argc — El número de argumentos pasados a un script$argv — Array de argumentos pasados a un script

Page 75: Presentación Curso PHP DGEST V1.13

TIPOS DE DATOS

ENTEROS

Números enteros positivos o negativos

$a = 1234;

$a = -123;

NUMEROS EN PUNTO FLOTANTE

Números con punto decimal (positivos y negativos)

$a = 1.234;

$a = 1.2e3;

Page 76: Presentación Curso PHP DGEST V1.13

CADENAS

Las cadenas se delimitan mediante comillas dobles “ ” o comillas

simples ’ ’. aquellas variables que se encuentren dentro de una cadena

delimitada por comillas dobles serán expandidas, en cambio, las que se

encuentren dentro de una cadena delimitada por comillas sencillas no

se expandirán.

Aquí un ejemplo de esto:

$valor = 100;

$cadena = “El valor es $valor”;

$cadena2 = ‘El valor es $valor’;

El valor de la variable $cadena sería: El valor es 100

El valor de la variable $cadena2 sería: El valor es $valor

Al igual que en C, la diagonal invertida (\) se utiliza para poder

especificar dentro de una cadena caracteres especiales:

Page 77: Presentación Curso PHP DGEST V1.13

Secuencia significado

\n Nueva línea

\r Retorno de carro

\t Tabulación horizontal

\\ Barra invertida

\$ Signo del dólar

\" Comillas dobles

Las cadenas se pueden concatenar usando el operador punto (.)

Page 78: Presentación Curso PHP DGEST V1.13

OPERADORES ARITMETICOS

Ejemplo Nombre Resultado

$a + $b Adición Suma de $a y $b.

$a - $b Substracción Diferencia entre $a y $b.

$a * $b Multiplicación Producto de $a y $b.

$a / $b División Cociente de $a entre $b.

$a % $b Módulo Resto de $a dividido entre $b.

OPERADORES DE ASIGNACION

El operador básico de asignación es un signo igual " = ". Lo que hace es

que el operando de la izquierda toma el valor de la expresión a la

derecha. Por ejemplo:

$a = ($b = 4) + 5;

El valor de $a será 9

Page 79: Presentación Curso PHP DGEST V1.13

Además, existen los operadores combinados. Aquí un par de ejemplos:

$a = 3;

$a += 5; // Establece $a a 8, como si hubiésemos escrito: $a = $a + 5;

$b = "Hola ";

$b .= "Ahí!"; // Establece $b a “Hola Ahí!”

OPERADORES CONDICIONALES

Ejemplo Nombre Resultado

$a == $b Igualdad Cierto si $a es igual a $b.

$a === $b IdentidadCierto si $a es igual a $b y si son del mismo tipo (sólo

PHP4)

$a != $b Desigualdad Cierto si $a no es igual a $b.

$a < $b Menor que Cierto si $a es estrictamente menor que $b.

$a > $b Mayor que Cierto si $a es estrictamente mayor que $b.

$a <= $b Menor o igual que Cierto si $a es menor o igual que $b.

$a >= $b Mayor o igual que Cierto si $a es mayor o igual que $b.

Page 80: Presentación Curso PHP DGEST V1.13

OPERADORES LOGICOS

Ejemplo Nombre Resultado

$a and $b Y Cierto si tanto $a como $b son ciertos.

$a or $b O Cierto si $a o $b son ciertos.

$a xor $b O exclusiva Cierto si $a es cierto o $b es cierto, pero no ambos a la vez.

! $a Negación Cierto si $a no es cierto.

$a && $b Y Cierto si tanto $a como $b son ciertos.

$a || $b O Cierto si $a o $b son ciertos.

OPERADORES DE INCREMENTO/DECREMENTO

Ejemplo Nombre Efecto

++$a PreincrementoIncrementa $a en uno y después devuelve

$a.

$a++ PostincrementoDevuelve $a y después incrementa $a en

uno.

--$a PredecrementoDecrementa $a en uno y después devuelve

$a.

$a-- PostdecrementoDevuelve $a y después decrementa $a en

uno.

Page 81: Presentación Curso PHP DGEST V1.13

PRECEDENCIA DE LOS OPERADORES

La precedencia es el orden por el que se irán ejecutando las operaciones

en una expresión. En un principio todos los operadores se evalúan de

izquierda a derecha, pero existen unas normas adicionales, por las que

determinados operadores se evalúan antes que otros. El orden de

precedencia es el siguiente:

( ) [ ] . Paréntesis, corchetes y el operador punto que

sirve para los objetos

! - ++ -- negación, negativo e incrementos

* / % Multiplicación división y módulo

+ - Suma y resta

< <= > >= Operadores condicionales

== != Operadores condicionales de igualdad y

desigualdad

&& || Lógicos boleanos

= += -= *= /= %= Asignación

Page 82: Presentación Curso PHP DGEST V1.13

Por ejemplo, veamos cómo se ejecuta la siguiente expresión:

12 * 3 + 4 - 8 / 2 % 3

En este caso primero se ejecutan los operadores * / y %, de izquierda a derecha, con lo

que se realizarían estas operaciones. Primero la multiplicación y luego la división por

estar más a la izquierda del módulo.

36 + 4 - 4 % 3

Ahora el módulo:

36 + 4 – 1

Por último las sumas y las restas de izquierda a derecha:

40 – 1

39

El uso de paréntesis puede ser de mucha ayuda para agrupar términos, por lo cual es

recomendable usarlos.

Page 83: Presentación Curso PHP DGEST V1.13

ESTRUCTURA DE CONTROL IF

Se utiliza para tomar decisiones. Es un condicional que realiza unas u

otras operaciones en función de una expresión. Funciona de la siguiente

manera, primero se evalúa una expresión, si da resultado positivo se

realizan las acciones relacionadas con el caso positivo.

Su sintaxis es la siguiente:

if (expresión)

{

acciones a realizar en caso positivo

...

}

else

{

acciones a realizar en caso negativo

...

}

Page 84: Presentación Curso PHP DGEST V1.13

ESTRUCTURA SWITCH

Es la otra expresión para tomar decisiones en función de distintos

estados de las variables. Esta expresión se utiliza cuando tenemos

múltiples posibilidades como resultado de la evaluación de una

sentencia. Su sintaxis es la siguiente:

switch (expersión)

{

case valor1:

Sentencias a ejecutar si la expresión tiene como valor a valor1

break

case valor2:

Sentencias a ejecutar si la expresión tiene como valor a valor2

break

case valor3:

Sentencias a ejecutar si la expresión tiene como valor a valor3

break

default:

Sentencias a ejecutar si el valor no es ninguno de los anteriores

}

Page 85: Presentación Curso PHP DGEST V1.13

BUCLE FOR

Se utiliza para repetir más instrucciones un determinado número de veces.

Se suele utilizar cuando sabemos seguro el número de veces que

queremos que se ejecute la sentencia. La sintaxis del bucle se muestra a

continuación:

for (inicialización;condición;actualización)

{

sentencias a ejecutar en cada iteración

}

BUCLE WHILE

Se utiliza cuando queremos repetir la ejecución de unas sentencias un

número indefinido de veces siempre que se cumpla una condición. Esta es

su sintaxis:

while (condición)

{

sentencias a ejecutar

}

Page 86: Presentación Curso PHP DGEST V1.13

BUCLE DO WHILE

Igualmente que el ciclo while, se utiliza cuando queremos ejecutar

sentencias un número indefinido de veces. La diferencia es que en este

ciclo tenemos la seguridad de que al menos las sentencias se ejecutaran

una vez. Su sintaxis es la siguiente:

Do

{

sentencias del bucle

} while (condición)

Page 87: Presentación Curso PHP DGEST V1.13

ARREGLOS

Se define a un arreglo como un grupo de elementos relacionados entre sí por

medio de índices. Los arreglos pueden ser de una o más dimensiones.

En PHP un arreglo puede tener elementos de distintos tipos.

Para hacer referencia a un elemento del arreglo, se utiliza un índice, que indica la

dirección en donde se encuentra un determinado valor. El índice en un arreglo

comienza siempre por cero, aunque el índice no necesariamente tiene que ser un

número entero, sino que también puede ser un texto.

$dia[0] = "Domingo";

$dia[1] = "Lunes";

$dia[2] = "Martes";

$dia[3] = "Miércoles";

$dia[4] = "Jueves";

$dia[5] = "Viernes";

$dia[6] = "Sábado";

Page 88: Presentación Curso PHP DGEST V1.13

$Empleado[0] = 4371;

$Empleado[1] = "Martinez Leandro";

$Empleado[2] = "27.643.742";

$Empleado[3] = 1429.54;

$Empleado[4] = "Arquitecto";

Arreglo cuyos elementos

contienen datos de

distintos tipos

$Frutas = array(0 => "Manzana",1 => "Naranja",2 => "Pera",3 => “Guanabana");

Page 89: Presentación Curso PHP DGEST V1.13

FUNCIONES

Los nombres de las funciones siguen las mismas reglas que otras

etiquetas de PHP.

Un nombre de función válido comienza con una letra o guión bajo,

seguido de cualquier número de letras, números, o guiones bajos.

Las funciones no necesitan ser definidas antes de que se

referencien, excepto cuando una función está condicionalmente

definida.

Cuando una función está definida de una forma condicional sus

definiciones deben ser procesadas antes de ser llamadas.

Page 90: Presentación Curso PHP DGEST V1.13

<?php

function foo($arg_1, $arg_2, /* ..., */ $arg_n)

{

echo "Función de ejemplo.\n";

return $valordevuelto;

}

?>

Page 91: Presentación Curso PHP DGEST V1.13

<?

$haceralgo = true;

foo();

//No podemos llamar a foo() desde aquí ya que no existe aún, pero podemos llamar a bar()

bar();

if($haceralgo)

{

function foo()

{

echo "No existo hasta que la ejecucion del programa llegue hasta mi.";

}

}

/* Ahora podemos llamar de forma segura a foo() ya que $haceralgo se evaluó como verdadero */

if($haceralgo)

foo();

function bar()

{

print "Existo desde el momento inmediato que comenzo el programa <br>";

}

?>

Page 92: Presentación Curso PHP DGEST V1.13

FUNCIONES ANIDADAS

<?

function foo()

{

function bar()

{

print "No existo hasta que se llame a foo(). <br>";

}

}

/* No podemos llamar aún a bar() ya que no existe. */

foo();

/* Ahora podemos llamar a bar(), el procesamiento de foo() la ha hecho accesible. */

bar();

?>

Page 93: Presentación Curso PHP DGEST V1.13

P H PLibrerías

Page 94: Presentación Curso PHP DGEST V1.13

GESTION DE CADENAS

PHP cuenta con un gran número de funciones predefinidas que nos ayudan a

manipular cadenas. Algunas de ellas son:

explode ( string $delimiter , string $string )

Devuelve un array de cadenas, siendo cada una de ellas una subcadena del

parámetro string formado por la división según los delimitadores indicados en el

parámetro delimiter.

<?php

$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";

$pieces = explode(" ", $pizza);

echo $pieces[0]; // piece1

echo $pieces[1]; // piece2

>?

Page 95: Presentación Curso PHP DGEST V1.13

md5 ( string $str )

Calcula el hash MD5 de str utilizando el » algoritmo de resumen de mensaje MD5

de RSA Data Security, Inc. y devuelve ese hash.

<?php

$str = 'apple';

if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f')

{

echo "Would you like a green or red apple?";

}

?>

Page 96: Presentación Curso PHP DGEST V1.13

strlen ( string $string )

Devuelve la longitud del string dado.

<?php

$str = 'abcdef';

echo strlen($str); // 6

$str = ' ab cd ';

echo strlen($str); // 7

?>

Page 97: Presentación Curso PHP DGEST V1.13

string implode ( string $glue , array $pieces )

Une elementos de un array en una cadena con glue.

<?php

$array = array('apellido', 'email', 'teléfono');

$separado_por_comas = implode(",", $array);

echo $separado_por_comas; // apellido,email,teléfono

?>

Para ver más funciones diríjase a http://php.net/manual/es/ref.strings.php

Page 98: Presentación Curso PHP DGEST V1.13

GESTION DE ARCHIVOS

Es innegable que en muchos casos puede ser mas cómodo y hasta más sencillo y

manejable utilizar simples archivos de textos que complejas bases de datos.

ABRIENDO UN ARCHIVO

fopen (nombre del archivo, modo)

Ejemplo:

$archivo = “contenidos/ejemplo.txt”;

$puntero= fopen($archivo, “r”);

El modo significa la forma de apertura o tipo de acceso que elegiremos y depende

en gran medida de la necesidad especifica que tengamos para con el mismo.

Page 99: Presentación Curso PHP DGEST V1.13

'r' Sólo lectura

'r+' Lectura y escritura

'w' Sólo escritura

'w+'Lectura y escritura. Suprime el contenido anterior si se escribe. El archivo es creado si no existe.

'a'Sólo escritura. El archivo es creado si no existe y el puntero se coloca al final.

'a+'Lectura y escritura. El archivo es creado si no existe y el puntero se coloca al final.

Page 100: Presentación Curso PHP DGEST V1.13

ESCRIBIR EN UN ARCHIVO

fputs(string $archivo, string $texto);

Ejemplo:

$fp = fopen($archivo,"w");

$mensaje = “HOLA";

$resultado = fputs($fp,$mensaje);//ESCRIBIMOS EL MENSAJE EN EL ARCHIVO

Page 101: Presentación Curso PHP DGEST V1.13

LEEER UN ARCHIVO

fgets(string $archivo);

Ejemplo:

$fp = fopen($archivo,“r");

$mensaje = fgets($fp);

print “$mensaje”;

Page 102: Presentación Curso PHP DGEST V1.13

CERRAR UN ARCHIVO

fclose(string $archivo);

Ejemplo:

$fp = fopen($archivo,"w");

$mensaje = “HOLA";

$resultado = fputs($fp,$mensaje);//ESCRIBIMOS EL MENSAJE EN EL ARCHIVO

$fclose($fp);

Page 103: Presentación Curso PHP DGEST V1.13

POSICIONARSE AL INICIO DE UN ARCHIVO

rewind($puntero_al_archivo | $abertura_del_archivo)Ejemplo:

$fp = fopen($archivo,"r+");

$mensaje = "1 ";

rewind($fp);

$resultado = fputs($fp,$mensaje);//ESCRIBIMOS EL NUEVO AVISO

fclose($fp);

Page 104: Presentación Curso PHP DGEST V1.13

COPIAR UN ARCHIVO

copy ($archivo_origen, $archivo_destino);

Ejemplo:

$archivo_origen = "ejemplo.txt";

$archivo_copia = "copia_de_ejemplo.txt";

copy($archivo_origen, $archivo_copia);

Page 105: Presentación Curso PHP DGEST V1.13

RENOMBRAR UN ARCHIVO

rename($nombre_original, $nuevo_nombre);

Ejemplo:

$viejo_nombre = "ejemplo.txt";

$nuevo_nombre = "ejemplo_renombrado.txt";

rename($viejo_nombre, $nuevo_nombre);

Page 106: Presentación Curso PHP DGEST V1.13

ELIMINAR UN ARCHIVO

unlink($archivo);

Ejemplo:

$archivo = “ejemplo.txt”;

unlink($archivo);

Page 107: Presentación Curso PHP DGEST V1.13

F O R M U L A R I O S

Page 108: Presentación Curso PHP DGEST V1.13

FORMULARIOS

Un formulario es un elemento que permite recoger datos introducidos por

el usuario. Un formulario está formado, entre otras cosas, por etiquetas,

campos de texto, menús desplegables, y botones.

Page 109: Presentación Curso PHP DGEST V1.13

Los formularios se insertan a través de las etiquetas <form> y </form>.

Entre dichas etiquetas habrá que insertar los diferentes objetos que

formarán el formulario. La etiqueta <form> tiene los siguientes atributos:

action – Indica la dirección a donde se enviará la información contenida

en el formulario para ser procesada.

enctype – Indica el modo en que será cifrada la información para su

envío. Por defecto tiene el valor application/x-www-form-urlencoded.

method – Indica el metodo mediante el que se transferirán las variables

del formulario. Su valor puede ser get o post.

Page 110: Presentación Curso PHP DGEST V1.13

AREAS DE TEXTO

Las áreas de texto permiten a los usuarios insertar varias líneas de texto.

Por ello, suelen utilizarse para que incluyan comentarios.

Para insertar un área de texto es necesario incluir las etiquetas

<textarea> y </textarea> entre las etiquetas <form> y </form> del

formulario.

Para que el área de texto tenga algún valor inicial, habrá que insertarlo

entre las etiquetas <textarea> y </textarea>.

Name – Indica el nombre del área de texto..

Rows – Determina al alto del área de texto.

Cols – Determina al ancho del área de texto.

Por ejemplo, para insertar el área de texto:

Page 111: Presentación Curso PHP DGEST V1.13

Habría que escribir el código:

<form name="formulario">

<textarea name="area" cols="30" rows="3">Escribir aqui</textarea>

</from>

Page 112: Presentación Curso PHP DGEST V1.13

ELEMENTOS DE ENTRADA

Para insertar un elemento de entrada es necesario incluir la etiqueta

<input> entre las etiquetas <form> y </form> del formulario.

El atributo name indica el nombre que se desea dar al elemento de

entrada, mediante el cual será evaluado, y el atributo type indica el tipo

de elemento de entrada.

Vamos a ver los diferentes tipos de elementos de entrada, y el resto de

atributos que pueden definirse para cada uno de ellos.

Page 113: Presentación Curso PHP DGEST V1.13

CAMPO DE TEXTO

Para insertar un campo de texto, el atributo type debe tener el valor text.

Size – Indica el número de caracteres que podrán ser visualizados en el

campo de texto, por tanto, determina el ancho de la caja.

Maxlenght – Indica el número de caracteres que podrán ser insertados en

el campo de texto.

Value – Indica el valor inicial del campo de texto

Por ejemplo, para insertar el campo de texto:

Habría que escribir el código:

<input name="campo" type="text" value="Escriba aqui" size="20" maxlength="15">

Page 114: Presentación Curso PHP DGEST V1.13

CAMPO DE CONTRASEÑA

Para insertar un campo de contraseña, el atributo type debe tener el valor

password.

El resto de atributos son los mismos que para un campo de texto normal. La

única diferencia es que todas las letras escritas en el campo de contraseña

serán visualizadas como asteriscos.

Por ejemplo, si el mismo código anterior lo modificáramos así:

<input name="campo" type="password" value="Escriba aqui" size="20"

maxlength="15">

El resultado sería la siguiente caja de contraseña:

Page 115: Presentación Curso PHP DGEST V1.13

Para insertar un botón, el atributo type debe tener el valor submit, restore

o button.

Si el valor es submit, al pulsar sobre el botón se enviará el formulario.

Si el valor es restore, al pulsar sobre el botón se restablecerá el formulario,

borrándose todos los campos del formulario que hayan sido modificados y

adquiriendo su valor inicial.

Si el valor es button, al pulsar sobre el botón no se realizará ninguna acción.

El atributo value indica el texto que mostrará el botón.

Por ejemplo, para insertar el botón:

Su código sería:

<input name="boton" type="submit" value="Este es mi botón">

BOTON

Page 116: Presentación Curso PHP DGEST V1.13

Para insertar una casilla de verificación, el atributo type debe tener el

valor checkbox.

El atributo value indica el valor asociado a la casilla de verificación. Es

necesario poner este atributo, aunque el usuario no pueda ver su valor.

Es el valor a enviar.

La aparición del atributo checked indica que la casilla aparecerá activada

inicialmente. Este atributo no toma valores.

Por ejemplo, para insertar la casilla:

Su código sería:

<input name="casilla" type="checkbox" value="acepto" checked>

CASILLA DE VERIFICACION

Page 117: Presentación Curso PHP DGEST V1.13

BOTON DE OPCION

Para insertar un botón de opción, el atributo type debe tener el valor radio.

El atributo value indica el valor asociado al botón de opción. Es necesario

poner este atributo, aunque el usuario no pueda ver su valor. Es el valor a

enviar.

La aparición del atributo checked indica que el botón aparecerá activado

inicialmente. Este atributo no toma valores.

Los botones de opción se utilizan cuando se desea que una variable del

formulario pueda tomar un solo valor de entre varios posibles. Para ello, se

insertan varios botones de opción con el mismo nombre (que indica la

variable) y con distintos valores. Solamente uno de estos botones podrá estar

activado, el que esté activado cuando se envía el formulario, su valor será el

que tendrá la variable.

Por ejemplo, para insertar los botones de opción:

Page 118: Presentación Curso PHP DGEST V1.13

El código sería:

<input name="opcion" type="radio" value="primera" checked>

<br>

<input name="opcion" type="radio" value="segunda">

Cuando se envíe el formulario, si el primer botón está activado la variable

opcion será igual a primera, si es el segundo el activado, la variable opcion

valdrá segunda. Observe que lo que ponemos como valor no aparece

escrito en la página es un dato interno.

Page 119: Presentación Curso PHP DGEST V1.13

Veamos un ejemplo real de cómo se hace un formulario:

Antes de ver el código para generar este formulario, veamos qué

propiedades tendrá cada campo:

Page 120: Presentación Curso PHP DGEST V1.13

Campo para el nombre:

Nombre: campo_nombre

Anchura: 50 (Tendrá un ancho en donde, aproximadamente, caben 50

caracteres).

Caracteres máximos: 50 (Sólo se pueden escribir en este campo hasta 50

caracteres).

Campo para el e-mail:

Nombre: campo_mail

Anchura: 30 (Tendrá un ancho en donde, aproximadamente, caben 30

caracteres).

Caracteres máximos: 30 (Sólo se pueden escribir en este campo hasta 30

caracteres).

Page 121: Presentación Curso PHP DGEST V1.13

Campo para comentarios:

Nombre: campo_comentario

Anchura: 50 (Tendrá un ancho en donde, aproximadamente, caben 30

caracteres).

Número de líneas: 5 (La altura de la caja será de 5 renglones).

Botones de opción:

Nombre: opciones (Los 2 botones tienen el mismo nombre).

Etiquetas: “Si” y “No”

Valores: 1 para “Si” y 0 para “No”

Botón que aparecerá activado por defecto: El botón con la etiqueta “Si”

Ahora veamos cómo funcionaría nuestro formulario:

Page 122: Presentación Curso PHP DGEST V1.13

J A V A S C R I P T

Page 123: Presentación Curso PHP DGEST V1.13

LENGUAJE JAVASCRIPT

Los lenguajes de script, también conocidos como lenguajes de macros,

son lenguajes que sólo funcionan en las aplicaciones para las que han

sido creados.

La utilización de JavaScript permite variar dinámicamente el contenido

del documento, validar formularios, etc.

Para insertar funciones JavaScript en un documento, es necesario

insertar las etiquetas <script> y </script> dentro de la cabecera (entre las

etiquetas <head> y </head>) o dentro del cuerpo de la página.

Page 124: Presentación Curso PHP DGEST V1.13

A través del atributo language hay que especificar el lenguaje de script,

que en este caso será JavaScript.

Entre las etiquetas <script> y </script> habrá que insertar las funciones

JavaScript.

Si un navegador no reconoce la etiqueta <script>, mostrará el código de las

funciones que ésta contenga. Para que esto no ocurra, las funciones se

insertan como comentarios, entre <!-- y //-->

Hay que destacar que el lenguaje JavaScript se ejecuta del lado del cliente,

es decir, cuando un usuario solicita a un servidor una página de internet y

esta contiene lenguaje JavaScript incrustado, el servidor le enviará la

página con ambos códigos (JavaScript y HTML) y la computadora del

usuario se encargará de compilar el lenguaje script.

Page 125: Presentación Curso PHP DGEST V1.13

SINTAXIS JAVASCRIPT

El lenguaje Javascript tiene una sintaxis muy parecida a la de Java por estar

basado en él. También es muy parecida a la del lenguaje C, de modo que si

el lector conoce alguno de estos dos lenguajes podrá manejar con facilidad

el código.

COMETARIOS

Un comentario es una parte de código que no es interpretada por el

navegador. Existen 2 tipos de comentarios, Uno de ellos, la doble barra

(//), sirve para comentar una línea de código. El otro comentario lo

podemos utilizar para comentar varias líneas y se indica con los signos /*

para empezar el comentario y */ para terminarlo. Veamos uno ejemplo:

<SCRIPT>

//Este es un comentario de una línea

/*Este comentario se puede extender

por varias líneas.

Las que quieras*/

</SCRIPT>

Page 126: Presentación Curso PHP DGEST V1.13

USO DE MAYUSCULAS Y MINUSCULAS

En JavaScript se han de respetar las mayúsculas y las minúsculas. Si nos

equivocamos al utilizarlas el navegador responderá con un mensaje de

error de sintaxis.

SEPARACIÓN DE INSTRUCCIONES

Las distintas instrucciones que contienen nuestros scripts se han de separar

convenientemente para que el navegador no indique los correspondientes

errores de sintaxis. JavaScript tiene dos maneras de separar instrucciones.

La primera es a través del carácter punto y coma (;) y la segunda es a través

de un salto de línea.

Por esta razón Las sentencias JavaScript no necesitan acabar en punto y

coma a no ser que coloquemos dos instrucciones en la misma línea.

Page 127: Presentación Curso PHP DGEST V1.13

DECLARACION DE VARIABLES

JavaScript es un lenguaje muy libre, por lo que no es estrictamente

necesario declarar las variables que se han de utilizar (aunque sí es

recomendable hacerlo).

Los nombres de las variables han de construirse con caracteres

alfanuméricos y el carácter subrayado (_) y deben comenzar con alguno de

estos. No podemos utilizar caracteres especiales como el signo +, un

espacio o un $ ni usar nombres reservados.

Declaraciones válidas: var nombre, var _telefono, var edad

Declaraciones invalidas: var 2edad, var return, var alm@

Page 128: Presentación Curso PHP DGEST V1.13

TIPOS DE DATOS Y COMO SE GUARDAN EN VARIABLES

En JavaScript hay distintos tipos de datos, algunos de ellos son:

Numéricos (9, 33.6, 102, etc.), Cadenas (“Esto es una cadena” –debe ir

encerrado entre comillas dobles–), Boleanos (True y False), Objetos,

Funciones o Vacios (null), entre otros.

Algunos ejemplos de cómo se asignan valores a variables:

var nombre_ciudad = "Celaya"

var revisado = true

var cantidad = 100

Page 129: Presentación Curso PHP DGEST V1.13

VALIDACION DE FORMULARIOS CON JAVASCRIPT

Retomemos el ejemplo que vimos en el apartado formularios (tema

HTML).

Page 130: Presentación Curso PHP DGEST V1.13

El usuario introduce sus datosArchivo:

formulario.html

¿Oprimió el botón “Enviar datos”?

Se borran todos los campos

Los datos se envían a otro archivo para ser verificados

Archivo: validar_datos.js

¿Los datos son correctos?

Los datos se envían a otro archivo para ser procesados.Archivo: guardar_datos.php

SI

SI

NO

NO

¿Oprimió el botón “Reestablecer”?

SI NO

Page 131: Presentación Curso PHP DGEST V1.13

(01) <html>

(02) <head>

(03) <title>Formulario</title>

(04) <script language="JavaScript" src="validar_datos.js"></script>

(05) </head>

(06) <body>

(07) <form id="formulario" name="formulario" method="post" action="guardar_datos.php" onSubmit

="return validar(this)">

(08) <p>Nombre:

(09) <input name="campo_nombre" type="text" id="campo_nombre" size="50" maxlength="50"></p>

(10) <p>e-mail:

(11) <input name="campo_mail" type="text" id="campo_mail" size="30" maxlength="30"></p>

(12) <p>Comentario:<textarea name="campo_comentario" cols="50" rows="5"

id="campo_comentario"></textarea></p>

(13) <p>¿Podemos conservar sus datos?</p>

(14) <p>

(15) <label><input name="opciones" type="radio" value="1" checked="checked">Si</label>

(16) <br>

(17) <label><input type="radio" name="opciones" value="0">No</label>

(18) </p>

(19) <p>

(20) <input name="boton_borrar" type="reset" id="boton_borrar" value="Borrar">

(21) <input name="boton_enviar" type="submit" id="boton_enviar" value="Enviar datos">

(22) <br>

(23) </p>

(24) </form>

(25) </body>

(26) </html>

Page 132: Presentación Curso PHP DGEST V1.13

Veamos qué hace cada línea de código:

ESTRUCTURA DEL DOCUMENTO

Líneas 01 y 26 – Delimitan el documento HTML.

Líneas 02 y 05 – Delimitan el encabezado.

Líneas 06 y 25 – Delimitan el cuerpo (body) del documento.

DENTRO DEL ENCABEZADO

Línea 03 – Define el título del documento.

Línea 04 – Incrusta un lenguaje (JavaScript) haciendo referencia a un

archivo (validar_datos.js)

Page 133: Presentación Curso PHP DGEST V1.13

DENTRO DEL CUERPO (body)Líneas 07 y 24 – Delimitan el formulario:action – Los datos serán enviados (mediante el método post) al archivo guardar_datos.php donde serán procesados.onSubmit – Al dar clic en el botón Enviar datos (el cuál es de tipo submit) ejecutará el código JavaScript incrustado mediante la función validar, mandándole como parámetro el objeto formulario (this).Línea 08 – Escribe la etiqueta Nombre.Línea 09 – incrusta la caja campo_nombre de tipo text.Línea 10 – Escribe la etiqueta e-mailLínea 11 – Incrusta la caja campo_mail de tipo text.Línea 12 – Escribe la etiqueta Comentario, seguida del textareacampo_comentario.Línea 13 – Escribe la etiqueta ¿Podemos conservar sus datos?Líneas 14 y 18 – Delimitan un párrafoLínea 15 – Incrusta un botón de opción (tipo radio) de nombre opciones con el valor 1 y la etiqueta Si. Este botón estará activado por defecto (checked).Línea 17 – Incrusta un botón de opción (tipo radio) de nombre opciones con el valor 0 y la etiqueta No.Línea 20 – Incrusta el botón_borrar de tipo reset.Línea 21 – Incrusta el botón_enviar de tipo submit.

Page 134: Presentación Curso PHP DGEST V1.13

Según el código HTML que escribimos para generar este formulario,

tenemos algunas líneas que hacen referencia al archivo JavaScript que

validará los datos:

La línea 04 (dentro del encabezado) incrusta el código JavaScript

contenido en el archivo validar_datos.js:

<script language="JavaScript" src="validar_datos.js"></script>

La línea 07 (dentro del cuerpo –body- del documento) define el

formulario (de nombre formulario) el cual, al hacer clic en el botón

enviar ejecutará la función validar del script incrustado mandándole

como parámetro todo el objeto formulario (this):

<form id="formulario" name="formulario" method="post"

action="guardar_datos.php" onSubmit="return validar(this)">

Page 135: Presentación Curso PHP DGEST V1.13

Supongamos que uno de los datos que forzosamente tiene que llenar el

usuario sea su nombre, de manera que queremos validar que, al dar clic

en enviar, dicho campo no este vacio. El código contenido en el archivo

validar_datos.js sería el siguiente:

(01) function validar(formulario)

{

(02) if (formulario.campo_nombre.value.length < 1)

{

(03) alert ("Por favor, escriba su nombre");

(04) formulario.campo_nombre.focus();

(05) return (false);

}

}

Page 136: Presentación Curso PHP DGEST V1.13

Línea 01 – Define la función validar, la cual recibe como parámetro todo

el formulario y le da el nombre de formulario (podría darle otro

nombre, por ejemplo “parametro1”).

Línea 02 – Define una estructura de control if la cual valida si el objeto

formulario en su campo campo_nombre tiene una cadena de longitud

menor a 1.

Línea 03 – Abre una ventana de aviso (mediante la acción alert)

indicando que debe introducir su nombre.

Línea 04 – Hace que, al regresar el control al formulario, el campo

campo_nombre tenga el foco.

Línea 05 – La función validar da como resultado un false el cuál

regresará al formulario.

Page 137: Presentación Curso PHP DGEST V1.13

Es importante mencionar que, cuando la función validar regresa false,

el formulario suspenderá la acción a realizar.

Recordemos que, al definir el formulario, se le dio una propiedad

action=”guardar_datos.php” de manera que al recibir un false no será

ejecutada. Si, por el contrario recibe un null o un true entonces sí se

ejecutaría dicha acción.

Page 138: Presentación Curso PHP DGEST V1.13

VALIDACION DE UN CAMPO DE e-mail

Antes que nada, definamos nuestras reglas de cómo estaría compuesta

una dirección de correo válida:

Nombre – Compuesto por, letras y/o números (al menos un caracter).

Símbolo @

Nombre del servidor - Compuesto por, letras y/o números (al menos un

caracter).

Punto (.)

Dominio – Compuesto por 2 o 3 letras (com, edu, ar, mx, etc)

Page 139: Presentación Curso PHP DGEST V1.13

Teniendo en cuenta estas reglas algunos ejemplos de direcciones

válidas y no válidas serian:

e-mail válido e-mail inválido

[email protected] direccion1@hotmail

[email protected] @yahoo.mx

[email protected] 3adireccion.latinmail.edu

[email protected] [email protected]

Existen varias formas de validar una cadena, la que usaremos aquí hará

uso de una expresión regular. Antes de definir nuestra expresión,

veamos el uso de los modificadores:

Page 140: Presentación Curso PHP DGEST V1.13

Una expresión regular se delimita por los símbolos /^ para comenzar y

$/ para terminar.

\w se utiliza para especificar el uso de una letra (mayúscula o

minúscula, excepto la ñ) o número.

El signo + significa que el término precedido por el aparecerá una o

varias veces.

El signo * significa que el termino precedido por el puede o no

aparecer.

Construyamos pues, nuestra expresión regular:

Page 141: Presentación Curso PHP DGEST V1.13

/^ \w+ @ \w+ \. \w{2,3} $/

/^ y $/ delimitan nuestra expresión.

\w+ Será para el nombre. \w es letra o digito y el signo + significa que se puede

repetir varias veces.

@ Forzosamente deberá llevar el signo @

\w+ Será para el nombre del servidor (mismas reglas que para el nombre).

\. Forzosamente deberá llevar punto

\w{2,3} Estamos especificando que termina con una cadena de 2 o 3 caracteres.

Ahora que ya tenemos nuestra expresión regular, veamos cómo se utilizaría en

nuestro archivo validar_datos.js:

Page 142: Presentación Curso PHP DGEST V1.13

(01) function validar(formulario)

{

(02) filtro=/^\w+@\w+\.\w{2,3}$/;

(03) if (filtro.test(formulario.campo_mail.value))

{

(04) alert ("e-mai válido");

(05) return (true);

}

(06) else

{

(07) alert("e-mail inválido");

(08) return (false);

}

}

Page 143: Presentación Curso PHP DGEST V1.13

Línea 02 – Asigna nuestra expresión regular a una variable de nombre

filtro.

Línea 03 – Define una estructura if en donde validará lo siguiente:

Va a comparar el contenido del campo_nombre

(formulario.campo_nombre.value) para ver si coincide (test) con la

expresión guardada en la variable filtro.

Líneas 04 y 05 – Se ejecutarán si la validación da como resultado

verdadero.

Líneas 07 y 08 – Se ejecutarán si la validación da como resultado falso.

Page 144: Presentación Curso PHP DGEST V1.13
Page 145: Presentación Curso PHP DGEST V1.13
Page 146: Presentación Curso PHP DGEST V1.13

RECUPERACION DE VALORES DE FORMULARIOS

Como vimos anteriormente, existen dos formas de que un formulario

envíe sus valores a otro documento. Estos métodos son get y post.

En el método get, los valores se pasarán mediante el navegador web

añadiéndolos en la barra de dirección (justo después del nombre de la

página).

En el método post, los valores se pasarán como parámetros, invisibles a

los usuarios.

Regresemos a nuestro ejemplo del formulario, el cuál se muestra

nuevamente a continuación:

Page 147: Presentación Curso PHP DGEST V1.13

Recordemos los campos que contiene:

campo_nombre

campo_mail

campo_comentario

Grupo de botones de opción con el nombre opciones y valores 1 para

Si y 0 para No

Page 148: Presentación Curso PHP DGEST V1.13

ENVIANDO LOS VALORES DEL FORMULARIO POR EL METODO GET

Supongamos que, al definir nuestro formulario, definimos su método

como get:

<form id="form1" name="form1" method="get"

action="guardar_datos.php" onSubmit ="return validar(this)"

Al dar clic en el botón Enviar datos (onSubmit) se mandará llamar la

función JavaScript validar. Si esta función regresa un valor true

entonces el formulario continuará su proceso y ejecutará el archivo

guardar_datos.php

Al mandar el control hacia este nuevo archivo, pasará los valores del

formulario dentro de la barra de dirección de nuestro navegador web

como se muestra en la siguiente figura:

Page 149: Presentación Curso PHP DGEST V1.13

En la figura no se alcanza a ver toda la línea completa, a continuación se

muestra todo el contenido de la barra de dirección:

http://localhost/Pruebas/guardar_datos.php?campo_nombre=Ricardo

&campo_mail=

[email protected]&campo_comentario=Comentario&opciones=1&

boton_enviar=

Enviar+datos

Como podemos ver, todos los valores del formulario han sido mandados

y el usuario puede verlos.

Lo primero que esta escrito es el archivo destino guardar_datos.php

(escrito con toda su dirección URL):

http://localhost/Pruebas/guardar_datos.php

Page 150: Presentación Curso PHP DGEST V1.13

A esto le sigue un símbolo ? el cual indica que a partir de ahí comienzanlos valores que se han pasado como parámetros:

http://localhost/Pruebas/guardar_datos.php?

La separación entre cada valor enviado esta delimitado por el símbolo &seguido del nombre de la variable, un signo = y el valor de dichavariable.

Una vez que el documento guardar_datos.php recibe estos parámetrospuede recogerlos mediante el siguiente código:

<?$nombre = $_GET['campo_nombre'];$mail = $_GET['campo_mail'];$comentario = $_GET['campo_comentario'];$opcion = $_GET['opciones'];

?>

Page 151: Presentación Curso PHP DGEST V1.13

ENVIANDO LOS VALORES DEL FORMULARIO POR EL METODO POST

En este caso, al definir nuestro formulario el método se especifica como

post:

<form id="form1" name="form1" method="post"

action="guardar_datos.php" onSubmit ="return validar(this)"

Al igual que en el caso anterior, al dar clic en el botón Enviar datos

(onSubmit) se mandará llamar la función JavaScript validar. Si esta

función regresa un valor true entonces el formulario continuará su

proceso y ejecutará el archivo guardar_datos.php

La diferencia es que aquí los valores NO se mandarán mediante la barra

de dirección de nuestro navegador web, de manera que el usuario no

podrá ver dichos valores.

Page 152: Presentación Curso PHP DGEST V1.13

Una vez que el documento guardar_datos.php recibe estos parámetros

puede recogerlos mediante el siguiente código:

<?

$nombre = $_POST['campo_nombre'];

$mail = $_ POST ['campo_mail'];

$comentario = $_ POST ['campo_comentario'];

$opcion = $_ POST ['opciones'];

?>

Como podemos ver, el código es el mismo. Lo único que cambia es la

palabra reservada GET por POST.

Es importante resaltar que, si el método de un formulario se define

como get y se trata de recuperar los valores mediante post no se logrará

hacerlo. Y, viceversa, si el método de un formulario se define como post

y se trata de recuperar los valores mediante get no se logrará recuperar

los valores.

Page 153: Presentación Curso PHP DGEST V1.13

Existe una manera de recuperar los valores de los formularios

independientemente de si su método es get o post. Esto se logra

mediante la palabra reservada de PHP “$_REQUEST”:

<?

$nombre = $_REQUEST[“campo_nombre”];

$mail = $_ REQUEST [“campo_mail”];

$comentario = $_ REQUEST [“campo_comentario”];

$opcion = $_ REQUEST [“opciones”];

?>

Page 154: Presentación Curso PHP DGEST V1.13

SUBIR ARCHIVOS A UN SERVIDOR

Para subir un archivo al servidor es necesario que el formulario ocupe el atributo enctype con

un valor de “multipart/form-data”:

<form id=“form1” name=“form1” method=“post” action=“subir.php” enctype=“multipart/form-

data”>

……………….

<input type="file" name=“archivo" id=“archivo" size="5" />

………

</form>

Page 155: Presentación Curso PHP DGEST V1.13

En el archivo subir.php haremos uso de la variable predefinida $_FILES:

<?$tipo = $_FILES["archivo"]['type'];$tamanio = $_FILES["archivo"]['size'];$nombre = $_FILES["archivo"]['name'];$nombre_temp = $_FILES["archivo"]['tmp_name'];$destino = "$nombre";print "$tipo <br> $tamanio <br> $nombre <br> $nombre_temp";copy($_FILES["archivo"]['tmp_name'],$destino);?>

Page 156: Presentación Curso PHP DGEST V1.13

M y S Q L

Page 157: Presentación Curso PHP DGEST V1.13

Antes de comenzar a crear nuestras bases de datos, veamos que hay tres gruposde tipos de datos con los que trabaja MySQL:

Tipos numéricos Tipos de fecha Tipos de cadena

TIPOS NUMERICOS.- Existen tipos de datos numéricos, que se pueden dividir endos grandes grupos, los que están en coma flotante (con decimales) y los que no.Los tipos numéricos son:

Page 158: Presentación Curso PHP DGEST V1.13

TinyInt: Es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255

Bit ó Bool: un número entero que puede ser 0 ó 1 SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -

8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde - 2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 BigInt: número entero con o sin signo. Con signo el rango de valores va desde -

9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615.

Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38.

xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308a-2.2250738585072014E-308,0 y desde2.2250738585072014E-308 a 1.7976931348623157E+308

Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena.

Page 159: Presentación Curso PHP DGEST V1.13

TIPOS DE FECHA.- A la hora de almacenar fechas, hay que tener en cuenta que MySQLno comprueba de una manera estricta si una fecha es válida o no. Simplementecomprueba que el mes está comprendido entre 0 y 12 y que el día está comprendidoentre 0 y 31. Los tipos son:

Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia.

DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enerodel 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-diahoras:minutos:segundos

TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 alaño 2037. El formato de almacenamiento depende del tamaño del campo:

Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de'HH:MM:SS‘

Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremosalmacenar el año con dos o cuatro dígitos

Page 160: Presentación Curso PHP DGEST V1.13

Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255caracteres.

VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde0 a 255 caracteres.

TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres Blob y Text: un texto con un máximo de 65535 caracteres. MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres. LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que

tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tenerun máximo de 16 Mb.

Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enumacepta hasta 65535 valores distintos

Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La listapuede tener un máximo de 64 valores.

TIPOS DE CADENA:

Page 161: Presentación Curso PHP DGEST V1.13

Ahora que ya vimos los tipos de datos con los que trabaja MySQL, empecemos a trabajarcon phpMyAdmin, para ello, escribamos en nuestro navegador de internet

http://localhost/phpMyAdmin/

Recordemos que, al inicio de este curso, ya instalamos el AppServ y definimos un nombrede usuario y contraseña, pues para poder accesar al phpMyAdmin nos solicitará esosdatos.

Page 162: Presentación Curso PHP DGEST V1.13

El manejo de bases de datos con phpMyAdmin es bastante sencillo, el ambiente gráficoes de mucha utilidad. Para crear una base de datos simplemente especificamos elnombre, en este ejemplo crearemos la base de datos “prueba”:

Page 163: Presentación Curso PHP DGEST V1.13

Una vez creada, en la parte de la derecha nos mostrará el mensaje de que la BD se creósatisfactoriamente y, en la parte izquierda, aparece la lista de las BDs que tengamos ennuestro servidor:

Como se puede ver, en la parte izquierda ya aparece nuestra BD prueba y, entreparéntesis, nos marca un número cero (0), esto quiere decir que nuestra BD notiene ninguna tabla aún.

Page 164: Presentación Curso PHP DGEST V1.13

Para continuar con el ejemplo con el que hemos venido trabajando, creemos la tablacorrespondiente donde se guardarán los datos. Recordemos los campos que tiene nuestroformulario, en base a ello crearemos la siguiente tabla:

Nombre de la tabla: tabla_pruebaNúmero de campos: 5

Descripción de los campos:

Page 165: Presentación Curso PHP DGEST V1.13

El campo id_tabla nos servirá como llave principal (key) y será autoincrement, lo cuálquiere decir que, cada que se inserte un registro en nuestra tabla, este valor seincrementará automáticamente.

Tomando en cuenta estos aspectos, veamos cómo es que crearíamos nuestra tabla:En la parte izquierda, seleccionamos nuestra BD, en la parte derecha ingresamos elnombre de la tabla, el número de campos y damos clic en “continuar”:

Page 166: Presentación Curso PHP DGEST V1.13

Ahora, especificamos las características de los 5 campos. El atributo “null” significará queese campo pude estar vacio, es decir, si un campo tiene “null” es porque, al insertar unregistro, este campo puede quedar sin habérsele introducido ningún dato:

El resultado nos mostrará en la parte de la izquierda el nombre de nuestra tabla, en laparte de la derecha (arriba) el código SQL que se utilizó para generar nuestra tabla y, enla parte de la derecha (abajo) el resultado (estructura) de nuestra tabla:

Page 167: Presentación Curso PHP DGEST V1.13

Con esto, ya tenemos lista nuestra BD para manipular los datos que hayamos extraído de nuestro formulario.

Page 168: Presentación Curso PHP DGEST V1.13

CONEXIÓN A UNA BASE DE DATOS

Una vez que ya hemos creado la base de datos y, antes de empezar a manipularla, debemos crear la conexión entre ella y nuestra aplicación Web.

Dicha conexión es bastante sencilla, simplemente consta de 2 líneas de código PHP que incrustaremos en nuestro código HTML. Para ello utilizaremos la función mysql_connect, su sintaxis es la siguiente:

mysql_connect(“parametro1”,”parametro2”,”parametro3”);

Parámetro 1.- Será la dirección ip de nuestro servidor o el nombre del servidor. Parámetro 2.- Será el nombre de usuario Parámetro 3.- Será la contraseña del usuario

Page 169: Presentación Curso PHP DGEST V1.13

Las 2 líneas de código que ocuparíamos para realizar la conexión son las siguientes:

$con=mysql_connect("localhost","root","mysql");mysql_select_db("table_prueba",$con);

Como se mencionó, estas líneas de código las podemos incrustar en cualquier parte de nuestro documento HTML siempre y cuando sea entre los símbolos <? Y ¿>. Además, deben incrustarse antes de las líneas de código en las que vayamos a manipular la BD.

Page 170: Presentación Curso PHP DGEST V1.13

INSERCIÓN, EXTRACCIÓN Y MANIPULACIÓN DE DATOS

Siguiendo con nuestro ejemplo, recordemos que ya habíamos recolectado la informaciónde los campos de nuestro formulario, dichos valores los habíamos guardado en variables.

Este fue el código:

<?$nombre = $_REQUEST[“campo_nombre”];$mail = $_ REQUEST [“campo_mail”];$comentario = $_ REQUEST [“campo_comentario”];$opcion = $_ REQUEST [“opciones”];?>

Ahora veremos la forma de insertar estos valores en los campos de la tabla tabla_pruebade nuestra BD.La función que se utiliza para ello es mysql_query en conjunto con la instrucción SQLINSERT su sintaxis es la siguiente:

$resultado= mysql_query("INSERT INTO nombre_tabla(campo1,campo2,campo3….)VALUES ('variable1,'variable2','variable3'….);

Page 171: Presentación Curso PHP DGEST V1.13

El resultado que arroje la función mysql_query (que es un bolenano true o false) se leasigna a la variable $resultado. Esta variable $resultado es la que nos ayudará a saber sila consulta se ejecutó con éxito.

De manera que, las instrucciones que ocuparíamos para introducir los datos de nuestroejemplo serían:

$resultado = mysql_query(“INSERT INTO tabla_prueba(nombre,mail,comentario,autorizacion)VALUES(‟$nombre‟, ‟$mail‟, ‟$comentario‟, ‟$opcion ‟)”);

Nota: recordemos que el campo id_tabla de nuestra BD es autoincrement, por lo que noes necesario introducirle ningún valor a ese campo.

Page 172: Presentación Curso PHP DGEST V1.13

VINCULACION A LA PAGINA CORRESPONDIENTE (Página de confirmación o página de error según sea el caso)

Las líneas que ocuparemos para mandar a la página correspondiente de error o de confirmación son las siguientes:

if ($resultado){

header("location:confirmación.html");}else

header("location:error.html");

Page 173: Presentación Curso PHP DGEST V1.13

EXTRACCION DE DATOS PARA PRESENTARLOS EN UN DOCUMENTO HTML

Desde phpMyAdmin podemos ver los datos contenidos en nuestra tabla, pero lo ideal estener una página que extraiga esos datos y nos los presente a manera de un reporte.

Como en realidad no sabemos a ciencia cierta cuántos registros tiene nuestra tabla,necesitamos crear una página que, dinámicamente, vaya mostrando los registros. Esto sehace ocupando lenguaje PHP, usándolo para que cuente el número de registroscontenidos en la tabla y que, después, genere una tabla con un número de renglonesigual al número de registros.

Lo primero que haremos, será hacer una consulta de TODOS los registros de la base dedatos mediante la instrucción SQL:

SELECT nombre_de_la(s)_columna(s)_de_la_tabla FROM nombre_de_la_tabla

Page 174: Presentación Curso PHP DGEST V1.13

La consulta SELECT puede diseñarse para que nos arroje el resultado deseado, algunosejemplos serían:

a) SELECT * FROM tabla_pruebab) SELECT nombre,mail FROM tabla_pruebac) SELECT id_tabla,mail FROM tabla_prueba WHERE nombre = “abc”d) SELECT * FROM tabla_prueba WHERE nombre LIKE “%abc%”

El resultado de estas consultas sería:

a) Toda la información de la tabla_pruebab) El nombre y mail de todos los registros de la tabla_pruebac) El id_tabla y mail de todos los registros que en su campo nombre tengan abc de latabla_pruebad) toda la información de todos los registros que en su campo nombre contengan la cadenaabc (por ejemplo xxxabcyyy).

La consulta SELECT es sumamente poderosa y tiene una gran cantidad de modificadorespara hacerla funcionar de la manera que uno necesite, si desea saber más informaciónsobre la sintaxis de esta u otras instrucciones, puede consultar http://www.sql.org/

Page 175: Presentación Curso PHP DGEST V1.13

Recordemos que, cualquier instrucción SQL la ejecutaremos mediante la funciónmysql_query() de PHP.Cuando dicha función se usa con la instrucción SELECT, devolverá un valor de falso si no selogró ejecutar correctamente, de lo contrario, devolverá una variable especial llamadaresource la cual contiene el resultado de la consulta.

Por lo tanto, asignaremos a una variable el valor devuelto por esa función. Entonces, nuestrainstrucción quedaría así:

$resultado = mysql_query(“SELECT * FROM tabla_prueba”);

De manera que en la variable $resultado, estará contenido una valor de falso o la variableresource con el resultado de la consulta.

Ahora, ya que tenemos el resultado de TODOS los registros (guardado en la variable$resultado), necesitamos extraer la información correspondiente a cada registro (uno poruno). Con la finalidad de mostrar la información de cada uno de ellos.

Page 176: Presentación Curso PHP DGEST V1.13

Para esto, vamos a utilizar la función mysql_fetch_array() la cuál llevará como parámetronuestra variable resultado.

La función mysql_fetch_array(), lo que hace es extraer la información correspondiente a unregistro y mueve el puntero de datos al registro siguiente. De manera que, el resultadodevuelto por la función mysql_fetch array() es un arreglo con los campos de informacióndel registro extraído o devuelve un falso si no hay ningún registro al cual extraerinformación.

Entonces, si asignamos el valor devuelto por la función mysql_fetch_array() a una variable,esta variable tendrá dos posibles valores: a) un arreglo donde contendrá la información decada campo del registro extraído o b) un falso si no hay ningún registro al cual extraerleinformación.

Ahora, como lo que nos interesa es extraer la información de TODOS los registro y no nadamás el de uno, entonces lo que haremos es usar la función mysql_fetch_array() dentro deun ciclo while. De manera que quedaría establecido de la siguiente manera:

Page 177: Presentación Curso PHP DGEST V1.13

while($renglon=mysql_fetch_array($resultado)){}

El ciclo while se repetira hasta que la variable $renglon tenga un valor de falso (esdecir, hasta que la función mysql_fetch_array() no encuentre un registro).

En cada repetición del ciclo while, la variable $renglon cambiará de valores y, comose mencionó líneas arriba, su valor será un arreglo. Para acceder a cada campo dedicho arreglo se hace de la siguiente manera:

$renglon[nombre_del_campo];

Lo que nosotros queremos hacer es, presentar la información de nuestra tabla en undocumento a manera de un reporte, por lo que necesitaremos una tabla html que sediseñará dinámicamente (puesto que en realidad no sabemos cuántos registros entotal tiene la tabla de la base de datos).

Page 178: Presentación Curso PHP DGEST V1.13

Comenzaremos por diseñar una tabla con 5 columnas (la tabla de nuestra bd tiene 5campos) y 2 renglones. En el primer renglón, pondremos el encabezado de nuestratabla; el segundo renglón es el que se repetirá n veces para mostrar la información decada registro:

El código HTML para generar esta tabla sería

similar al siguiente:

(1) <table>

(2) <tr>

(3) <td>ID</td>

(4) <td>NOMBRE</td>

(5) <td>E-MAIL</td>

(6) <td>COMENTARIO</td>

(7) <td>AUTORIZACIÓN</td>

(8) </tr>

(9) <tr>

(10) <td></td>

(11) <td></td>

(12) <td></td>

(13) <td></td>

(14) <td></td>

(15) </tr>

(16) </table>

Page 179: Presentación Curso PHP DGEST V1.13

El primer renglón (donde se establece el encabezado de nuestra tabla) está comprendidode las líneas 2 a la 8. Si nuestra tabla de la bd tuviera 10 registros en total, entonces elsegundo renglón de nuestra tabla html tendrá que repetirse 10 veces de manera que todoel código para generar el segundo renglón (líneas 9 a 15) son las que insertaremos dentrodel ciclo while:

(a) while($renglon=mysql_fetch_array($resultado))

(b) {

(9) <tr>

(10) <td></td>

(11) <td></td>

(12) <td></td>

(13) <td></td>

(14) <td></td>

(15) </tr>

(c) }

Page 180: Presentación Curso PHP DGEST V1.13

Pero, como dentro del ciclo while (lenguaje PHP) estamos insertando lenguaje HTML, nosmarcaría error, entonces lo que haremos será encerrar cada línea de código HTML (líneas9 a 15) dentro de la instrucción print:

(a) while($renglon=mysql_fetch_array($resultado))

(b) {

(9) print “<tr>“;

(10) print “<td></td>“;

(11) print “<td></td>“;

(12) print “<td></td>“;

(13) print “<td></td>“;

(14) print “<td></td>“;

(15) print “</tr>“;

(c) }

Page 181: Presentación Curso PHP DGEST V1.13

Nota: Es muy común que dentro de las comillas de la instrucción print (“xxx”)la sintaxis HTML lleve también comillas por lo que se debe poner el slash(diagonal invertida) como secuencia de escape justo antes de cada comilladoble excepto en la inicial y la final (esas son de la instrucción print). Porejemplo, supongamos la siguiente línea de código HTML para generar unformulario:

<form name=”form1” method=”post”>

Los valores que toman las propiedades name y method están encerradosentre comillas, al encerrar esta línea en la instrucción print, quedará asi:

print “<form name=\”form1\” method=\”post\”>”;

Page 182: Presentación Curso PHP DGEST V1.13

Con este ciclo, ya estaríamos creando una tabla de manera dinámica, con un número derenglones igual al total de registros en nuestra base de datos. Lo único que falta, es que,en cada renglón escriba la información correspondiente a cada registro para lo cual sehace referencia a cada campo del arreglo $renglon[ ]. Finalmente, el código quedaría dela siguiente manera:

(a) while($renglon=mysql_fetch_array($resultado))

(b) {

(9) print “<tr>“;

(10) print “<td>$renglon[id_tabla]</td>“;

(11) print “<td>$renglon[nombre]</td>“;

(12) print “<td>$renglon[email]</td>“;

(13) print “<td>$renglon[comentario]</td>“;

(14) print “<td>$renglon[autorizacion]</td>“;

(15) print “</tr>“;

(c) }

Este código lo ocuparíamos en un archivo que le llamaremos lista.php (posteriormente,este archivo nos servirá para generar otro similar)

Page 183: Presentación Curso PHP DGEST V1.13

ELIMINAR UN REGISTRO

Ahora, vamos a ver cómo se elimina un registro de nuestra base de datos. El proceso serealizará mediante 2 archivos:

Page 184: Presentación Curso PHP DGEST V1.13

El archivo eliminar.php nos mostrara un listado con la información de nuestra base dedatos, al darle clic en alguno de los registros, nos mandará al archivo eliminar2.php elcual se encargará propiamente de borrar ese registro.

Recordemos que ya contamos con un archivo que nos muestra el listado de información(lista.php) entonces ese archivo nos servirá, lo que haremos es crear una copia delista.php y guardarla como eliminar.php.

Este archivo ya contiene la mayor parte de código a utilizar, lo único que le vamos aañadir es la parte que generará los hipervínculos necesarios para que al darle clic enalgún registro no mande al archivo eliminar2.php.

El código HTML para esto es:

<a href=”pagina_destino”>Texto_al_que_se_le_aplicara_hipervinculo</a>

Page 185: Presentación Curso PHP DGEST V1.13

Supongamos, que le queremos aplicar el hipervínculo a la columna que muestra losnombres, entonces, en el código mostrado en la página anterior, modificaríamos lalínea 11 quedando de la siguiente manera:

(11) print“<td><a href=\”eliminar2.php\”>$renglon[nombre]</a></td>“;

Pero aún falta algo: al dar clic en el nombre, aparte de hacer el hipervínculo aeliminar2.php también hay que mandarle como parámetro el id_tabla del registro alcual se le hizo clic para que el archivo eliminar2,php “sepa” a cuál se le dio clic y cuál vaa eliminar.

Esto lo haremos enviando dicho dato como parámetro (método get) al momento derealizar el hipervínculo, Entonces, finalmente, la línea 11 de código quedará asi (es unasola línea de código):

(11)print“<td><a href=\”eliminar2.php?id=$renglon[id_tabla]\”>$renglon[nombre]</a></td>“;

De esta manera, le estamos pasando a la página eliminar2.php un parámetro llamadoid el cual tiene como valor la información contenida en $renglon[id_tabla].

Page 186: Presentación Curso PHP DGEST V1.13

Veamos ahora en el archivo eliminar2.php vamos a hacer el proceso de borrar el registroal cual se le haya dado clic, esto lo haremos siguiendo 4 pasos:

PASO 1: Recuperar el parámetro enviado por eliminar.php

$id = $_REQUEST[id];

Aquí, estamos recuperando el parámetro (enviado como id) y lo estamos guardando enla variable $id.

PASO 2: Conectarse al servidor y seleccionar nuestra base de datos.- son las mismas 2líneas de código que usamos cuando insertamos un registro.

PASO 3: Eliminar el registro mediante una consulta en lenguaje SQL.

La consulta, en lenguaje SQL, seria:

DELETE FROM nombre_de_la_tabla WHERE condición

Page 187: Presentación Curso PHP DGEST V1.13

Aplicándola directamente sobre nuestro ejemplo, la consulta quedaría como:

DELETE FROM tabla_prueba WHERE id_tabla=‟$id‟

Para ejecutar esta consulta, lo haremos mediante la función PHP mysql_query:

mysql_query (“DELETE FROM tabla_prueba WHERE id_tabla=‟$id‟”);

Cuando la función mysql_query() se usa con la consulta DELETE, devuelve 2 posiblesvalores: verdadero en caso de haberse ejecutado satisfactoriamente o falso en casocontrario. Por lo tanto, podemos asignar el resultado de esta función a una variable:

$resultado=mysql_query(“DELETE FROM tabla_prueba WHERE id_tabla=‟$id‟”);

PASO 4: Verificar el resultado.

Page 188: Presentación Curso PHP DGEST V1.13

if($resultado)

{

//Mandar mensaje de acción correcta

}

else

{

//Mandar mensaje de acción incorrecta

}

Page 189: Presentación Curso PHP DGEST V1.13

MODIFICAR UN REGISTRO

Para modificar un registro de la base de datos, vamos a hacer uso de 3 archivos:

a) modificar.php.- Nos mostrará la lista de registros de la base de datos, al darle clicen alguno de ellos hará el hipervínculo hacia modificar2.php pasándole comoparámetro el id_tabla de dicho registro.b) modificar2.php.- Nos mostrará un formulario igual formulario.html, solo que aquíle añadiremos la información de dicho registro en cada campo correspondiente. Aldarle clic al botón enviar mandará la información a modificar3.php para serprocesadac) modificar3.php.- Hará el proceso de modificar el registro.

Page 190: Presentación Curso PHP DGEST V1.13

Al igual que lo hicimos en eliminar, para modificar un registro vamos a crear una listacon que nos muestre los registros de la base de datos. Recordemos que ya tenemosun archivo que hace esto (eliminar.php). De manera que haremos una copia de él yle llamaremos modificar.php.

En este archivo, lo único que vamos a modificar es la parte del hipervínculo paraque, en lugar de enviarnos hacia eliminar2.php nos envie a un archivo que sellamará modificar2.php

print“<td><ahref=\”modificar2.php?id=$renglon[id_tabla]\”>$renglon[nombre]</a></td>“;

Con esto ya esta listo el primero de los 3 archivos que ocuparemos.

Page 191: Presentación Curso PHP DGEST V1.13

El segundo archivo se encargará de mostrarnos un formulario con los mismoscampos. Como ya tenemos un archivo así (formulario.html) pues haremos una copiade él y lo guardaremos como modificar2.php. Como es una copia, pues nos mostraráun formulario con campos vacíos:

Page 192: Presentación Curso PHP DGEST V1.13

Recordemos que este archivo esta recibiendo un parámetro que le envió el archivomodificar.php entonces lo primero que tenemos que hacer será recolectar eseparámetro y guardarlo en una variable:

<?$id = $_REQUEST[id];

?>

Esto lo podemos hacer en cualquier parte del documento, lo ideal será hacerlo antesde la definición del formulario.

Más adelante sabremos para qué nos servirá este dato

Page 193: Presentación Curso PHP DGEST V1.13

El segundo cambio que haremos: Originalmente, la propiedad action del formulariotiene un valor=“guardar_datos.php” pero lo que queremos que haga ahora es quenos envíe a un archivo que se llamará modificar3.php

Además, al igual que en el caso anterior, tenemos que mandarle al archivomodificar3 el parámetro que ya recolectamos en una variable

La línea de código es lenguaje HTML y la variable la tenemos en lenguaje PHP,entonces lo que debemos hacer es incrustar código PHP para que imprima elcontenido de dicha variable.

<form id="formulario" name="formulario" method="post" action=“modificar3.php?id=<? Print “$id”; ?>" onSubmit="return validar(this)">

Nota: si se envía algún parámetro de ese modo, entonces forzosamente la propiedadmethod debe tener el valor post. Con get no funcionará

Page 194: Presentación Curso PHP DGEST V1.13

Hasta ahorita, el formulario nos sigue mostrando los campos vacíos, entonces lo quevamos a hacer es consultar en la base de datos la información que pertenece alregistro cuyo id_tabla sea igual al valor contenido en la variable $id.

De igual manera, esta consulta se deberá hacer antes de la definición del formulario,para que cuando se empiecen a incrustar los campos se incrusten con los valorescorrespondientes.

La consulta a la base de datos quedará de la siguiente manera:

$resultado = mysql_query(“SELECT * FROM tabla_prueba WHERE id_tabla=‘$id’”);

Recordemos que esta consulta nos dará como resultado un apuntador hacia elregistro encontrado y que, para acceder a cada campo de ese registro, debemos deocupar la función mysql_fetch_array()

Page 195: Presentación Curso PHP DGEST V1.13

En este caso, sabemos que la consulta nos arrojara SOLO UN registro comoresultado, por lo que no será necesario usar un ciclo como lo hicimos en el caso delista.php

$resultado = mysq_query(“SELECT * FROM tabla_prueba WHERE id_tabla=‘$id’”);$renglon = mysql_fetch_array($resultado);

Ahora solo nos faltará imprimir en cada campo del formulario los valores contenidosen el arreglo $renglón

Veamos cómo será modificada cada línea de código de los campos del formulario:

Page 196: Presentación Curso PHP DGEST V1.13

CAMPO DEL NOMBRE

El código original de este campo es similar a este:

<input name="campo_nombre" type="text" id="campo_nombre" size="50"maxlength="50" />

Sabemos que el valor extraído de la base de datos está guardado en el elemento$renglon[nombre]

Entonces, el contenido de este elemento del arreglo lo vamos a incrustar en lapropiedad value del campo del formulario. Para ello incrustaremos la instrucciónprint “” de PHP dentro del HTML:

<input name="campo_nombre" type="text" id="campo_nombre" size="50"maxlength="50" value = “<? print “$renglon[nombre]”; ?>”/>

Page 197: Presentación Curso PHP DGEST V1.13

CAMPO DEL e mail

Lo mismo que hicimos con el campo del nombre lo haremos con éste campo, loúnico que cambiará será que el valor lo obtendremos del elemento $renglon[email]

<input name="campo_mail" type="text" id="campo_mail" size="30"maxlength="30“value = “<? print “$renglon[email]”; ?>” />

Page 198: Presentación Curso PHP DGEST V1.13

CAMPO DEL COMENTARIO

En el caso del campo comentario, recordemos que este campo no es un input, es untextarea.

Los textarea no tienen propiedad value. Cuando se vio este tipo de elemento en elapartado de formularios en el tema de HTML se mencionó que si queríamos queapareciera un texto dentro del textarea lo tendríamos que poner entre las etiquetasde inicio y fin del textarea:

<textarea name="campo_comentario" cols="50" rows="5"id="campo_comentario">AQUÍ DEBEMOS INSERTAR EL TEXTO</textarea>

De manera que el código quedará asi:

<textarea name="campo_comentario" cols="50" rows="5"id="campo_comentario"><? print “$renglon[comentario]”; ?></textarea>

Page 199: Presentación Curso PHP DGEST V1.13

RADIO BUTTONS DE OPCIÓN

A los radiobuttons no les cambiaremos su propiedad value, solamente haremos queesté activado el de SI o el de NO según sea el caso.

Recordemos que, para que un radiobutton este activado debe tener su propiedadchecked=“checked”.

Y a cuál de los dos radiobuttons le pondremos esa propiedad? Pues todo vadepender del valor que tenga el elemento $renglon[opciones]

El código de los dos radiobutton originalmente está así:

<input type="radio" name="opciones" value="1" checked=“checked"/><input type="radio" name="opciones" value="0" />

El primero es para el SI y el segundo es para el NO. Originalmente el botón de SIaparece activado por default. Pero en este caso no queremos que aparezca activadoninguno por default sino que aparezca activado aquel que haya activadooriginalmente el usuario cuando envió por primera vez los datos

Page 200: Presentación Curso PHP DGEST V1.13

Entonces le vamos a quitar la propiedad checked al botón del SI. De manera que elcódigo quedará así:

<input type="radio" name="opciones" value="1" /><input type="radio" name="opciones" value="0" />

Ahora, le añadiremos la propiedad checked a aquel que lo haya tenidooriginalmente. Para ello validaremos qué valor contiene el elemento$renglon[opciones]. Si tiene un 1, le añadiremos la propiedad al radiobutton del SI.Si tiene un 0 se la añadiremos al del NO

Esto lo haremos incrustando código PHP dentro de las dos etiquetas de losradiobuttons. Y dentro de cada código PHP validaremos mediante un IF para saber sise le añade o no la propiedad checked.

El código quedará de la siguiente manera:

Page 201: Presentación Curso PHP DGEST V1.13

<input type="radio" name="opciones" value="1“ <? If($renglon[opciones] == 1) print“checked=\”checked\””; ?> />

<input type="radio" name="opciones" value="0" <? If($renglon[opciones] == 0) print“checked=\”checked\””; ?> />

Page 202: Presentación Curso PHP DGEST V1.13

Con esto ya estamos añadiendo a los campos del formulario la información queoriginalmente guardó el usuario.

En este momento el usuario ya puede modificar el (los) campo(s) que necesitemodificar y hacer click en el botón Enviar o Aplicar Cambios.

Una vez que haga click en el botón, la información será enviada al archivomodificar3.php (recordemos que ya le modificamos esa propiedad action alformulario).

Veamos qué tendrá el archivo modificar3.php:

Page 203: Presentación Curso PHP DGEST V1.13

Los pasos que tenemos que hacer en el modificar3.php son:

Recolectar los parametros recibidos (el parámetro del id y los valores de loscampos).

Conectarse con el servidor.

Seleccionar la base de datos con la cual se va a trabajar.

Hacer la actualización del registro específico.

Page 204: Presentación Curso PHP DGEST V1.13

$id = $_REQUEST[id];$nombre = $_REQUEST['campo_nombre'];$mail = $_ REQUEST['campo_mail'];$comentario = $_ REQUEST['campo_comentario'];$opcion = $_ REQUEST['opciones'];

$con=mysql_connect("localhost","root","mysql");mysql_select_db("table_prueba",$con);

if ($resultado = mysql_query ("UPDATE tabla_prueba SET nombre='$nombre',email='$mail',comentario='$comentario',autorizacion='$opcion‘ WHERE id_tabla='$id'"))

//VINCULAR A PAGINA DE CONFIRMACIONelse

//VINCULAR A PAGINA DE ERROR

Page 205: Presentación Curso PHP DGEST V1.13

IDENTIFICACIÓN DE USUARIOSS E S I O N E S

Page 206: Presentación Curso PHP DGEST V1.13

Las sesiones en PHP son una forma de mantener ciertos datos de un visitante entrelos diversos accesos una web. De esta forma se pueden crear aplicaciones donde sele muestra al usuarios datos personalizados de acuerdo a las preferencias o accionesdel usuario.

Las sesiones se manejan internamente por un identificador llamado SID (Session ID)el cual esta asociado a una única sesión y que ayuda a identificar el contenido de lasesión actual. Esta variable se propaga automaticamente a traves de Cookies omediante URL.

Todas la variables de sesión son accesibles mediante arrays en la variable global$_SESSION. Adicionalmente ofrece una serie de funciones que permiten manejardetalladamente las sesiones de manera sencilla:

session_start inicializa una sesión y crea el identificador de sesión. session_id devuelve el identificador de la sesión actual. session_regenerate_id genera un nuevo identificador para la sesión actual. session_unset limpia todas la variables de sesión registradas. session_destroy elimina todas la variables de sesión registradas.

Page 207: Presentación Curso PHP DGEST V1.13

Vamos a crear un ejemplo de cómo se usaría una sesión para que , sólo un usuariopermitido pueda accesar a nuestro archivo formulario.html

Para hacer este ejemplo necesitaremos lo siguiente:

Una tabla en la base de datos donde se guardarán los usuarios y contraseñas Una página inicial mediante la cuál el usuario mostrará sus credenciales (archivo

loggin.php).

Comencemos creando una tabla en nuestra base de datos, las características seránlas siguientes:

Page 208: Presentación Curso PHP DGEST V1.13

Ahora hay que crear el archivo loggin.php

El código de éste formulario quedaría:

<form id="form1" name="form1" method="post" action="validar_loggin.php">Nombre:<input name=“usuario" type="text" id=“usuario" size="50" maxlength="50" />Contrase&ntilde;a: <input name="password" type="password" id="password" size="50" maxlength="50" /><input type="submit" name="Submit" value="Entrar" /></form>

Page 209: Presentación Curso PHP DGEST V1.13

Como se puede apreciar en la propiedad action del formulario, al dar clic en el botónsubmit, la información será enviada a un archivo que se llamará validar_loggin.php

En ese archivo, lo que haremos será lo siguiente:

1.- Recolectar los valores de los campos del formulario

$usuario = $_REQUEST["usuario"];$password = $_REQUEST["password"];

2.- Cómo el password en la base de datos estará guardado en md5, entoncestenemos que aplicar el mismo hash a la variable donde se guardó el password queanotó el usuario

$password = md5($password);

3.- Conectarnos al servidor y seleccionar la base de datos con la cual trabajaremos

$con=mysql_connect("localhost","root","mysql");mysql_select_db(“prueba",$con);

Page 210: Presentación Curso PHP DGEST V1.13

4.- Hacer una consulta buscando la existencia de un registro que corresponda conla información proporcionada por el usuario

$resultado = mysql_query ("SELECT * FROM usuarios WHERE usuario='$usuario'AND password='$password'");

5.- Iniciamos una sesión

session_start();

Page 211: Presentación Curso PHP DGEST V1.13

6.- Crearemos una variable de sesión cuyo identificador será el nombre del usuario.A esa variable de sesión le asignaremos una valor verdadero (siempre y cuando sehaya encontrado un registro que haya correspondido con los datos). Si por elcontrario no se encontró un registro coincidente entonces le asignaremos un valorfalso a la variable de sesión

if ($renglon=mysql_fetch_array ($resultado)){

$_SESSION["$usuario"]=TRUE;header("location: formulario.php?usuario=$renglon[usuario]");

}else{

$_SESSION["$usuario"]=FALSE;print "<script languaje=\"javascript\"> alert(\"Usuario y/o contraseña

invalidos, vuelva a intentarlo\"); window.location.href=\“loggin.php\";</script>";}

Page 212: Presentación Curso PHP DGEST V1.13

Con esto ya habremos creado la variable de sesión la cuál estará disponible de maneraglobal.

Recordemos que el nombre de dicha variable de sesión será el mismo nombre de usuario.

Cuando un usuario quiera acceder al formulario, lo primero que se tiene que hacer el validarque exista dicha variable de sesión y que tenga un valor verdadero. El siguiente código lopondremos al inicio del archivo formulario.html (pero ahora deberá ser .php)

<?$usuario = $_REQUEST['usuario'];$con=mysql_connect("127.0.0.1","root","mysql");mysql_select_db("trash",$con);$resultado = mysql_query ("SELECT * FROM usuarios WHERE usuario='$usuario'");$renglon=mysql_fetch_array ($resultado);session_start();if(!$_SESSION["$renglon[usuario]"]){

header("Location:loggin.php");}?>

Page 213: Presentación Curso PHP DGEST V1.13

COOKIES

Las Cookies son bloques de información almacenadas en el cliente, que transfiere elservidor en la cabecera de los mensajes.

Para que se puedan enviar, el cliente debe tenerlas habilitadas. Las cookies sólo pueden ser textos, y como máximo tienen un tamaño de 1K. Las cookies sólo son válidas desde el servidor que las envió.

Las Cookies se utilizan para agilizar algunos procesos de identificación del usuario, a vecestambién se utilizan de modo comercial, por ejemplo si un usuario entra a menudo en unatienda on-line y suele visitar el catálogo de electrodomésticos, cuando entre un día en otrasección como alimentación, como ven que el cliente ha visitado habitualmente las seccionesde electrodomésticos, puede aparecer “casualmente” en la página alguna oferta deelctrodomésticos o algún enlace...

NOTA: Al igual que la función header, las cookies deben ser enviadas antes de haber escritocualquier cosa en la página que visualizará el cliente.

Page 214: Presentación Curso PHP DGEST V1.13

Las Cookies tienen una serie de campos, como mínimo se envía el nombre y el valor de lacookie. Otros campos de las cookies son:

fecha: Las cookies pueden tener una fecha de expiración. Hay que destacar que esta fechaes un número entero, por lo que habrá que calcularla con las funciones mktime() y time()de PHP.

path: Especifica el subconjunto de URLs en el servidor de origen para las cuales se aplicala cookie.

dominio: Establece el dominio en el cual es válida la cookie. segura: Indica si la cookie necesita una conexión segura, toma valores enteros, si no

queremos especificar nada, poner a cero.

Page 215: Presentación Curso PHP DGEST V1.13

Para crear una cookie utilizaremos:

setcookie(“nombre", "$valor“[, tiempo_de_deuración]);

Page 216: Presentación Curso PHP DGEST V1.13

Ejemplo práctico:

Supongamos que tenemos un documento en el que, mediante un campo select el usuariopuede elegir un color de fondo para la página.

• Nombre del archivo: cookies.php• Nombre del formulario: form1• Propiedad action del formulario: cookies.php• Nombre del campo select: color_elegido

Page 217: Presentación Curso PHP DGEST V1.13

Aclaremos lo siguiente: como la propiedad action del formulario tiene un valor de“cookies.php” esto quiere decir que al dar clic al botón submit del formulario nos enviaráde nuevo al ese mismo archivo.

De manera que en ese archivo tenemos que recolectar el valor de la opción seleccionadaen el campo select y, en base a la elección, crear una cookie a la cual le llamaremos“color” cuyo valor será la opción seleccionada. Este código lo pondremos al inicio deldocumento

<?$col = $_REQUEST['color_elegido'];if($col != "" && $col != NULL)

if (!isset($_COOKIE["color"]))setcookie("color", "$col", time()+20);

?>

Estamos definiendo una cookie cuyo tiempo de vida será de 20 segundos

Page 218: Presentación Curso PHP DGEST V1.13

Ahora, como lo que vamos a modificar será el color de fondo del documento, esto sehace mediante estilos en el encabezado del documento.

Dependiendo del valor que tenga la cookie creada será el estilo que se elija para eldocumento. Esto lo haremos mediante una estructura de control switch

<?if (isset($_COOKIE["color"]))

{switch($_COOKIE["color"]){

case 0://DEFINIR ESTILO PARA BLANCObreak;

case 1://DEFINIR ESTILO PARA ROJObreak;

case 2://DEFINIR ESTILO PARA AMARILLObreak;

case 3://DEFINIR ESTILO PARA AZULbreak;

}}?>

Page 219: Presentación Curso PHP DGEST V1.13

El código que irá en cada case del switch será el siguiente:

print "<style type=\"text/css\"><!--body {background-color: #FFFFFF;}--></style>";

Lo único que cambiará para cada caso es el valor de la propiedad background-color

Listo, cuando se seleccione un color y se de clic al boton submit, se cambiará el color deondo y se creará la cookie (que dura 20 segundos). En ése lapso de tiempo, si se vuelve aejecutar el archive, automáticamente pondrá el color que se había elegido.

Para eliminar manualmente una cookie:

unset($_COOKIE['nombre_de_la_cookie']);

Page 220: Presentación Curso PHP DGEST V1.13

ENCRIPTACION DE DATOS

Algunas funciones que sirven para encriptar datos son:

md5($cadena);

sha1($cadena);

crc32($cadena);

crypt($cadena,cadena_inicial);