0% encontró este documento útil (0 votos)
1K vistas

PHP Mysql 2017 1

Este documento proporciona una introducción a PHP y MySQL. Explica la arquitectura de Internet TCP/IP, los principales servicios de Internet como email y HTTP, y describe cómo instalar y configurar un entorno de desarrollo local con Apache, PHP y una distribución como XAMPP.

Cargado por

Susanna Lopez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1K vistas

PHP Mysql 2017 1

Este documento proporciona una introducción a PHP y MySQL. Explica la arquitectura de Internet TCP/IP, los principales servicios de Internet como email y HTTP, y describe cómo instalar y configurar un entorno de desarrollo local con Apache, PHP y una distribución como XAMPP.

Cargado por

Susanna Lopez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 196

PHP y MySQL

Proyecto Universidad Empresa - PUE


Agustn Caldern
[email protected]
PHP y MySQL

Tema 0: Arquitectura y servicios


Internet
Arquitectura y servicios Internet

1. Arquitectura de Internet (TCP/IP)


2. Servicios de Internet
3. Protocolo HTTP/HTTPS
Arquitectura de Internet (TCP/IP)

Internet Engineering Task Force (IETF)


La IETF es mundialmente conocida por ser la entidad que regula las
propuestas y los estndares de Internet, conocidos como RFC.

Internet Corporation for Assigned Names and Numbers


(ICANN)
Es la responsable de asignar las direcciones del protocolo IP, de los
identificadores de protocolo, de las funciones de gestin del sistema de
dominio y de la administracin del sistema de servidores raz.
Arquitectura de Internet (TCP/IP)
Asia Pacific - Red
Europe/Middle East/Central
Asia/Africa - Green
North America - Blue
Latin American and Caribbean -
Yellow
RFC1918 IP Addresses - Cyan
Unknown - White

Date: Nov 22 2003


opte.org
Servicios de Internet

Email
Utiliza el protocolo SMTP ("Simple Mail Transfer Protocol"), para la
recepcin y envo.
TELNET
Se utiliza para conectar a equipos remotos mediante la Red emulando
un terminal del equipo al que se realiza la conexin.
FTP
("File Transfer Protocol"), se usa para enviar o recibir ficheros (de
cualquier tipo) entre dos equipos conectados a la red.
DNS
("Domain Name Service") es usado por otros, como TELNET, FTP,
WWW, etc. para conseguir las direcciones IP (numricas) de las
mquinas remotas a partir de los nombres de dominio.
Servicios de Internet 2

Gopher
Un servicio de informacin basado en servidores y que sirve de
interfaz para otros servicios de informacin.
WAIS
("Wide Area Information Service"). Se trata de otro servicio de
informacin basado en bases de datos de ficheros que permiten su
rpida localizacin.
Finger
Un servicio de identificacin de usuarios.
WWW
La Web, WWW, W3. Un servicio basado en HTTP (Hyper Text
Transfer Protocol), el ltimo y ms popular que est fagocitando a
muchos de los anteriores [2].
Servicios de Internet 3
WWW
La Web, WWW, W3. Un servicio basado en HTTP (Hyper Text
Transfer Protocol), el ltimo y ms popular que est fagocitando a
muchos de los anteriores [2].
NFS
("Network File System"). Un sistema que permite a equipos fsicamente
distantes, compartir discos y directorios mediante la tcnica
denominada RPC ("Remote Procedure Call").
NIS
("Network Information Services"). Tambin basados en RPC, permite
que varios sistemas puedan compartir una misma base de datos
situada en remoto.
R
Tales como rlogin, rsh y otros. Utilizan la idea de acuerdos entre
sistemas (hosts trusting), que permite ejecutar comandos y otras
rdenes en equipos remotos sin requerir un password.
Protocolo HTTP/HTTPS

HTTP
("Hyper-Text Transfer Protocol") (HTTP 1.2) es un protocolo de Capa
de Aplicacin para distribuir sistemas de informacin hipermedia.
HTTP es un protocolo de consulta-respuesta, estndar para
aplicaciones cliente/servidor.
Protocolo HTTP/HTTPS 2
URI
Los recursos a ser accedidos via HTTP son
identificados usando URIs (Uniform Resource
Identifiers)
URL
Ms especficamente, URLs (Uniform Resource
Locators) usan los esquemas HTTP/HTTPS.
Mtodos
HTTP define 8 mtodos: HEAD, GET, POST, PUT,
DELETE, TRACE, OPTIONS, CONNECT.
Respuesta
1xx Mensajes, 2xx Operacin exitosa, 3xx Redireccin,
4xx Error por parte del cliente, 5xx Error del servidor.
200 OK, 404 No encontrado, 500 Error interno,
PHP y MySQL

Tema 1: Introduccin
Tema 1: Introduccin

1. Introduccin a PHP
2. Instalacin de Apache
3. Instalacin de PHP
4. Instalacin de una distribucin de Apache: XAMPP
5. Entornos de desarrollo para PHP
6. Recursos de PHP
Historia de php
1994
PHP: personal home page.
Era un CGI escrito en C por Rasmus Lerdorf.

1995
Se libera php y se llama php 2.

1997
Zeev Suraski y Andi Gutmans escriben el parser.
PHP 3: Hypertext Preprocessor.
Se libera en 1998

1999
Zend Engine 1.0.
Zend Technologies.
Historia de php 2
2000
PHP 4 powered by Zend Engine 1.0.

2005
PHP 5 powered by Zend Engine 2.0.

Agosto de 2008
Php 4.4.9 se congela.

Noviembre 19 de 2009
Php 5.3.1.
Benchmark
Mediciones de velocidad en PHP 5.

http://www.tiaon.com/wordpress/2007/04/10/fastest-loop-code-in-php5/

http://www.php.lt/benchmark/phpbench.php
Introduccin a PHP
Lenguajes de script
PHP es un lenguaje de script del lado del servidor. Otros lenguajes
similares son ASP, JSP o ColdFusion
Los scripts PHP estn incrustados en los documentos HTML y el
servidor los interpreta y ejecuta antes de servir las pginas al cliente
El cliente no ve el cdigo PHP sino los resultados que produce
Introduccin a PHP

Servidor web Cliente


Cmo funciona PHP? (1) (navegador)

Pgina Pgina
HTML HTML
internet

<P>Hola, Ana</P>
Introduccin a PHP

Servidor web Cliente


Cmo funciona PHP? (2) (navegador)

Pgina Pgina Pgina


PHP HTML HTML
internet
Intrprete
PHP

<?PHP
$nombre = "Ana";
print ("<P>Hola, $nombre</P>");
?>

<P>Hola, Ana</P>
Introduccin a PHP

Breve historia de PHP


Creado por Rasmus Lerdorf para uso personal en 1994
PHP = PHP: Hypertext Preprocessor
Versin actual: PHP 5
Es un mdulo que se aade al servidor web y fue concebido
inicialmente para Apache
Por qu PHP?
Por sus ventajas: es potente, fcil de aprender, de libre distribucin,
permite el acceso a bases de datos y otras funcionalidades
orientadas a la red
Dispone de abundante soporte en la Web
Introduccin a PHP

Requisitos
Servidor web Apache (www.apache.org)
con el mdulo PHP (www.php.net)
y la base de datos MySQL (www.mysql.com) si se desea crear pginas
dinmicas
Otras utilidades
Herramientas para la gestin de MySQL, como PHPMyAdmin
(www.phpmyadmin.net)
Editores de PHP, como DevPHP (www.sourceforge.net) o Eclipse
(www.eclipse.org)
Manuales de PHP y MySQL
Instalacin de Apache

Instalacin y configuracin de Apache


Pasos:
Descargar
Instalar
Configurar
Instalacin de Apache

Instalacin y configuracin de Apache. 1: descargar


Conectar a www.apache.org
Seleccionar HTTP Server
Elegir la versin estable ms reciente
Apache 2.2.8 (febrero 2008)
Descargar a una carpeta temporal
Instalacin de Apache

Instalacin y configuracin de Apache. 2: instalar


Ejecutar el archivo bajado y seguir las instrucciones
Introducir la informacin requerida:
Network Domain: localhost
Server name: localhost
Administrators Email Address: webmaster@localhost
Instalar como servicio (no disponible en W9X)
Seleccionar instalacin tpica e instalar en la carpeta por
defecto, c:\Archivos de Programa\Apache Group\
Se crea el grupo de programas Apache HTTP Server y la
carpeta c:\Archivos de Programa\Apache Group\Apache2
Arrancar el servidor:
Inicio > Programas > Apache HTTP Server 2.2.8 > Control
Apache Server > Start
Ejecutar el navegador y cargar http://localhost/
Si sale la pgina de inicio del servidor, la instalacin habr sido
correcta
Instalacin de Apache

Instalacin y configuracin de Apache. 3: configurar


Archivo de configuracin: httpd.conf, situado en c:\Archivos de
Programa\Apache Group\Apache2\conf
Ejecutar Inicio > Programas > Apache HTTP Server 2.2.8 >
Configure Apache Server > Edit the Apache httpd.conf Configuration
File
Cambios:
DocumentRoot -> c:/htdocs (por defecto es c:/Archivos de
Programa/Apache Group/Apache2/htdocs)
<Directory c:/htdocs>
Aadir index.php a DirectoryIndex
Crear carpeta c:\htdocs
Crear una pgina de inicio o copiar los ficheros de c:/Archivos de
Programa/Apache Group/Apache2/htdocs
Reiniciar apache para leer la nueva configuracin
Instalacin de PHP

Instalacin y configuracin de PHP


Pasos:
Descargar
Descomprimir
Configurar
Probar
Instalacin de PHP

Instalacin y configuracin de PHP. 1: descargar


Conectar a www.php.net
Seleccionar downloads, windows binaries
Elegir la versin estable actual, PHP 5.2.5 (febrero 2008)
Hay varias posibilidades: seleccionar PHP 5.2.5 zip package
Elegir un mirror (Espaa: rediris)
Descargar a una carpeta temporal
Instalacin de PHP

Instalacin y configuracin de PHP. 2: descomprimir


Extraer a la carpeta c:\
Se crea la carpeta c:\php-5.2.5-Win32. Renombrar a c:\php
Instalacin de PHP

Instalacin y configuracin de PHP. 3: configurar


Seguir las instrucciones del archivo install.txt
Copiar el archivo de configuracin php.ini-recommended como php.ini en
la carpeta del sistema (habitualmente c:\windows)
Editarlo y cambiar lo siguiente:
doc_root = c:\htdocs
extension_dir = c:\php\ext
Editar httpd.conf y aadir las lneas siguientes:
LoadModule php5_module c:/php/php5apache2.dll
AddType application/x-httpd-php .php
Reiniciar Apache
Instalacin de PHP

Instalacin y configuracin de PHP. 4: probar


Crear una pgina PHP de prueba y cargarla con el navegador
Ejemplo: prueba.php en c:\htdocs\
Ejecutar el navegador y teclear la URL http://localhost/prueba.php

<?PHP
phpinfo(); prueba.php

?>
Instalacin de PHP

Ejercicio 1: configuracin de PHP


Comprobacin del funcionamiento del mdulo de PHP y de su
configuracin
Instalacin de XAMPP

Qu es XAMPP?
XAMPP es una distribucin de Apache que incluye MySQL,
PHP y otras herramientas para el desarrollo de aplicaciones
web, como phpMyAdmin
XAMPP es gratuito y fcil de instalar: basta con descargar el
archivo y extraerlo
XAMPP es multiplataforma: existen versiones para Windows,
Linux y Mac OS
Precaucin: la configuracin por defecto de XAMPP no es
segura y no es adecuada para un entorno de produccin. El
paquete incluye una herramienta para obtener una
configuracin ms segura
Instalacin de XAMPP

Instalacin y configuracin de XAMPP


Pasos:
Descargar
Instalar
Probar
Instalacin de XAMPP

Instalacin y configuracin de XAMPP. 1: descargar


Conectarse a http://www.apachefriends.org/es/xampp.html
Seleccionar la plataforma adecuada
En el caso de Windows existen dos versiones: la normal (XAMPP) y la
reducida (XAMPP Lite)
Para instalar la versin XAMPP Lite de Windows,
Seleccionar Download > XAMPP Lite
Elegir el fichero EXE autoextrable
Guardar el archivo en disco
Instalacin de XAMPP

Instalacin y configuracin de XAMPP. 2: instalar


Ejecutar el archivo descargado. Extraer a la carpeta C:\Archivos de
programa\xampplite
Ir a la carpeta C:\Archivos de programa\xampplite y ejecutar el
programa setup_xampp.bat
Crear un acceso directo en el escritorio al programa xampp-control.exe
situado en esa carpeta
Instalacin de XAMPP

Instalacin y configuracin de XAMPP. 3: probar


Ejecutar XAMPP haciendo doble clic sobre el icono xampp_control
Arrancar los mdulos Apache y MySQL. Aparece el rtulo Running al
lado de ambos
Pulsar el botn Admin. Aparecer la pgina de inicio del servidor
Para parar XAMPP, pulsar el botn Exit
Instalacin de XAMPP

Configuracin segura de XAMPP


Arrancar XAMPP y cargar la pgina de inicio
Seleccionar la opcin Chequeo de seguridad
Pulsar el enlace recomendado para solucionar los problemas de
seguridad
Establecer una contrasea para el administrador (root) de MySQL (por
defecto est en blanco)
Crear un usuario con contrasea para proteger el acceso a la carpeta
de XAMPP
Entornos de desarrollo para PHP

Cmo desarrollar un proyecto en PHP?


Los ficheros PHP son ficheros de texto y se pueden crear con cualquier
editor de texto, como el WordPad de Windows
Es mucho ms conveniente utilizar entornos de desarrollo que
permiten editar el cdigo ms cmodamente, y adems proporcionan
funciones como la deteccin y correccin de errores, visualizacin de
las pginas en el navegador, ayuda sensible al contexto y gestin de
todos los recursos asociados al proyecto
Algunos entornos de desarrollo:
Dev-PHP
Eclipse
Entornos de desarrollo para PHP

Instalacin del editor Dev-PHP


Descargar de http://sourceforge.net/projects/devphp
Ejecutar archivo descargado y seguir las instrucciones. Tomar los
valores por defecto
Dev-PHP queda configurado como el editor predeterminado para los
archivos PHP

NOTA
El editor Dev-PHP ocupa muy poco espacio y es muy simple de
manejar. El entorno Eclipse (vase a continuacin) ocupa bastante
ms espacio y consume ms recursos del sistema, pero ofrece una
potencia muy superior para el desarrollo de aplicaciones en PHP
Entornos de desarrollo para PHP

Entorno de programacin Eclipse


Eclipse es una plataforma de desarrollo abierta creada
inicialmente para construir aplicaciones Java
Actualmente Eclipse soporta mltiples lenguajes y dispone de
una enorme cantidad de componentes que cubren todas las
fases del desarrollo de software
El soporte de PHP lo proporciona el plugin PDT (PHP
Development Tool)
Para ejecutar Eclipse es preciso tener instalado el entorno de
ejecucin de Java (JRE), que se puede descargar de
http://www.java.com/es/
Entornos de desarrollo para PHP

Instalacin de Eclipse (Windows)


Conectarse a http://www.eclipse.org
Seleccionar la pestaa Downloads
Elegir el paquete Eclipse Classic Windows
Seleccionar un mirror y descargar el archivo a una carpeta temporal del
disco
Descomprimir el archivo .zip en la carpeta C:\Archivos de programa. Se
crea la carpeta Eclipse
Crear un acceso directo en el escritorio al fichero eclipse.exe situado
en la carpeta C:\Archivos de programa\Eclipse
Entornos de desarrollo para PHP

Instalacin del plugin PDT


Ejecutar Eclipse
Seleccionar Help > Software Updates > Find and Install
Marcar la casilla Search for new features y pulsar Next
Marcar la casilla Europa Discovery Site
Pulsar el botn New Remote Site y aadir:
Name: PDT
URL: http://download.eclipse.org/tools/pdt/updates
Pulsar Finish
En la ventana de resultados marcar la casilla PDT, expandir la lnea de
Europa y pulsar Select Required
Pulsar Next
Aceptar la licencia, pulsar Next y Finish
Recursos de PHP

Documentacin
Manuales en www.apache.org, www.php.net, www.mysql.com
Tutoriales, scripts, artculos
www.phpbuilder.com
www.codewalkers.com
www.devshed.com
www.tutorialfind.com
www.melonfire.com
PHP y MySQL

Tema 2: Lenguaje PHP bsico

Jos Mariano Gonzlez Romano


[email protected]
Tema 2: Lenguaje PHP bsico

1. Sintaxis bsica
2. Tipos de datos
3. Variables
4. Constantes
5. Expresiones y operadores
6. Estructuras de control
7. Funciones
8. Tablas
9. Bibliotecas de funciones
Sintaxis bsica

PHP es sensible a las maysculas


Cmo se incrusta en la pgina web?
<?PHP ... ?>
recomendado, siempre disponible
<?= expresin ?>
equivale a <? echo expresin ?>
Las instrucciones se separan con un ; como en C. La marca final ?>
implica un ;
Comentarios: como en C, /* */ (varias lneas ) y // (una lnea)
/* Comentario de
varias lneas */
print hola; // Comentario de una lnea
Sintaxis bsica

Para imprimir: echo y print


echo: muestra una o ms cadenas
echo cadena1 [, cadena2];
echo Hola mundo;
echo Hola , mundo;
print: muestra una cadena
print cadena;
print Hola mundo;
print Hola . mundo;
Sintaxis bsica

Ejemplo:
<HTML>
<HEAD>
<TITLE>Mi primer programa en PHP</TITLE>
</HEAD>
<BODY>
<?PHP
print (<P>Hola mundo</P>);
?>
</BODY>
</HTML>
Sintaxis bsica

Uso de \n para generar cdigo HTML legible


a) Sin \n
print (<P>Prrafo 1</P>);
Cdigo PHP
print (<P>Prrafo 2</P>);

Cdigo HTML <P>Prrafo 1</P><P>Prrafo 2</P>

Salida Prrafo 1

Prrafo 2
Sintaxis bsica

Uso de \n para generar cdigo HTML legible


b) Con \n

Cdigo PHP print (<P>Prrafo 1</P>\n);


print (<P>Prrafo 2</P>\n);

Cdigo HTML <P>Prrafo 1</P>


<P>Prrafo 2</P>

Salida Prrafo 1

Prrafo 2
Sintaxis bsica

Ejercicio 1: programa que muestra un mensaje


Ilustra cmo incrustar cdigo PHP en un documento HTML y cmo
imprimir desde PHP
Sintaxis bsica

Inclusin de ficheros externos:


include()
require()
Ambos incluyen y evalan el fichero especificado
Diferencia: en caso de error include() produce un warning y
require() un error fatal
Se usar require() si al producirse un error debe interrumpirse la
carga de la pgina
Ejemplo:
Sintaxis bsica

<HTML>
<HEAD>
<TITLE>Ttulo</TITLE>
<?PHP
// Incluir bibliotecas de funciones
require ("conecta.php");
require ("fecha.php");
require ("cadena.php");
require ("globals.php");
?>
</HEAD>
<BODY>
<?PHP
include ("cabecera.html");
?>
// Cdigo HTML + PHP
...
<?PHP
include ("pie.html");
?>
</BODY>
</HTML>
Tipos de datos

PHP soporta 8 tipos de datos primitivos:


Tipos escalares: boolean, integer, double, string
Tipos compuestos: array, object
Tipos especiales: resource, NULL
El tipo de una variable no se suele especificar. Se decide en tiempo
de ejecucin en funcin del contexto y puede variar
Funciones de inters:
La funcin gettype() devuelve el tipo de una variable
Las funciones is_type comprueban si una variable es de un tipo dado:
is_array(), is_bool(), is_float(), is_integer(), is_null(), is_numeric(),
is_object(), is_resource(), is_scalar(),
is_string()
La funcin var_dump() muestra el tipo y el valor de una variable. Es
especialmente interesante con los arrays
Tipos de datos

Tipo integer (nmeros enteros)


27, -5, 0
Tipo double (nmeros reales)
1.234, -5.33
Tipo boolean (lgico)
Valores: true, false (insensibles a las maysculas)
El 0 y la cadena vaca tienen valor false
Tipos de datos
Tipo string:
Las cadenas se encierran entre comillas simples o dobles:
simples: admite los caracteres de escape \ (comilla simple) y \\
(barra). Las variables NO se expanden
dobles: admite ms caracteres de escape, como \n, \r, \t, \\, \$, \.
Los nombres de variables S se expanden
Ejemplos:
$a = 9;
print a vale $a\n;
// muestra a vale $a\n
print a vale $a\n;
// muestra a vale 9 y avanza una lnea
print <IMG SRC=logo.gif>;
// muestra <IMG SRC=logo.gif>
print <IMG SRC=\logo.gif\>;
// muestra <IMG SRC=logo.gif>
Acceso a un carcter de la cadena:
La forma es $inicial = $nombre{0};
Variables

Las variables siempre van precedidas de un $


El nombre es sensible a las maysculas
Comienzan por letra o subrayado, seguido de letras, nmeros o
subrayado
Variables predefinidas:
$GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIES, $_FILES,
$_ENV, $_REQUEST, $_SESSION
mbito: globales al fichero (excepto funciones) o locales a una
funcin
Ejemplo:
$valor = 5;
print El valor es: . $valor . \n;
print El valor es: $valor\n; // ojo: comillas dobles

Resultado:
El valor es: 5
Variables

Variables variables
Se pueden crear nombres de variables dinmicamente
La variable variable toma su nombre del valor de otra variable previamente
declarada
Ejemplo:
$a = "hola";
$$a = "mundo";

print "$a $hola\n";


print "$a ${$a}";

Resultado:
hola mundo
hola mundo
Variables
Ejemplo de variables variables: pgina internacionalizada (1)

<?PHP
$mensaje_es="Hola";
$mensaje_en="Hello";
$idioma = "es";
$mensaje = "mensaje_" . $idioma;
print $$mensaje;
?>
Variables
Ejemplo de variables variables: pgina internacionalizada (2)

<?PHP
$mensaje_es="Hola";
$mensaje_en="Hello";
$idioma = "en";
$mensaje = "mensaje_" . $idioma;
print $$mensaje;
?>
Constantes

Definicin de constantes:
define (CONSTANTE, hola);
print CONSTANTE;
No llevan $ delante
Slo se pueden definir constantes de los tipos escalares (boolean,
integer, double, string)
Expresiones y operadores
Operadores aritmticos:
+, -, *, /, %, ++, --
Operador de asignacin:
=
operadores combinados: .=, +=, etc
$a = 3; $a += 5; a vale 8
$b = hola ; $b .= mundo; b vale hola mundo
Equivale a $b = $b . mundo;
Operadores de comparacin:
===, ==, !=, <, >, <=, >= y otros
Operador de control de error: @. Antepuesto a una expresin, evita cualquier
mensaje de error que pueda ser generado por la expresin
Operadores lgicos:
and (&&), or (||), !, xor
and/&& y or/|| tienen diferentes prioridades
Operadores de cadena:
concatenacin: . (punto)
asignacin con concatenacin: .=
Expresiones y operadores

Precedencia de operadores (de mayor a menor):

++, --
*, /, %
+,-
<, <=, >, >=
==, !=
&&
||
and
or
Estructuras de control

Estructuras selectivas:
if-else
switch
Estructuras repetitivas:
while
for
foreach
Estructuras de control

Estructura selectiva if-else


if (condicin) if (condicin1)
sentencia sentencia 1
else if (condicin2)
if (condicin) sentencia 2
sentencia 1 ...
else else if (condicin n)
sentencia 2 sentencia n
else
sentencia n+1

Mismo comportamiento que en C


Las sentencias compuestas se encierran entre llaves
elseif puede ir todo junto
Estructuras de control

Ejemplo de estructura selectiva


if-else:

<?PHP
if ($sexo == M)
$saludo = "Bienvenida, ";
else
$saludo = "Bienvenido, ";
$saludo = $saludo . $nombre;
print ($saludo);
?>
Estructuras de control
Estructura selectiva switch
switch (expresin)
{
case valor_1:
sentencia 1
break;
case valor_2:
sentencia 2
break;

case valor_n:
sentencia n
break;
default
sentencia n+1
}
Mismo comportamiento que en C, slo que la expresin del case
puede ser integer, float o string
Estructuras de control
Ejemplo de estructura selectiva switch:
switch ($extension)
{
case ("PDF"):
$tipo = "Documento Adobe PDF";
break;
case ("TXT"):
$tipo = "Documento de texto";
break;
case ("HTML"):
case ("HTM"):
$tipo = "Documento HTML";
break;
default:
$tipo = "Archivo " . $extension;
}
print ($tipo);
Estructuras de control

condicin
Estructura repetitiva while falsa cierta
while (condicin)
sentencia

sentencia

Mismo comportamiento que en C


Estructuras de control

Ejemplo de estructura repetitiva while:

<?PHP
print ("<UL>\n");
$i=1;
while ($i <= 5)
{
print ("<LI>Elemento $i</LI>\n");
$i++;
}
print ("</UL>\n");
?>
Estructuras de control

Estructura repetitiva for inicializacin

for (inicializacin; condicin; incremento) condicin


sentencia
falsa cierta

Mismo comportamiento que en C sentencia

incremento
Estructuras de control

Ejemplo de estructura repetitiva for:

<?PHP
print ("<UL>\n");
for ($i=1; $i<=5; $i++)
print ("<LI>Elemento $i</LI>\n");
print ("</UL>\n");
?>
Estructuras de control

Ejercicio 2: programa que calcula una tabla de multiplicar


Ilustra cmo manejar variables y cmo usar bucles
Funciones

Ejemplo:
function suma ($x, $y)
{
$s = $x + $y;
return $s;
}

$a=1;
$b=2;
$c=suma ($a, $b);
print $c;
Funciones

Por defecto los parmetros se pasan por valor


Paso por referencia:
function incrementa (&$a)
{
$a = $a + 1;
}

$a=1;
incrementa ($a);
print $a; // Muestra un 2
Funciones

Argumentos por defecto


function muestranombre ($titulo = "Sr.")
{
print "Estimado $titulo:\n";
}
muestranombre ();
muestranombre ("Prof.");
Salida:
Estimado Sr.:
Estimado Prof.:
Funciones

Los argumentos con valores por defecto deben ser siempre los
ltimos:
function muestranombre ($nombre, $titulo= "Sr.")
{
print "Estimado $titulo $nombre:\n";
}
muestranombre (Fernndez);
muestranombre (Fernndez, "Prof.");
Salida:
Estimado Sr. Fernndez:
Estimado Prof. Fernndez:
Tablas

Sintaxis:
array ([clave =>] valor, ...)
La clave es una cadena o un entero no negativo. El valor puede ser
de cualquier tipo vlido en PHP, incluyendo otro array
Ejemplos:
$color = array (rojo=>101, verde=>51, azul=>255);
$medidas = array (10, 25, 15);
Acceso:
$color[rojo] // No olvidar las comillas
$medidas[0]
El primer elemento es el 0
Tablas
La estructura de control foreach permite iterar sobre arrays
Sintaxis:
foreach (expresin_array as $valor)
sentencia
foreach (expresin_array as $clave => $valor)
sentencia
Ejemplos:
foreach ($color as $valor)
print Valor: $valor<BR>\n;
foreach ($color as $clave => $valor)
print Clave: $clave; Valor: $valor<BR>\n;
Salida:
Valor: 101
Valor: 51
Valor: 255
Clave: rojo; Valor: 101
Clave: verde; Valor: 51
Clave: azul; Valor: 255
Bibliotecas de funciones

Existen muchas bibliotecas de funciones en PHP


Algunos ejemplos:
Funciones de manipulacin de cadenas
Funciones de fecha y hora
Funciones de arrays
Funciones de ficheros
Funciones matemticas
Funciones de bases de datos
Funciones de red
Algunas bibliotecas requieren la instalacin de componentes
adicionales
Todas las funciones de biblioteca estn comentadas en la
documentacin de PHP
Bibliotecas de funciones

Funciones de manipulacin de cadenas


explode()
Divide una cadena en subcadenas
array explode (string separator, string string [, int limit])
rtrim(), ltrim(), trim()
Eliminan caracteres a la derecha, a la izquierda o por ambos lados de
una cadena
string rtrim ( string str [, string charlist])
strstr()
Busca la primera ocurrencia de una subcadena
strtolower() / strtoupper()
Convierte una cadena a minscula / mayscula
strcmp() / strcasecmp()
Compara dos cadenas con/sin distincin de maysculas
strlen()
Calcula la longitud de una cadena
Bibliotecas de funciones

Funciones de fecha y hora


date()
Formatea una fecha segn un formato dado
Ejemplo:
$fecha = date ("j/n/Y H:i");
print ("$fecha");
Resultado:
26/9/2005 17:36

strtotime()
Convierte una fecha en un timestamp de UNIX
Ejemplo:
$fecha = date ("j/n/Y", strtotime(5 april 2001"));
print ("$fecha");
Resultado:
5/4/2001
Bibliotecas de funciones

Funciones de arrays
array_count_values()
Calcula la frecuencia de cada uno de los elementos de un array
array_search()
Busca un elemento en un array
count()
Cuenta los elementos de un array
sort(), rsort()
Ordena y reindexa un array (r=decreciente)
ksort(), krsort()
Ordena por claves un array (r=decreciente)
Bibliotecas de funciones

Ejercicio 3: programa que muestra la fecha actual


Ilustra cmo usar comentarios, tablas y funciones (propias y de
biblioteca). Tambin cmo usar el manual de PHP
PHP y MySQL

Tema 3: Formularios

Jos Mariano Gonzlez Romano


[email protected]
Tema 3: Formularios

1. Acceso a formularios HTML desde PHP


2. El formulario de PHP
3. Subida de ficheros al servidor
4. Validacin de los datos de un formulario
Acceso a formularios desde PHP

Desde PHP se puede acceder fcilmente a los datos


introducidos desde un formulario HTML
Vemoslo con un ejemplo simple
Acceso a formularios
desde PHP
Fichero uno.php
<HTML>
desde PHP
<BODY>
<FORM ACTION=dos.php METHOD=POST>
Edad: <INPUT TYPE=text NAME=edad>
<INPUT TYPE=submit VALUE=aceptar>
</FORM>
</BODY>
</HTML>
Fichero dos.php
<HTML>
<BODY>
<?PHP
print (La edad es: $edad);
?>
</BODY>
</HTML>
Acceso a formularios desde PHP
Acceso a formularios desde PHP
A partir de PHP 4.2.0, el valor por defecto de la directiva de
PHP register_globals es off
Esto tiene una gran importancia sobre los formularios, ya que
no es posible acceder a las variables enviadas de la manera
anterior (como variables globales). En su lugar hay que utilizar
la variable predefinida de PHP $_REQUEST, escribiendo
$_REQUEST[edad] en lugar de $edad
Se puede poner register_globals = on en el fichero de
configuracin php.ini, pero no es recomendable por motivos de
seguridad. Una alternativa que permite hacer mnimos cambios
en el cdigo ya existente es la siguiente:
$edad = $_REQUEST[edad];
Acceso a formularios
desde PHP
desde PHP
Fichero uno.php
<HTML>
<BODY>
<FORM ACTION=dos.php METHOD=POST>
Edad: <INPUT TYPE=text NAME=edad>
<INPUT TYPE=submit VALUE=aceptar>
</FORM>
</BODY>
</HTML>
Fichero dos.php
<HTML>
<BODY>
<?PHP
$edad = $_REQUEST[edad];
print (La edad es: $edad);
?>
</BODY>
</HTML>
Acceso a formularios desde PHP

Ejercicio 1: formulario simple


Ilustra cmo acceder a los valores introducidos desde un formulario
HTML
Acceso a formularios
Acceso a los diferentes tipos de elementos de entrada de
formulario
Elementos de tipo INPUT
TEXT
desde PHP
RADIO
CHECKBOX
BUTTON
desde PHP
FILE
HIDDEN
PASSWORD
SUBMIT
Elemento SELECT
Simple / mltiple
Elemento TEXTAREA
Acceso a formularios desde PHP

TEXT
Introduzca la cadena a buscar:
<INPUT TYPE="text" NAME="cadena" VALUE="valor por defecto" SIZE="20">

<?PHP
$cadena = $_REQUEST[cadena];
print ($cadena);
?>
Acceso a formularios desde PHP

Sexo:
<INPUT TYPE="radio" NAME=sexo" VALUE=M CHECKED>Mujer
RADIO <INPUT TYPE="radio" NAME=sexo" VALUE=H">Hombre

<?PHP
$sexo = $_REQUEST[sexo];
print ($sexo);
?>
Acceso a formularios desde PHP

<INPUT TYPE="checkbox" NAME="extras[]" VALUE="garaje" CHECKED>Garaje


<INPUT TYPE="checkbox" NAME="extras[]" VALUE="piscina">Piscina
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="jardin">Jardn

<?PHP
$extras = $_REQUEST[extras];
foreach ($extras as $extra)
CHECKBOX print ($extra<BR>\n);
?>
Acceso a formularios desde PHP

<INPUT TYPE="button" NAME=actualizar" VALUE="Actualizar datos">

BUTTON
<?PHP
$actualizar = $_REQUEST[actualizar];
if ($actualizar)
print ("Se han actualizado los datos");
?>
Acceso a formularios desde PHP

<FORM ACTION="procesa.php" METHOD="post


ENCTYPE="multipart/form-data">
FILE <INPUT TYPE="file" NAME="fichero">
</FORM>
Acceso a formularios desde PHP

<?PHP
print(<INPUT TYPE=hidden NAME=username VALUE=$usuario>\n);
HIDDEN ?>

<?PHP
$username = $_REQUEST[username];
print ($username);
?>
Acceso a formularios desde PHP

Contrasea: <INPUT TYPE="password" NAME="clave">

PASSWORD
<?PHP
$clave = $_REQUEST[clave];
print ($clave);
?>
Acceso a formularios desde PHP

<INPUT TYPE="submit" NAME="enviar" VALUE="Enviar datos">

SUBMIT
<?PHP
$enviar = $_REQUEST[enviar];
if ($enviar)
print ("Se ha pulsado el botn de enviar");
?>
Acceso a formularios desde PHP

Color:
<SELECT NAME=color">
SELECT simple <OPTION VALUE=rojo" SELECTED>Rojo
<OPTION VALUE=verde">Verde
<OPTION VALUE=azul">Azul
</SELECT>

<?PHP
$color = $_REQUEST[color];
print ($color);
?>
Acceso a formularios desde PHP

Idiomas:
<SELECT MULTIPLE SIZE="3" NAME="idiomas[]">
SELECT mltiple
<OPTION VALUE="ingles" SELECTED>Ingls
<OPTION VALUE="frances">Francs
<OPTION VALUE="aleman">Alemn
<OPTION VALUE="holandes">Holands
</SELECT>

<?PHP
$idiomas = $_REQUEST[idiomas];
foreach ($idiomas as $idioma)
print ($idioma<BR>\n);
?>
Acceso a formularios desde PHP

Comentario:
<TEXTAREA COLS=50" ROWS=4" NAME="comentario">
TEXTAREA Este libro me parece ...
</TEXTAREA>

<?PHP
$comentario = $_REQUEST[comentario];
print ($comentario);
?>
Acceso a formularios desde PHP

Ejercicio 2: programa que muestra los datos introducidos


desde un formulario
Ilustra cmo acceder a los valores introducidos desde todos los tipos
de elementos de entrada de un formulario, con excepcin de los
tipos BUTTON y FILE, que se tratan en ejercicios posteriores
El formulario de PHP

La forma habitual de trabajar con formularios en PHP es utilizar


un nico programa que procese el formulario o lo muestre segn
haya sido o no enviado, respectivamente
Ventajas:
Disminuye el nmero de ficheros
Permite validar los datos del formulario en el propio formulario
Procedimiento:

si se ha enviado el formulario:
Procesar formulario
si no:
Mostrar formulario
fsi
El formulario de PHP

a b
) )
si se ha enviado el formulario:
Procesar formulario
Esquema de funcionamiento:
si no:
Mostrar formulario
fsi

La 1 vez que se carga la pgina se muestra el formulario (a)


La 2 vez se procesa el formulario (b)
El formulario de PHP

Para saber si se ha enviado el formulario se acude a la variable


correspondiente al botn de envo. Si este botn aparece de la
siguiente forma en el formulario HTML:

<INPUT TYPE="SUBMIT" NAME="enviar VALUE="procesar">

entonces la condicin anterior se transforma en:


if (isset($enviar))

o bien
if ($enviar == procesar)
El formulario de PHP

Ejercicio 3: formulario de PHP


Ilustra cmo crear pginas multipropsito que sirven tanto para
mostrar un formulario como para procesarlo
Subida de ficheros al servidor

Para subir un fichero al servidor se utiliza el elemento de entrada


FILE
Hay que tener en cuenta una serie de consideraciones
importantes:
El elemento FORM debe tener el atributo
ENCTYPE="multipart/form-data
El fichero tiene un lmite en cuanto a su tamao. Este lmite se fija de
dos formas diferentes:
En el fichero de configuracin php.ini
En el propio formulario
Subida de ficheros al servidor
;;;;;;;;;;;;;;;;

php.ini
; File Uploads ;

;;;;;;;;;;;;;;;;

; Whether to allow HTTP file uploads.

file_uploads = On

; Temporary directory for HTTP uploaded files (will use

; system default if not specified).

;upload_tmp_dir =

formulario
; Maximum allowed size for uploaded files.
<INPUT TYPE=HIDDEN
upload_max_filesize = 2M NAME=MAX_FILE_SIZE VALUE='102400'>
<INPUT TYPE=FILE NAME="fichero">
Subida de ficheros al servidor
Consideraciones (cont)
Debe darse al fichero un nombre que evite coincidencias con ficheros ya
subidos. Por ello, y como norma general, debe descartarse el nombre
original del fichero y crear uno nuevo que sea nico
El fichero subido se almacena en un directorio temporal y hemos de
moverlo al directorio de destino usando la funcin move_upload_file()
Procedimiento:

si se ha subido correctamente el fichero:


Asignar un nombre al fichero
Mover el fichero a su ubicacin definitiva
si no:
Mostrar un mensaje de error
fsi
Subida de ficheros al servidor
HTML
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="102400">
<INPUT TYPE="FILE" SIZE="44" NAME="imagen">

La variable $_FILES contiene toda la informacin del fichero


subido:
$_FILES['imagen']['name']
Nombre original del fichero en la mquina cliente
$_FILES['imagen']['type']
Tipo mime del fichero. Por ejemplo, "image/gif"
$_FILES['imagen']['size']
Tamao en bytes del fichero subido
$_FILES['imagen']['tmp_name']
Nombre del fichero temporal en el que se almacena el fichero subido en el
servidor
$_FILES['imagen]['error']
Cdigo de error asociado al fichero subido
Subida de ficheros al servidor
PHP
if (is_uploaded_file ($_FILES['imagen']['tmp_name']))
{
$nombreDirectorio = "img/";
$idUnico = time();
$nombreFichero = $idUnico . "-" . $_FILES['imagen']['name'];

move_uploaded_file ($_FILES['imagen']['tmp_name'],
$nombreDirectorio . $nombreFichero);
}
else
print ("No se ha podido subir el fichero\n");
Subida de ficheros al servidor
PHP
if (is_uploaded_file ($_FILES['imagen']['tmp_name']))
{
$nombreDirectorio = "img/";
$nombreFichero = $_FILES['imagen']['name'];

$nombreCompleto = $nombreDirectorio . $nombreFichero;


if (is_file($nombreCompleto))
{
$idUnico = time();
$nombreFichero = $idUnico . "-" . $nombreFichero;
}

move_uploaded_file ($_FILES['imagen']['tmp_name'],
$nombreDirectorio . $nombreFichero);
}
else
print ("No se ha podido subir el fichero\n");
Subida de ficheros al servidor

Ejercicio 4: subida de un fichero al servidor


Ilustra cmo subir ficheros a un servidor, cmo controlar su tamao,
cmo crear un nombre nico para el fichero y cmo almacenarlo en
el lugar deseado
Validacin de formularios

Toda la informacin proveniente de un formulario debe


considerarse por norma como contaminada, y hay que validarla
antes de darla por buena y procesarla
Lo ms eficiente es mostrar los errores sobre el propio formulario
para facilitar su correccin. Procedimiento:

si se ha enviado el formulario:
si hay errores:
Mostrar formulario con errores
si no:
Procesar formulario
fsi
si no:
Mostrar formulario
fsi
Validacin de formularios

Este procedimiento se puede resumir para que slo haya que


mostrar una vez el formulario, bien con los valores por defecto o
con los valores introducidos, y con los errores en su caso:

si se ha enviado el formulario:
validar datos
fsi
si se ha enviado el formulario y no hay errores:
Procesar formulario
si no:
Mostrar formulario con valores por defecto o ya enviados
fsi
Validacin de formularios

a b c)
) )
si se ha enviado el formulario:
validar datos
Esquema de funcionamiento:
fsi

si se ha enviado y no hay errores:


Procesar formulario

si no:
Mostrar formulario
fsi

La 1 vez que se carga la pgina se muestra el formulario (a)


La 2 y sucesivas veces se validan los datos
Si hay errores, se muestra de nuevo el formulario con los errores (b)
Si no hay, se procesa el formulario (c)
Validacin de formularios

Ejercicio 5: validacin de los datos introducidos en un


formulario
Ilustra cmo realizar una validacin de los datos introducidos en un
formulario en el propio formulario
Desarrollo de sitios web
con PHP y MySQL

Tema 4: Acceso a bases de datos


MySQL en PHP

Jos Mariano Gonzlez Romano


[email protected]
Tema 4: Acceso a bases de datos
MySQL en PHP

1. Bases de datos en la Web


2. Instalacin y configuracin de MySQL
3. MySQL
4. Herramientas de administracin: phpMyAdmin
5. Lenguaje SQL
6. Funciones de PHP para el acceso a bases de datos
MySQL
7. Ejercicios
8. Consulta avanzada de tablas
Bases de datos en la Web

Las bases de datos permiten almacenar de una forma


estructurada y eficiente toda la informacin de un sitio web
Ventajas
Proporcionar informacin actualizada
Facilitar la realizacin de bsquedas
Disminuir los costes de mantenimiento
Implementar sistemas de control de acceso
Almacenar preferencias de los usuarios
Bases de datos en la Web

Esquema bsico de un sitio web soportado por bases de datos:


Instalacin y config. de MySQL

Pasos:
Descargar
Descomprimir e instalar
Configurar
Arrancar
Conectar con el servidor
Instalar la extensin para MySQL de PHP
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 1: descargar


Conectarse a la pgina web de MySQL, www.mysql.com
Seleccionar la pestaa Developer Zone y dentro de ella la seccin
Downloads
Elegir la versin estable ms reciente de MySQL Community Server. A
fecha de febrero de 2008 es la 5.0
Seleccionar la plataforma Windows y descargar el archivo comprimido a
una carpeta temporal
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 2: descomprimir e


instalar
Descomprimir el archivo descargado en una carpeta temporal
Ejecutar el archivo setup.exe y seguir las indicaciones:
Seleccionar instalacin tpica
Aceptar la carpeta de instalacin por defecto
Saltar el formulario de registro
Pulsar el botn Finish para terminar la instalacin y pasar a la
configuracin del servidor
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 3: configurar


Al finalizar la instalacin se ejecuta el asistente para la configuracin del
servidor. Seguir sus indicaciones:
Elegir la configuracin estndar
Seleccionar la instalacin como servicio Windows y Marcar la casilla para
lanzar el servidor automticamente al arrancar el sistema
Establecer una contrasea para el administrador (root)
Pulsar el botn Execute para realizar la configuracin
Pulsar el botn Finish para finalizar el asistente
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 4: arrancar


Si se indic el arranque automtico en la configuracin, el servidor se
inicia de forma automtica al arrancar el sistema
En caso contrario hay que iniciarlo manualmente con Inicio > Programas
> MySQL > MySQL Server 5.0 > MySQL Server Instance Config Wizard
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 5: conectar


Formas de establecer la conexin con el servidor:
Desde la lnea de rdenes con Inicio > Programas > MySQL > MySQL
Server 5.0 > MySQL Command Line Client

Enter password: ********


mysql>

mysql> exit

Mediante alguna herramienta que proporcione una interfaz grfica como


phpMyAdmin
Desde una pgina web mediante la interfaz que proporciona MySQL. Es lo
que haremos con la biblioteca de funciones de MySQL que posee PHP
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 5: conectar


Para conectar con el servidor hay que crear antes una cuenta de usuario
y asignarle los correspondientes permisos de acceso. En general para
una base de datos es conveniente definir al menos dos usuarios:
Un usuario annimo que tenga permisos de lectura sobre las tablas que se
estime adecuado
Un usuario administrador que tenga permisos para insertar, modificar o
eliminar elementos de las tablas de la base de datos
En cada conexin hay que indicar el nombre del usuario, su contrasea y
la mquina desde la que se realiza la conexin (localhost si es la propia
mquina donde reside el servidor, que es lo habitual en el acceso desde
la Web)
Instalacin y config. de MySQL

Instalacin y configuracin de MySQL. 6: MySQL-PHP


En PHP 5 no se instala por defecto la extensin para el acceso a bases
de datos MySQL y hay que hacerlo manualmente
Se hace de la siguiente manera:
Editar el fichero php.ini y habilitar la extensin:

extension=php_mysql.dll

Aadir la ruta c:\php al PATH del sistema (ver las instrucciones para
hacerlo en el fichero install.txt que hay en la carpeta c:\php)
MySQL

Caractersticas de MySQL
Modelo relacional, multiusuario
Tipos de datos
Numricos
tinyint, smallint, mediumint, int, integer, bigint
decimal, float, numeric
Fecha y hora
date, time, datetime, year, timestamp
Cadena
char, varchar
tinytext, text, mediumtext, longtext
tinyblob, blob, mediumblob, longblob
enum, set
Debe elegirse adecuadamente el tipo y el tamao de cada campo
MySQL

Operadores
Aritmticos
+, -, *, /
Comparacin
=, !=, <=, <, >=, >, IS NULL, IS NOT NULL
Lgicos
not (!), and (&&), or (||), xor
Funciones
Funciones de cadena
Funciones de comparacin de cadenas
Funciones numricas
Funciones de fecha y hora
Funciones de agregado
Herramientas de administracin:
phpMyAdmin
phpMyAdmin es una herramienta para la administracin del
servidor de bases de datos MySQL
Dispone de una interfaz grfica y es de libre distribucin
Permite realizar todo tipo de operaciones sobre bases de
datos:
crear, borrar y modificar tablas
consultar, insertar, modificar y eliminar datos
definir usuarios y asignar permisos
realizar copias de seguridad
etc
Est escrita en php y se ejecuta desde el navegador
Si est instalada en la carpeta phpmyadmin, se ejecuta
escribiendo en la barra de direcciones del navegador la url
http://localhost/phpmyadmin/
Puede administrar bases de datos locales y remotas
phpMyAdmin
phpMyAdmin

Pasos para su instalacin:


Descargar
Descomprimir
Configurar
Ejecutar
phpMyAdmin

Instalacin y configuracin de phpMyAdmin. 1: descargar


Conectarse a la direccin http://www.phpmyadmin.net
Seleccionar Downloads
Seleccionar la versin ms reciente. A fecha de febrero de 2008 es la
2.11.4
phpMyAdmin

Instalacin y configuracin de phpMyAdmin. 2:


descomprimir
Descomprimir debajo de la carpeta raz de la web, c:\htdocs
Cambiar el nombre de la carpeta creada a phpmyadmin
phpMyAdmin

Instalacin y configuracin de phpMyAdmin. 3: configurar


El fichero de configuracin se llama config.inc.php
Este fichero no existe sino que hay que crearlo. Para ello se hace una
copia del fichero config.default.php, situado en la carpeta donde se haya
instalado phpMyAdmin, y se le pone como nombre config.inc.php
Seguidamente se modifica el fichero config.inc.php
Configuracin tpica para un servidor local:
...
$cfg['Servers'][$i]['host'] = 'localhost'; //MySQL hostname
$cfg['Servers'][$i]['user'] = 'root'; //MySQL user
$cfg['Servers'][$i]['password'] = 'clave'; //MySQL password
...

siendo clave la contrasea asignada al administrador (root) de MySQL


durante su instalacin
phpMyAdmin

Instalacin y configuracin de phpMyAdmin. 4: ejecutar


Ejecutar Apache
Abrir el navegador y teclear la url
http://localhost/phpmyadmin/index.php
Lenguaje SQL

SQL (Structured Query Language) es el lenguaje que se utiliza


para comunicarse con la base de datos
Procedimiento de comunicacin con la base de datos:
Pgina orden SQL
PHP
Base de
datos
resultado
Lenguaje SQL
Las instrucciones ms habituales son SELECT, INSERT,
UPDATE, DELETE
Veamos su sintaxis bsica y algunos ejemplos de uso
Para ello utilizaremos una tabla noticias con cinco campos: un
identificador nico de la noticia, el ttulo de la noticia, el texto de
la noticia, la categora de la noticia y la fecha de publicacin de
la noticia

noticias
id

ttulo

texto

categora

fecha
Lenguaje SQL

Sintaxis:
SELECT SELECT expresin FROM tabla
[WHERE condicin]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] row_count | row_count OFFSET offset]

Ejemplo:
SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC
Obtiene las noticias del da con un tope mximo de 10, ordenadas de la ms
reciente a la ms antigua
Lenguaje SQL

Sintaxis:
INSERT INSERT [INTO] nombre_tabla [(nombre_columna,...)]
VALUES ((expresin | DEFAULT),...), (...),...
INSERT [INTO] nombre_tabla
SET nombre_columna=(expresin | DEFAULT), ...

Ejemplo:
INSERT INTO noticias (id, titulo, texto, categoria, fecha) VALUES (37, Nueva promocin en
Nervin, 145 viviendas de lujo en urbanizacin ajardinada situadas en un entorno privilegiado,
promociones, CURDATE())
Inserta una noticia con los valores indicados
Lenguaje SQL

Sintaxis:
UPDATE UPDATE nombre_tabla
SET nombre_columna1=expr1 [, nombre_columna2=expr2 ...]
[WHERE condicin]
[ORDER BY ...]
[LIMIT row_count]

Ejemplo:
UPDATE noticias SET categoria = ofertas WHERE id=37
Modifica la categora de la noticia con id=37 de la tabla
Lenguaje SQL

Sintaxis:
DELETE DELETE FROM nombre_tabla
[WHERE condicin]
[ORDER BY ...]
[LIMIT row_count]

Ejemplo:
DELETE FROM noticias WHERE fecha < CURDATE()-10
Borra las noticias con ms de 10 das de antigedad
Funciones de PHP para el acceso
a bases de datos MySQL

Los pasos para acceder desde PHP a una base de datos son
los siguientes:
Conectar con el servidor de bases de datos
Seleccionar una base de datos
Enviar la instruccin SQL a la base de datos
Obtener y procesar los resultados
Cerrar la conexin con el servidor de bases de datos
Acceso a bases de datos MySQL

Las funciones concretas de MySQL que realizan estas


operaciones son:
Conectar con el servidor de bases de datos:
mysql_connect()
Seleccionar una base de datos:
mysql_select_db()
Enviar la instruccin SQL a la base de datos:
mysql_query()
Obtener y procesar los resultados:
mysql_num_rows() y mysql_fetch_array()
Cerrar la conexin con el servidor de bases de datos:
mysql_close()
Acceso a bases de datos MySQL

Conectar con el servidor de bases de datos: mysql_connect()


Devuelve un identificador de la conexin en caso de xito y false en
caso contrario

Sintaxis:

$conexion = mysql_connect (servidor, username, password);


Ejemplo:

$conexion = mysql_connect (localhost, cursophp, )


or die (No se puede conectar con el servidor);

$conexion = mysql_connect (localhost, cursophp-ad, php.hph)


or die (No se puede conectar con el servidor);
Acceso a bases de datos MySQL

Seleccionar una base de datos: mysql_select_db()


Devuelve true en caso de xito y false en caso contrario
Sintaxis:

mysql_select_db (database);
Ejemplo:

mysql_select_db (lindavista)
or die (No se puede seleccionar la base de datos);
Acceso a bases de datos MySQL

Enviar la instruccin SQL a la base de datos: mysql_query()


Devuelve un identificador o true (dependiendo de la instruccin) si la
instruccin se ejecuta correctamente y false en caso contrario
Sintaxis:

$consulta = mysql_query (instruccin, $conexion);


Ejemplo:

$consulta = mysql_query (select * from noticias, $conexion)


or die (Fallo en la consulta);
Acceso a bases de datos MySQL

Obtener y procesar los resultados: mysql_num_rows(),


mysql_fetch_array()
En el caso de que la instruccin enviada produzca unos resultados,
mysql_query() devuelve las filas de la tabla afectadas por la instruccin
mysql_num_rows() devuelve el nmero de filas afectadas
Para obtener las distintas filas del resultado se utiliza la funcin
mysql_fetch_array(), que obtiene una fila del resultado en un array
asociativo cada vez que se invoca
Sintaxis:

$nfilas = mysql_num_rows ($consulta);


$fila = mysql_fetch_array ($consulta);
Acceso a bases de datos MySQL

Ejemplo:
noticias
1 Ttulo 1 Texto 1 ofertas 05/02/2004

2 Ttulo 2 Texto 2 promociones 05/02/2004

3 Ttulo 3 Texto 3 promociones 04/02/2004

4 Ttulo 4 Texto 4 costas 01/02/2004

5 Ttulo 5 Texto 5 promociones 31/01/2004

Instruccin:
select * from noticias where categoria=promociones
Acceso a bases de datos MySQL

noticias
Ejemplo:
1 Ttulo 1 Texto 1 ofertas 05/02/2004

2 Ttulo 2 Texto 2 promociones 05/02/2004

3 Ttulo 3 Texto 3 promociones 04/02/2004 $consulta


4 Ttulo 4 Texto 4 costas 01/02/2004
$nfilas=3
5 Ttulo 5 Texto 5 promociones 31/01/2004

Instruccin:
select * from noticias where categoria=promociones
Acceso a bases de datos MySQL

Obtencin de las filas:

$nfilas = mysql_num_rows ($consulta);


if ($nfilas > 0)
{
for ($i=0; $i<$nfilas; $i++)
{
$fila = mysql_fetch_array ($consulta);
procesar fila i-sima de los resultados
}
}
Acceso a bases de datos MySQL

Obtener los resultados: mysql_num_rows(),


mysql_fetch_array()
Para acceder a un campo determinado de una fila se usa la siguiente
sintaxis:
$fila[nombre_campo] // por ser un array asociativo
$fila[$i] // $i=ndice del campo desde 0

Ejemplo:

for ($i=0; $i<$nfilas; $i++)


{
$fila = mysql_fetch_array ($consulta);
print Ttulo: . $fila[titulo];
print Fecha: . $fila[fecha];
}
Acceso a bases de datos MySQL

Cerrar la conexin con el servidor de bases de datos:


mysql_close()
Sintaxis:

mysql_close ($conexion);
Ejemplo

mysql_close ($conexion);
Ejercicios

Ejercicio 1: consulta de noticias


Ejercicio simple de acceso a una tabla de una base de datos. Ilustra
cmo conectar con una base de datos, enviar una consulta, recuperar
los resultados y mostrarlos en pantalla.
Pasos previos:
1. Crear la base de datos lindavista
2. Crear la tabla noticias en la base de datos lindavista
3. Crear el usuario cursophp (sin contrasea)
4. Dar al usuario cursophp permiso SELECT sobre la tabla noticias de la
base de datos lindavista
Ejercicios

Ejercicio 2: encuesta
Ilustra cmo actualizar una tabla y cmo generar grficos simples
Pasos previos:
1. Crear la tabla votos en la base de datos lindavista
2. Dar al usuario cursophp permisos SELECT y UPDATE sobre la tabla
votos de la base de datos lindavista
Ejercicios

Ejercicio 3: insercin de noticias


Se crear un formulario para insertar las noticias en la base de datos
Pasos previos:
1. Crear el usuario cursophp-ad (contrasea: php.hph)
2. Dar al usuario cursophp-ad permisos SELECT e INSERT sobre la tabla
noticias de la base de datos lindavista
Ejercicios

Ejercicio 4: eliminacin de noticias


Se crear un formulario para eliminar noticias de la base de datos
Primero se seleccionarn las noticias a eliminar de entre todas las
existentes y a continuacin se eliminarn
Paso previo:
1. Dar al usuario cursophp-ad permiso DELETE sobre la tabla noticias de la
base de datos lindavista
Consulta avanzada de tablas

Objetivo:
mostrar los resultados de la consulta divididos en bloques de un
nmero determinado de elementos (por ejemplo, de 5 en 5)
Requisitos:
Recuperar un nmero limitado de elementos de la tabla
Implementar un mecanismo de navegacin que permita avanzar al
siguiente o volver al anterior bloque de elementos
Consulta avanzada de tablas

Para recuperar un nmero fijo de elementos de una tabla se


utiliza la opcin LIMIT de la orden SELECT. As, por ejemplo,
SELECT * from noticias LIMIT 0, 5

recupera los 5 primeros elementos de la tabla. Y en general,

SELECT * from noticias LIMIT $comienzo, $num

recupera $num elementos a partir de la posicin $comienzo


Consulta avanzada de tablas

La variable $num tendr un valor constante (en este caso 5),


mientras que la variable $comienzo se incrementar o
decrementar en 5 unidades al pasar a la pgina siguiente o
anterior
Para ello se pasar la variable como parmetro en el enlace
asociado al botn correspondiente
Por ejemplo, el cdigo para el botn siguiente ser:
"<A HREF='" . $_SERVER['PHP_SELF'] . "?comienzo=" . ($comienzo + $num) .
"'>Siguiente</A>"

Habr que comprobar previamente que el nuevo valor de


comienzo es vlido, es decir, que se encuentra dentro de los
lmites de la tabla devuelta por la consulta
Consulta avanzada de tablas

Ejercicio 5: consulta de noticias con paginado de resultados


Ejercicio que ilustra cmo dividir los resultados de una consulta en varias
pginas y permitir desplazarse entre ellas
Consulta avanzada de tablas

Objetivo:
Mostrar los resultados de una consulta de manera que se puedan filtrar
en funcin del valor de una determinada columna de la tabla
Requisitos:
Recuperar de una tabla los elementos que cumplan una determinada
condicin
Permitir seleccionar un valor de entre los valores posibles de una
columna
Consulta avanzada de tablas
Para recuperar los elementos de una tabla que cumplen una
condicin se utiliza la opcin WHERE de la orden SELECT. Por
ejemplo,

SELECT * from noticias WHERE categoria=ofertas

recupera las noticias cuya categora tiene el valor ofertas. Y en


general,

SELECT * from noticias WHERE categoria =$categoria

recupera las noticias cuya categora tiene el valor dado por la


variable $categoria
Consulta avanzada de tablas

Ejercicio 6: consulta de noticias con filtrado de resultados


Ejercicio que ilustra cmo mostrar los resultados de una consulta filtrados
en funcin del valor de una columna de tipo enumerado con actualizacin
manual al pulsar un botn
Consulta avanzada de tablas

Objetivo:
Modificar el ejercicio anterior para que los resultados se actualicen de
forma automtica al seleccionar un nuevo valor para la columna
Requisitos:
Obtener automticamente los valores de una columna de tipo enumerado
a partir de la tabla
Utilizar cdigo JavaScript para detectar un cambio en la opcin
seleccionada de un elemento de tipo SELECT
Consulta avanzada de tablas
Funcin JavaScript que actualiza una pgina en funcin de la
opcin seleccionada en el elemento SELECT de nombre
categoria del formulario de nombre selecciona:

<SCRIPT LANGUAGE='JavaScript'>

<!--

function actualizaPagina ()

i = document.forms.selecciona.categoria.selectedIndex;

categoria =

document.forms.selecciona.categoria.options[i].value;

window.location = muestra_noticias.php?categoria=' +

categoria;

}
Consulta avanzada de tablas

Para ejecutar la funcin JavaScript es preciso asociarla al


elemento SELECT a travs del evento ONCHANGE, que se
activa cuando se modifica la opcin seleccionada:

<SELECT NAME='categoria' ONCHANGE='actualizaPagina()'>


Consulta avanzada de tablas

Es conveniente que la opcin seleccionada aparezca marcada


por defecto al actualizar la pgina
Para ello es preciso generar las opciones del elemento SELECT
de forma automtica
De esta manera se puede comparar cada una de las opciones
con el valor proveniente del formulario y colocar el atributo
SELECTED a la que corresponda
Consulta avanzada de tablas

En el formulario del ejercicio anterior los valores de los campos de


tipo enumerado (ENUM) estn escritos directamente en el propio
cdigo. As, para la categora de noticia se tiene:

<SELECT NAME=categoria">

<OPTION VALUE=promociones">promociones

<OPTION VALUE=ofertas" SELECTED>ofertas

<OPTION VALUE=costas">costas

</SELECT>

Este hecho no es muy deseable ya que si se modifican los


valores de la categora en la tabla hay que modificar tambin el
cdigo del formulario
Consulta avanzada de tablas
Lo ideal es tomar los valores automticamente de la tabla en
lugar de escribirlos a mano en el cdigo. Para ello se utiliza la
siguiente instruccin SQL:

SHOW columns FROM noticias LIKE categoria

que devuelve una tabla con las propiedades del campo categoria. El
elemento [1] de esta tabla contiene lo siguiente:

enum(promociones",ofertas",costas")

A partir de esta informacin podemos obtener los valores del tipo


enumerado y generar las opciones del elemento SELECT. Slo
Consulta avanzada de
tablas

Ejercicio 7: consulta de noticias con filtrado de resultados


Ejercicio que ilustra cmo mostrar los resultados de una consulta filtrados
en funcin del valor de una columna de tipo enumerado con actualizacin
automtica a travs de JavaScript
Desarrollo de sitios web
con PHP y MySQL

Tema 5: Sesiones

Jos Mariano Gonzlez Romano


[email protected]
Tema 5: Sesiones

1. Introduccin
2. Manejo de sesiones
3. Autenticacin de usuarios
Introduccin

A veces es necesario mantener el estado de una conexin entre


distintas pginas o entre distintas visitas a un mismo sitio
Ejemplos: aplicaciones personalizadas, carrito de la compra, control de
acceso
HTTP es un protocolo sin estado: cada conexin entre el cliente
y el servidor es independiente de las dems
Para mantener el estado entre diferentes conexiones hay que
establecer lo que se conoce como una sesin
Las sesiones permiten disponer de unas variables con valores
persistentes durante toda la conexin del usuario. Estas variables
pueden almacenarse en el cliente mediante cookies o en el
servidor
PHP dispone de una biblioteca de funciones para la gestin de
sesiones
Manejo de sesiones

Funciones de PHP para el manejo de sesiones (register_globals


On)
session_start ()
inicializa una sesin y le asigna un identificador de sesin nico. Si la
sesin ya est iniciada, carga todas las variables de sesin
session_register (variable)
registra una variable de sesin
session_unregister (variable)
elimina una variable de sesin
session_is_registered (variable)
comprueba si una variable est registrada. Devuelve true en caso
afirmativo y false en caso contrario
session_destroy ()
cierra una sesin
Manejo de sesiones

Funciones de PHP para el manejo de sesiones (register_globals


Off)
session_start ()
inicializa una sesin y le asigna un identificador de sesin nico. Si la
sesin ya est iniciada, carga todas las variables de sesin
$_SESSION[nombre] = valor;
registra una variable de sesin
unset ($_SESSION[nombre]);
elimina una variable de sesin
if (isset($_SESSION[nombre]))
comprueba si una variable est registrada. Devuelve true en caso
afirmativo y false en caso contrario
session_destroy ()
cierra una sesin
Manejo de sesiones

El manejo de las sesiones se realiza de la siguiente forma:


Todas las pginas deben realizar una llamada a session_start() para
cargar las variables de la sesin
Esta llamada debe estar colocada antes de cualquier cdigo HTML
Conviene llamar a session_destroy() para cerrar la sesin
Manejo de sesiones

Ejercicio 1: ejemplo simple de sesiones


Ilustra cmo registrar variables, acceder a ellas y posteriormente
eliminarlas
Autenticacin de usuarios

Una cuestin frecuente en un sitio web es controlar el acceso


de los usuarios a una zona determinada del mismo
La autenticacin de usuarios puede realizarse en el propio
servidor web. As, en Apache los ficheros .htaccess permiten
limitar el acceso a un determinado recurso del servidor
Una alternativa ms compleja pero ms flexible es utilizar PHP
junto con una base de datos para controlar el acceso de los
usuarios. Para ello se utilizan las sesiones
Autenticacin de usuarios

Esquema de una pgina que utiliza sesiones para autenticar


usuarios:
<?PHP
session_start ();
?>
<HTML LANG="es">
<HEAD> ... </HEAD>
<BODY>
<?PHP
if (isset($_SESSION["usuario_valido"]))
// Cdigo para usuarios autorizados
else
// Mensaje de acceso no autorizado
?>
</BODY>
</HTML>
Autenticacin de usuarios

Ejercicio 2: autenticacin de usuarios


Para nuestro sistema de gestin de noticias se va a restringir el acceso a
las operaciones a unos usuarios identificados por un nombre y una
contrasea
La informacin de los usuarios autorizados se almacenar en una tabla
de la base de datos
Las contraseas de los usuarios se almacenarn en forma encriptada
Esquema:
Autenticacin de usuarios

login

mostrar men mostrar


formulario error

consultar insertar eliminar logout


noticias noticia noticia
Autenticacin de usuarios
inicio

no
enviado formulario
s
no
datos correctos

iniciar sesin

no error
mostrar formulario sesin iniciada mostrar error
s

men

consultar noticias insertar noticia eliminar noticia logout


Desarrollo de sitios web
con PHP y MySQL

Tema 6: Creacin de imgenes

Jos Mariano Gonzlez Romano


[email protected]
Creacin de imgenes

1. Introduccin
2. Imgenes dinmicas en PHP
3. Funciones de biblioteca para la creacin de imgenes
4. Ejercicios
Introduccin

PHP dispone de una biblioteca de funciones para la generacin


dinmica de imgenes
Estas funciones son particularmente interesantes para generar
grficos estadsticos actualizados al instante
Formatos: GIF, PNG, JPEG
Configuracin:
Requiere el uso de la librera php_gd2.dll (Windows) o gd.so (Unix, Linux)
Debe activarse la extensin correspondiente en el fichero php.ini:

extension = php_gd2.dll
extension = gd.so
Imgenes dinmicas en PHP

imagen.php
<?PHP
Procedimiento general:
header (Content-type: image/png);

$imagen = imagecreate (300, 200); // ancho x alto

// instrucciones grficas

imagepng ($imagen);
imagedestroy ($imagen);
?>

llamada
<IMG SRC=imagen.php>
Imgenes dinmicas en PHP

(0,0) x

(ancho,alto)
Funciones de biblioteca

Colores
$color = imagecolorallocate ($imagen, R, G, B)
Formas geomtricas
imagerectangle ($imagen, x0, y0, x1, y1, $color)
imagefilledrectangle
imagearc ($imagen, xc, yc, ancho, alto, gi, gf, $color)
imagefilledarc

(xc, yc)
(x0, y0)
gi

(x1, y1)
gf
Funciones de biblioteca

Fondos
$imagen = imagecreatefrompng (imagen.png)
$imagen = imagecreatefromjpeg (imagen.jpg)
Textos
imagestring ($imagen, tamao, x, y, $texto, $color)
Guardar imgenes
imagepng ($imagen, imagen.png);
imagejpeg ($imagen, imagen.jpg);
Ejercicios

Ejercicio 1: creacin de imgenes simples


Ilustra cmo crear un grfico de tarta
Ejercicios

Ejercicio 2: encuesta
Ilustra cmo utilizar un grfico de tarta para mostrar los resultados de una
encuesta

También podría gustarte