Está en la página 1de 48

ESCUELA DE INFORMÁTICA Y

TELECOMUNICACIONES

Asignatura: DESARROLLO DE APLICACIONES PARA INTERNET


(Semana 7)
Aprendizajes Esperados:
•Describe las características de MYSQL de acuerdo a los fundamentos de la
programación orientada a objetos.
•Aplica PHP y Mysql en problemas de programación de base de datos de acuerdo a
los requerimientos de un problema planteado.
•Describe el uso de “Sessiones y cookies” en aplicaciones web de acuerdo a los
requerimientos de un problema planteado.
•Desarrolla aplicaciones web con acceso a bases de datos MYSQL, manejando
Cookies y Sessiones en PHP, con tablas simples y maestro detalle de acuerdo a los
requerimientos de un problema planteado.

Santa Cruz – Bolivia


ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
INTRODUCCION A MYSQL
MySQL. es un sistema digestión de bases de datos
relacional, con licencia GPL (General Public License).
Su diseño multihilo le permite soportar una gran carga
de forma muy eficiente. MySQL fue creada por la
empresa sueca MySQL AB, que mantiene el copyright
del código fuente del servidor SQL, así como también
de la marca.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Aunque MySQL es software libre, MySQL AB
distribuye una versión comercial de MySQL, que no
se diferencia de la versión libre más que en el
soporte técnico que se ofrece, y la posibilidad
integrar este gestor en un software propietario, ya
que de no ser así, se vulneraría la licencia GPL.

MySQL es uno de los más usado en el mundo del


software libre, debido a su gran rapidez y facilidad
de uso. Esta gran aceptación es debida, en parte, a
que existen infinidad de librerías y otras

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


• ¿Como Funciona MySQL?
MySQL es un sistema Cliente/Servidor que
consta de un servidor SQL multi-hilo que
soporta diferentes backends, variados
programas cliente y de librerías,
administrador de herramientas y un
programa de interface.
MySQL es una contribución para muchos de los
software disponibles.
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
Su principal debilidad es que no soporta
subconsultas

una subconsulta es una instrucción SELECT


anidada dentro de otra instrucción SELECT:
SELECT INTO, INSERT INTO, DELETE, o
UPDATE o dentro de otra subconsulta.Los
formatos para las instrucciones
de subconsultas son las siguientes:
WHERE expression [NOT] IN (subconsulta)
WHERE expression operador_comparacion [ANY | ALL] (subconsulta)
WHERE [NOT] EXISTS (subconsulta )

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PERO SE ESTA TRABAJANDO EN ELLO
CARACTERISTICAS IMPORTANTES -
MYSQL
Escrito en C y C++, testado con GCC 2.7.2.1. Usa GNU
autoconf para portabilidad.
Clientes C, C++, Eiffel,PHP,Python,JAVA, Perl, TCL.
Multiproceso, es decir puede usar varias CPU si éstas
están disponibles.
Puede trabajar en distintas plataformas y S.O.
distintos.
Sistema de contraseñas y privilegios muy flexible y
segura.
Todas la palabras de paso viajan encriptadas en la red.
Registros de longitud fija y variable.
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
16 índices por tabla, cada índice puede estar compuesto de 1 a 15
columnas o partes de ellas con una longitud máxima de 127 bytes.
Todas las columnas pueden tener valores por defecto.
Utilidad Isamchk para chequear, optimizar y reparar tablas.
Todos los datos están grabados en formato ISO8859_1.
Los clientes usan TCP o UNIX Socket para conectarse al servidor.
Todos los comandos tienen -help o -? Para las ayudas.
Soporta diversos tipos de columnas como enteros de 1, 2, 3, 4, y 8
bytes, coma flotante, doble precisión, carácter, fechas, enumerados,
etc.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


La mejor y más usada base de datos en el mundo.
Disponible y Accesible para todos
Fácil de usar,
Se está perfeccionando continuamente mientras
permanece rápida y segura.
Divertida para usar y perfeccionar. Libre de
molestias
Es gratuita(Se encuentra en la red)

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


MySQL CON OTRAS MARCAS.
Fecha de la
primera Última
versión versión
Creador
Informix pública estable Licencia de software
Informix Software 1985 10 Propietario
HSQLDB Hsqldb.Org
Berkeley 2001 1.8.0 Licencia BSD
Ingres University, 1980 2006 CA-TOSL
InterBase
Microsoft Borland 1985 7.5.1
9.00.2047 Propietario
SQL Server Microsoft 1989 de
Noviembre (2005 SP1) Propietario
MySQL MySQL
OracleAB 1996 5
10g Release GPL o propietario
Oracle Corporation
PostgreSQL 1977de
Junio 2 Propietario
PostgreSQL Global
Informix 1989 8.2.3 Licencia BSD
Informix Software 1985 10 Propietario
HSQLDB Hsqldb.Org
Berkeley 2001 1.8.0 Licencia BSD
Ingres University, 1980 2006 CA-TOSL
InterBase
Microsoft Borland 1985 7.5.1
9.00.2047 Propietario
SQL Server Microsoft 1989 de
Noviembre (2005 SP1) Propietario
MySQL MySQL
OracleAB 1996 5
10g Release GPL o propietario
Oracle Corporation
PostgreSQL 1977de
Junio 2 Propietario
ESCUELA DE INFORMÁTICA
PostgreSQL Y TELECOMUNICACIONES
Global 1989 8.2.3 Licencia BSD
SOPORTE DEL SISTEMA OPERATIVO
Windows Mac OS X Linux BSD Unix z/OS
Adaptive
Server
Enterprise Sí Sí Sí Sí Sí No
ANTs Data
Server Sí Sí Sí Sí Sí ?
DB2 Sí No Sí No Sí Sí
Firebird Sí Sí Sí Sí Sí Quizá
HSQLDB Sí Sí Sí Sí Sí Sí
Informix Sí Sí Sí Sí Sí No
Ingres Sí ? Sí ? Sí Quizá
InterBase Sí No Sí No Sí (Solaris) No
SapDB Sí No Sí No Sí ?
MaxDB Sí No Sí No Sí ?
Microsoft
SQL Server Sí No No No No No
MySQL Sí Sí Sí Sí Sí Quizá
Oracle Sí Sí Sí No Sí Sí
PostgreSQL Sí Sí Sí Sí Sí No
SmallSQL
ESCUELA Sí Y TELECOMUNICACIONES
DE INFORMÁTICA Sí Sí Sí Sí Sí
SQLite Sí Sí Sí Sí Sí Quizá
COSTOS ACTUALIZADOS.

Es Gratuito.(free software)


La licencia tiene un valor unitario de $200 (USD), y
puede comprar muchas licencias antes de usarlas
para sacar partido de importantes descuentos
Puede distribuir una aplicación no GPL que use
MySQL sin pagar la licencia si el uso de MySQL no es
requerido (es decir, si la aplicación puede hacer las
mismas cosas usando alternativamente otro sistema,
servidor o controlador de bases de datos o lo que sea)

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


USOS DE MySQL.
• Cualquier persona que monte una pagina web.
Puede utilizarla con su propio servidor de base de
datos.
•Empresas de Agencias de Viajes
•Solo es importante saber manejar base de datos, y
programación.
•Se puede contribuir a MySQL, si cuentas con los
conocimientos adecuados.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


TUTORIAL DE MySQL

IR A TUTORIAL
1 (WORD)

IR A TUTORIAL IR A TUTORIAL
2 (INTERNET) 3 (INTERNET)

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


CONCLUSIONES
SQL, Structure Query Language (Lenguaje de Consulta Estructurado) es un
lenguaje de programacion para trabajar con base de datos relacionales
como MySQL, Oracle, etc.
MySQL es un interpretador de SQL, es un servidor de base de datos.
Permite crear base de datos y tablas, insertar datos, modificarlos,
eliminarlos, ordenarlos, hacer consultas y realizar muchas operaciones,
etc., resumiendo: administrar bases de datos. Es una base de datos
muy rápida, segura y fácil de usar. Gracias a la colaboración de muchos
usuarios, la base de datos se ha ido mejorando optimizándose en
velocidad. Por eso es una de las bases de datos más usadas en Internet.
Su principal debilidad es que no soporta subconsultas
El softwere es gratuito y lo podemos descargar de la red, aunque
tambien se pueden comprar licencias y tienen un costo aproximado de
200 dls y se pueden comprar licencias en epocas de ofertas sin
necesidad de utilizarlas al momento.
La licencia GNU GPL de MySQL obliga a distribuir cualquier producto
derivado (aplicación) bajo esa misma licencia. Si un desarrollador desea
incorporar MySQL en su producto pero no desea distribuirlo bajo
licencia
ESCUELA GNU GPL,
DE INFORMÁTICA puede adquirir la licencia comercial de MySQL
Y TELECOMUNICACIONES
BIBLIOGRAFIA

• http://es.tldp.org/Manuales-LuCAS/manual_PHP/manual_PHP/index.htm
• http://es.wikipedia.org/wiki/MySQL
• http://www.programacionweb.net/cursos/curso.php?num=9
• http://losinvisibles.net/como/comoMySQL.html
• http://www.mysqlya.com.ar/
• http://dev.mysql.com/doc/refman/5.0/es/index.html

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Un hilo de ejecución, en sistemas
operativos, es similar a un proceso en que
ambos representan una secuencia simple
de instrucciones ejecutada en paralelo con
otras secuencias. Un ejemplo de la utilización
de hilos es tener un hilo atento a la interfaz
gráfica (iconos, botones, ventanas), mientras otro
hilo hace una larga operación internamente.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


ESCUELA DE INFORMÁTICA Y
TELECOMUNICACIONES

Cookies/Sesiones

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


HTTP sin estado
• Las conexiones por medio del protocolo HTTP no
mantienen un estado.
• Por ello no se pueden mantener variables en la
conexión. Sin embargo se han inventado
mecanismos para tener una especie de estado,
las “cookies”, que permiten guardar un estado del
lado del cliente y las sesiones, que permiten
guardar un estado del lado del servidor.
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
Cookies

• El servidor cuando regresa un objeto HTTP al


cliente puede enviar también un paquete de
información de estado que el cliente va a
almacenar de manera persistente.
• Incluido con ese estado se encuentra un rango
de URLs para los cuales ese estado es válido.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Cookies

• Cualquier solicitud HTTP futura hecha por el


cliente que caiga dentro de tal rango va a
incluir una transmisión del valor actual del
objeto desde el cliente al servidor.
• Tales objetos se llaman “cookies” sin ninguna
razón contundente.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Cookies en PHP

• La función setcookie define una cookie para


ser enviada con la información de encabezado.
Debe ser enviada antes de cualquier otra
información de encabezado.
• Sintaxis:
– int setcookie ( string name, string value, int expire,
string path, string domain, int secure)

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Cookies en PHP
• Ejemplo:
– setcookie("CookieDePrueba",$valor,time()+3600); /* expira en 1 hora */
• También se pueden utilizar arreglos.
– Ejemplo:
• setcookie( "cookie[tres]", "cookietres" );
setcookie( "cookie[dos]", "cookiedos" );
setcookie( "cookie[uno]", "cookieuno" );
if ( isset( $cookie ) ) {
while( list( $name, $value ) = each( $cookie ) ) {
echo "$name == $value<br>\n";
}
}

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Sesiones en PHP
• PHP tiene apoyo para conservar estado en con
sesiones. Las sesiones mantienen variables en el
lado del servidor.
• A cada visitante que accede a la página se le
asigna un identificador único, llamado "session
id" (identificador de sesión). Éste se almacena en
una cookie por parte del usuario o se propaga en
la URL (método GET).
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
Sesiones en PHP
• El soporte de sesiones permite registrar un número
arbitrario de variables que se conservarán en las siguientes
solicitudes. Cuando un visitante acceda a su web, PHP
comprobará automáticamente (si session.auto_start está
puesto a 1) o cuando usted lo especifique (de forma
explícita mendiante session_start() o implícita a través de
session_register()) si se le ha enviado un "session id"
específico con su petición, en cuyo caso se recrean las
variables que se habían guardado anteriormente.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Sesiones en PHP
• Las opciones de configuración track_vars y
register_globals influyen en la forma en que las variables
de la sesión se almacenan y se restauran.
• Si track_vars está activado y register_globals está
desactivado, sólo los miembros del vector asociativo
global $HTTP_SESSION_VARS pueden ser registrados
como variables de sesión. Las variables restauradas de
sesión sólo estarán disponibles en el vector
$HTTP_SESSION_VARS.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Sesiones con PHP
• Ejemplo:
– <?php
session_start();
if (isset($HTTP_SESSION_VARS['contador'])) {
$HTTP_SESSION_VARS['contador']++;
}
else {
$HTTP_SESSION_VARS['contador'] = 0;
}
?>
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
Sesiones en PHP
• Se recomienda usar $_SESSION (o
$HTTP_SESSION_VARS con PHP 4.0.6 o inferior)
por seguridad y para hacer el código más legible.
Con $_SESSION o $HTTP_SESSION_VARS, no es
necesario usar las funciones session_register() /
session_unregister() / session_is_registered().
Los usuarios pueden acceder a una variable de
la sesión como si fuera una variable normal.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


Sesiones en PHP
• Ejemplo:
– <?php session_start();
if (isset($_SESSION['count'])) {
$_SESSION['count']++;
}
else {
$_SESSION['count'] = 0;
}
?>
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
Sesiones en PHP

• Ejemplo de borrar una variable con


$_SESSION:
– <?php
session_start();
unset($_SESSION['count']);
?>

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


ESCUELA DE INFORMÁTICA Y
TELECOMUNICACIONES

Acceso a Bases de Datos MYSQL


CON PHP

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Bases de datos
 PHP permite el acceso a las siguientes bases
de datos:

– dbase – mSQL
– dbm – Mysql
– db++ – Oracle
– FrontBase
– Ovrimos SQL Server
– filePro
– Informix – PostgreSQL
– InterBase – SESAM
– Ingres II – Sybase
– SQL Server
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: Bases de datos

• PHP también tiene interfaces abstractas:


– DBA (DataBase Abstraction)
– DBX
– ODBC
• Recientemente también:
– PHP Data Objects Interface

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Bases de datos

• Además podemos encontrar bibliotecas que


tienen una interfaz de abstracción OO de
bases de datos:
– PHPlib (http://www.sanisoft.com/phplib/manual/)
– ADODB (http://php.weblogs.com/ADODB)
– PEAR (http://pear.php.net)

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: MySQL

• MySQL es un sistema de bases de datos


desarrollado por la empresa MySQL AB. Tal
empresa desarrolla las nuevas versiones y
provee servicios como apoyo técnico. El
sistema de bases de datos se da bajo licencia
GPL que es una licencia de software libre o se
vende bajo una licencia comercial.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Funciones MySQL
• Conexión al servidor:
– int mysql_connect ( [string server [, string usuario [,
string password]]])
• Ejemplo:
<?php
$link = mysql_connect ("titanic", "root", “ci2413")
or die ("Could not connect");
print ("Connected successfully");
mysql_close ($link);
?>

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Funciones MySQL

• Desconexión del servidor:


– int mysql_close ( [int identificador_de_enlace])
• Ejemplo:
Ver el ejemplo anterior…

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Funciones MySQL

• Selección de una base de datos:


– int mysql_select_db ( string base_de_datos [, int
identificador_de_enlace])
• Ejemplo:

$bd = mysql_select_db("contaduria");

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Funciones MySQL

• Envío de una consulta:


– int mysql_query ( string sentencia [, int
identificador_de_enlace])
• Ejemplo:
<?php
$result = mysql_query ("SELECT * WHERE 1=1")
or die (“¡Consulta inválida!");
?>

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Funciones MySQL
• Desplegando los resultados:
– object mysql_fetch_object ( int id_resultado [, int
tipo_de_resultado])
• Ejemplo:
<?php
mysql_connect($servidor,$usuario,$clave);
mysql_select_db("base");
$resultado = mysql_query("select * from tabla");
while($fila = mysql_fetch_object($resultado)) {
echo $fila->id_usuario;
echo $fila->nombre;
}
mysql_free_result($resultado);
?>

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: MySQLi
• Funciona con PHP 4.1.3 y superior. Para tener la
funcionalidad se debe compilar PHP con apoyo para
la extensión mysqli.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: MySQLi (Clases)
• mysqli • dump_debug_info
• get_client_info
– Constructor
• get_host_info
• mysqli
• get_server_info
– Métodos
• init
• autocommit • info
• change_user • kill
• character_set_name • multi_query
• close • more_results
• commit • next_results
• connect • options
• debug • ping
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: MySQLi (Clases)
• prepare – Propiedades
• query • affected_rows
• client_info
• real_connect
• client_version
• escape_string
• errno
• rollback • error
• select_db • field_count
• ssl_set • host_info
• stat • info
• insert_id
• stmt_init
• protocol_version
• store_results • sql_state
• use_results • thread_id
• thread_safe • warning_count
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: MySQLi (Clases)
• mysqli_stmt • reset
– Métodos • store_results
• bind_param – Propiedades
• bind_result • affected_rows
• close • errno
• data_seek • param_count
• execute • sqlstate
• fetch
• free_result
• result_metadata
• prepare
• send_long_data
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: MySQLi (Clases)
• mysqli_result – Propiedades
– Métodos • current_field
• close • field_count
• data_seek • lengths
• fetch_fields • num_rows
• fetch_field_direct
• fetch_array
• fetch_assoc
• fetch_object
• fetch_row
• close
• field_seek
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: PostgreSQL
• La base de datos PostgreSQL es un producto de Código
Abierto. Postgres, desarrollada originalmente en el
Departamento de Ciencias de la Computación de la
Universidad de Berkeley, fue pionera de muchos de los
conceptos objeto-relacionales ahora disponibles en algunas
bases de datos comerciales. Provee apoyo a SQL92/SQL99,
transacciones, integridad referencial, procedimientos
almacenados y extendibilidad de tipo. PostgreSQL es un
descendiente de código abierto del código original de
Berkeley.
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: ¡Problemas!

• Escalabilidad
• Mantenimiento
• Portabilidad

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES


PHP: Solución
• La solución para resolver los problemas anteriores, es
separar nuestro diseño en capas:
– Abstracción de Base de Datos
– Lógica PHP
– Despliegue (en formato HTML)
• Varias herramientas permiten hacer esta separación,
por ejemplo: ADODB y Smarty (Plantillas, las veremos
después). Además la utilización de clases nos hará la
vida fácil.
ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES
PHP: Solución

• Leer el artículo Building Database Interfaces


en http://www.zend.com/zend/tut/tutorial-
wong4.php.
• Leer el tutorial en español de ADODB en
http://www.codigophp.com/arts/adodb.html.

ESCUELA DE INFORMÁTICA Y TELECOMUNICACIONES