Bases de Datos (Segundo Curso)
Enxeñeria Técnica en Informática de Sistemas Escola Técnica Superior de Enxeñería Universidade de Santiago de Compostela
BASES DE DATOS Y PHP
Curso 2004-2005
José Ramón Ríos Viqueira
PRÁCTICAS - PARTE B
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 2
Índice
INTRODUCCIÓN
Horario de clases y tutorías
Calendario de prácticas
Objetivo
ACCESO A BASES DE DATOS
Acceso BD desde aplicaciones de escritorio
Acceso BD desde aplicaciones web
PROGRAMACIÓN WEB
HTML
PHP
Acceso a BD desde PHP
INTRODUCCIÓN
Contacto
José Ramón Ríos Viqueira
Correo: [email protected]
Tutorías
•
Despacho: 8A (Departamento de Electrónica y Computación)
•
Horario: Lunes y Miércoles de 11:00 a 12:00
Horario de clases
21/02/2005 - 14/04/2005 (~7 Semanas)
•
Grupo A (Jueves 9-11)
•
Grupo B (Lunes 9-11)
INTRODUCCIÓN
Calendario de Prácticas
Jueves 31 Marzo
Trabajo Práctica 2
Miércoles 30 Marzo
Trabajo Práctica 2
Lunes 28 Marzo
NO LECTIVO
Jueves 7 Abril
Trabajo Práctica 2
Miércoles 6 Abril
Trabajo Práctica 2
Lunes 4 Abril
Trabajo Práctica 2
Jueves 17 Marzo
Entrega Práctica 1
Miércoles 16 Marzo
Entrega Práctica 1
Lunes 14 Marzo
Entrega Práctica 1
Jueves 10 Marzo
Trabajo Práctica 1
Miércoles 9 Marzo
Trabajo Práctica 1
Lunes 7 Marzo
Trabajo Práctica 1
Jueves 3 Marzo
Trabajo Práctica 1
Miércoles 2 Marzo
Trabajo Práctica 1
Lunes 28 Feb.
Trabajo Práctica 1
Jueves 24 Feb.
Explicación Práctica
Miércoles 23 Feb.
Explicación Práctica
Martes 22 Feb.
Explicación Teórica
semana 1
semana 2
semana 3
semana 4
semana 5
semana 6
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 5
INTRODUCCIÓN
Objetivo
Programación del acceso a bases de datos desde una
aplicación web
PRODUCTO
ref nombre
tipo precio
1142 1135 1199 1187
. . .
K7 ABIT KW7 K7 ABIT NF7-S2 K7 AOPEN KM400 AM-S K7 ASROCK K7S41. . .
Placa Placa Placa Placa. . .
71,37 76,42 63,10 38,85. . .
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 6
Índice
INTRODUCCIÓN
Horario de clases y tutorías
Calendario de prácticas
Objetivo
ACCESO A BASES DE DATOS
Acceso BD desde aplicaciones de escritorio
Acceso BD desde aplicaciones web
PROGRAMACIÓN WEB
HTML
PHP
Acceso a BD desde PHP
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones de escritorio
APLICACION
SGBD
DATOS
Librerías de acceso
procedimiento miProcedimiento (
. . .
)
{
. . .
conexion =
bd_conecta
(UnServidor, UnaBD, UnUsuario, unPass);
resultado =
bd_consulta
(conexion, “SELECT * FROM UnaTabla”);
Para cada tupla en resultado
{
valor = tupla[atributo];
print(valor);
}
bd_desconecta
(conexion);
. . .
}
Cliente
Servidor
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones de escritorio
APLICACION
Librería
MySQL
PostgreSQL
Librería
Librería
Oracle
Informix
Librería
SQL Server
Librería
Librería
ODBC
MySQL PostgreSQL
Oracle
ODBC
Informix
SQL Server
OTROS
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 9
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones de escritorio
JAVA
APLICACION
Driver
MySQL
PostgreSQL
Driver
Oracle
Driver
Informix
Driver
SQL Server
Driver
Driver
ODBC
MySQL PostgreSQL
Oracle
ODBC
Informix
SQL Server
OTROS
JDBC
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 10
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones de escritorio
Microsoft (Visual Basic, Visual C++)
APLICACION
Driver
Access
SQL Server
Driver
Oracle
Driver
Informix
Driver
PostgreSQL
Driver
ODBC
Driver
Access
Oracle
PostgreSQL
ODBC
Informix
SQL Server
OTROS
OLEDB
ADO
Índice
INTRODUCCIÓN
Horario de clases y tutorías
Calendario de prácticas
Objetivo
ACCESO A BASES DE DATOS
Acceso BD desde aplicaciones de escritorio
Acceso BD desde aplicaciones web
PROGRAMACIÓN WEB
HTML
PHP
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones web
Páginas Web Estáticas (HTML)
SERVIDOR
WEB
Pagina1
HTML
Pagina2
HTML
Pagina3
HTML
NAVEGADOR
Petición HTTP:
http://maquina2/Pagina1.html
Página1
HTML
Navegadores
Netscape, Firefox, Internet explorer
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 13
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones web
Páginas Web Dinámicas (DHTML)
Lenguajes Script de cliente: JavaScript, VBScript
Se ejecutan en el navegador:
•
Responder a eventos de usuario
•
Modificar el HTML dinámicamente en el cliente
SERVIDOR
WEB
Página1
HTML
+
Script
Página2
HTML
+
Script
Página3
HTML
+
Script
NAVEGADOR
Petición HTTP:
http://maquina2/Pagina1.html
Página1
DHTML
MAQUINA1
MAQUINA2
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 14
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones web
Generación dinámica de páginas
Lenguajes Script de servidor: php, jsp, asp
Se ejecutan en el servidor: Generan HTML y DHTML
SERVIDOR
WEB
Página1
DHTML
+
PHP
Página2
DHTML
+
PHP
Página3
DHTML
+
PHP
MAQUINA 2
NAVEGADOR
MAQUINA 1
Petición HTTP
Página1
DHTML
MAQUINA 3
SERVIDOR
APLICACIONES
DHTML
+
PHP
DHTML
Las peticiones pueden incluir parámetros
Peticiones GET: Parámetros en la propia dirección
•
Http://maquina2/pagina1.php?nombre1=valor1&nombre2=valor2
Peticiones POST: Parámetros ocultos en la cabecera de la petición
•
Peticiones hechas desde botones de formularios
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones web
Acceso a bases de datos
SERVIDOR
WEB
Página1
DHTML
+
PHP
Página2
DHTML
+
PHP
Página3
DHTML
+
PHP
MAQUINA 2
NAVEGADOR
MAQUINA 1
Petición HTTP
Página1
DHTML
MAQUINA 3
SERVIDOR
APLICACIONES
DHTML
SGBD
DATOS
Librería de acceso
MAQUINA 4
DHTML
+
PHP
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
ACCESO A BASES DE DATOS
Acceso a BD desde aplicaciones web
Configuración para las prácticas (2 máquinas)
APACHE
Página1
HTML
+
PHP
Página2
HTML
+
PHP
Página3
HTML
+
PHP
ZETSEBD
NAVEGADOR
PC GSTIC
Petición HTTP
Página1
HTML
SERVIDOR
PHP
HTML
MySQL
DATOS
Librería
MySQL
PostgreSQL
Librería
PostgreSQL
DATOS
DHTML
+
PHP
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 17
Índice
INTRODUCCIÓN
Horario de clases y tutorías
Calendario de prácticas
Objetivo
ACCESO A BASES DE DATOS
Acceso BD desde aplicaciones de escritorio
Acceso BD desde aplicaciones web
PROGRAMACIÓN WEB
HTML
PHP
Acceso a BD desde PHP
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 18
PROGRAMACIÓN WEB
HTML
HyperText Markup Language (HTML)
Standard del W3C (
http://www.w3.org/MarkUp/
)
Referencia HTML 4.0 (
http://www.htmlhelp.com/distribution/
)
Estructura y conceptos básicos
<HTML>
<HEAD>
<TITLE>
Mi primera página
</TITLE>
</HEAD>
<BODY>
<p align = center>
Este es el texto de un párrafo
</p>
El espacio entre palabras se ignora
Incluso los saltos de l
í
nea
Para saltar de l
í
nea
<br>
se inserta un
<
br
>
<br><br>
Para insertar espacio se usa el
&
nbsp;
<!-- Esto es un comentario -->
</BODY>
</HTML>
TAGS
HTML
HEAD
BODY
Atributos
Carateres
especiales
Comentarios
PROGRAMACIÓN WEB
HTML
PROGRAMACIÓN WEB
HTML
Listas, Imágenes y Enlaces
<!-- LISTAS -->
<UL>
<LI>
Primer elemento
</LI>
<LI>
Segundo elemento
</LI>
<LI>
Tercer elemento
</LI>
</UL>
<OL>
<LI>
Primer elemento
</LI>
<LI>
Segundo elemento
</LI>
<LI>
Tercer elemento
</LI>
</OL>
<!--Imágenes-->
<IMG SRC='date.jpg'
ALT='An Introduction to Database Systems'>
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 21
PROGRAMACIÓN WEB
HTML
Tablas
<TABLE border = 2>
<TR>
<TD border = 2>
Primera columna de la primera fila
</TD>
<TD border = 2>
Segunda columna de la primera fila
</TD>
<TD border = 2>
Tercera columna de la primera fila
</TD>
</TR>
<TR>
<TD colspan = 2 border = 2>
Una columna que se expande por dos
</TD>
<TD border = 2>
Segunda columna de la segunda fila
</TD>
</TR>
</TABLE>
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 22
PROGRAMACIÓN WEB
HTML
Formularios
<FORM ACTION='pagina.php' METHOD='POST'>
Texto:
<INPUT TYPE = text NAME = 'nombre1' size = 15 Value='Valor1'><br> <b>Opciones</b><br>
Opción 1:
<INPUT TYPE = radio NAME = 'nombre2' value='opcion1' CHECKED><br>
Opción 2:
<INPUT TYPE = radio NAME = 'nombre2' value='opcion2'><br>
Marcador:
<INPUT TYPE = checkbox NAME = 'nombre3' Value = 'SI' CHECKED><br>
Selector:
<SELECT NAME = 'nombre4'>
<OPTION value = 'opcion1'> opcion 1</OPTION> <OPTION SELECTED value = 'opcion1'>opcion 2</OPTION> <OPTION value = 'opcion1'> opcion 3</OPTION> </SELECT><br>
<INPUT TYPE = hidden NAME = 'nombre5' Value='Valor2'> <INPUT TYPE = submit Value='Enviar'>
</FORM>
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
PROGRAMACIÓN WEB
HTML
Hojas de estilos CSS
Referencia:
http://www.htmlhelp.com/distribution/
<HTML> <HEAD><TITLE>Mi primera página</TITLE>
<LINK rel="stylesheet" type="text/css" href="estilos.css"> </HEAD>
<BODY>
<TABLE class='relacion' cellspacing = 0> <TR> <TD class='tituloTabla'>ATTR1 </TD> <TD class='tituloTabla'> ATTR2 </TD> <TD class='tituloTabla'> ATTR3 </TD> <TD class='tituloTabla'> ATTR4 </TD> <TR> <TR> <TD class='tuplac'> V11 </TD> <TD class='tuplai'> Este es el valor12 </TD> <TD class='tuplac'> Valor13 </TD> <TD class='tuplai'> Este es el valor14 </TD> <TR> <TR> <TD class='tuplac'> V21 </TD> <TD class='tuplai'> Valor 22</TD> <TD class='tuplac'> Valor23</TD> <TD class='tuplai'> Valor24 </TD> <TR> </TABLE> </BODY> </HTML> .relacion
{border: thin solid black;}
.tituloTabla
{background-color:blue;
border:thin solid black;
padding:3pt;
color: white;
font-family: Times New Roman;
font-size: 16pt;
font-weight:bold;
text-align: center}
.tuplac
{background-color:white;
border:thin solid black;
padding:3;
color: black;
font-family: Times New Roman;
font-size:12pt;
text-align: center}
.tuplai
{background-color: white;
border: thin solid black;
padding: 3pt;
color: black;
font-family: Times New Roman;
font-size: 12pt;
text-align: left}
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
PROGRAMACIÓN WEB
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 25
Índice
INTRODUCCIÓN
Horario de clases y tutorías
Calendario de prácticas
Objetivo
ACCESO A BASES DE DATOS
Acceso BD desde aplicaciones de escritorio
Acceso BD desde aplicaciones web
PROGRAMACIÓN WEB
HTML
PHP
Acceso a BD desde PHP
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 26
PROGRAMACIÓN WEB
PHP
PHP HyperText Preprocessor (PHP)
WEB:
http://www.php.net/
Referencia: http://www.php.net/download-docs.php
Sintaxis básica
Similar al lenguaje C
Código PHP insertado entre <? … ?>
Líneas
de código finalizadas con punto y coma “;”
Comentarios: // toda la línea, /*texto comentado*/
Variables
precedidas de símbolo $. Mayúsculas importan.
Constantes: define(“NombreConstante”, valor)
Generación de código: echo “código DHTML”;
PROGRAMACIÓN WEB
PHP
Sintaxis básica: Ejemplo
<HTML>
<HEAD>
<TITLE>
<?
echo
"Mi primera página"
;
?>
</TITLE>
</HEAD>
<BODY>
<?
//Esto es un comentario
/*esto tambien es un comentario*/
$a
=
"Hola"
;
$b
=
" Mundo!"
;
echo
"<p align = 'center'>"
.
$a
.
$b
.
"</p>"
;
define
(
"CONSTANTE"
,
25
);
$c
=
'd'
;
$d
= CONSTANTE +
$c
;
echo
"Este es el valor:
$d
<br>"
;
echo
'Este es el valor: '
.
$d
.
"<br>"
;
?>
</BODY>
PROGRAMACIÓN WEB
PHP
Arrays
Numéricos
Asociativos
Parámetros
•
GET
•
POST
Recorrido
•
Key
•
Value
<?
//Numéricos
$Productos
=
array
(
"ruedas"
,
"aceite"
);
echo
$Productos
[
0
].
"<br>"
;
echo
$Productos
[
1
].
"<br>"
;
$Numeros
=
range
(
4, 25
);
echo
$Numeros
[
6
];
//Asociativos
$Precios =
array
(
"ruedas"=>300, "aceite"=>600
);
echo
$Precios
[
"ruedas"
].
"<br>"
;
//HTTP_GET_VARS, HTTP_POST_VARS
echo
$HTTP_GET_VARS
[
"n1"
].
"<br>"
;
//bucles while
reset
(
$HTTP_GET_VARS
);
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 29
PROGRAMACIÓN WEB
PHP
Arrays
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 30
PROGRAMACIÓN WEB
PHP
Estructuras de control
if
(
condicion
) sentencia;
else
sentencia;
if
(
condicion
)
{bloque;}
else
{bloque;}
switch
(
expresion
)
{
case
expresion
:
{bloque;
break
;}
case
expresion
:
{bloque;
break
;}
default
:
{bloque;}
}
while
(
condicion
)
{bloque;}
do
bloque;
while
(
condicion
);
for
(
$i=
0
; $i<
3
; $i++
)
{bloque;}
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
PROGRAMACIÓN WEB
PHP
Definición de funciones y reutilización de código
function
calculo
(
$a, &$b, $c=4
)
{
global
$e
;
$b
+=
$e
$f
=
intval
((
$a
+
$b
)/
$c
)
;
return
(
$f
);
}
$a
=
3
;
$b
=
2
;
$e
=
5
;
$a
=
calculo
(
$a
,
$b
);
echo
$a
.
"-"
.
$b
Resultado: 2-7
require
(
"a1.php"
);
If
(
$a
==
3
)
require
(
"a2.php"
);
else
include
(
"a3.php"
);
Funciones
Reutilización de código
•
Inclusión de archivos
•
require
(
"archivo.php"
);
9
En compilación
•
include
(
"archivo.php"
);
9
En ejecución
•
a1 y a2 se incluyen siempre
•
a3 se incluye sólo cuando $a es
igual a 3.
J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP
PROGRAMACIÓN WEB
PHP
Operadores y funciones
Operadores
Funciones
Aritméticos
+, -, *, /, %
Asignación
$b = 3 + ($a=4);
Concatenación
"Hola "."mundo!"
Combinaciones
+=, -=, *=, /=, %=, .=
Pre y Post Incrementos
$a++, ++$a, --$a,
$a--Comparaciones
==, ===, <>, !=, <, >, <=, >=
Lógicos
!, &&, ||, and, or
De bits
&, |, -, ^, >>, <<
Operador ?
(
condicion
?
expresion1
:
expresion2
)
De variables
gettype
($a);
settype
($a, 'double');
is_array
($a);
is_double
($a), etc.
isset
($a);
unset
($a);
empty
($a);
strval
($a);
intval
($a);
doubleval
($a);
Manipulación de arrays
$elem =
each
($a);
list
($clave, $valor) =
each
($a);
current
;
reset
;
end
;
next
;
pos
;
prev
;
sort
($a);
Strings
trim
($s);
ltrim
;
chop
;
nl2br
($s);
();
printf
();
sprintf
();
addslashes
($s);
stripslashes
($s);
htmlspecialchars
($s);
$a =
explode
("separador", $s);
$s =
implode
("separador", $a);
strtok
();
substr
();
strcmp
();
strlen
;
etc.
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 33
Índice
INTRODUCCIÓN
Horario de clases y tutorías
Calendario de prácticas
Objetivo
ACCESO A BASES DE DATOS
Acceso BD desde aplicaciones de escritorio
Acceso BD desde aplicaciones web
PROGRAMACIÓN WEB
HTML
PHP
Acceso a BD desde PHP
Curso 2004/2005 J.R.R.V. - BD – Prácticas: Parte B: Bases de datos y PHP 34