You are on page 1of 39

1 / 39 Yamil Quiones Nieto

ING. Yamil Quiones Nieto


Jefe de Proyectos
PHP
2 / 39 Yamil Quiones Nieto
AGENDA
Acceso a Formulario
Mysql
Sesiones
3 / 39 Yamil Quiones Nieto
Desde PHP se puede acceder fcilmente a los
datos introducidos desde un formulario HTML
Vemoslo con un ejemplo simple
ACCESOS A FORMULARIO
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
print (La edad es: $edad);
?>
</BODY>
</HTML>
4 / 39 Yamil Quiones Nieto
ACCESOS A FORMULARIO
5 / 39 Yamil Quiones Nieto
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];
ACCESOS A FORMULARIO
6 / 39 Yamil Quiones Nieto
ACCESOS A FORMULARIO
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>
7 / 39 Yamil Quiones Nieto
Acceso a los diferentes tipos de elementos de entrada
de formulario
Elementos de tipo INPUT
TEXT
RADIO
CHECKBOX
BUTTON
FILE
HIDDEN
PASSWORD
SUBMIT
Elemento SELECT
Simple / mltiple
Elemento TEXTAREA
ACCESOS A FORMULARIO
8 / 39 Yamil Quiones Nieto
TEXT
ACCESOS A FORMULARIO
Introduzca la cadena a buscar:
<INPUT TYPE="text" NAME="cadena" VALUE="valor por
defecto" SIZE="20">
<?PHP
$cadena = $_REQUEST[cadena];
print ($cadena);
?>
9 / 39 Yamil Quiones Nieto
RADIO
ACCESOS A FORMULARIO
Sexo:
<INPUT TYPE="radio" NAME=sexo" VALUE=M
CHECKED>Mujer
<INPUT TYPE="radio" NAME=sexo" VALUE=H">Hombre
<?PHP
$sexo = $_REQUEST[sexo];
print ($sexo);
?>
10 / 39 Yamil Quiones Nieto
CHECKBOX
ACCESOS A FORMULARIO
<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)
print ($extra<BR>\n);
?>
11 / 39 Yamil Quiones Nieto
BUTTON
Accesos a Formulario
<INPUT TYPE="button" NAME=actualizar"
VALUE="Actualizar datos">
<?PHP
$actualizar = $_REQUEST[actualizar];
if ($actualizar)
print ("Se han actualizado los datos");
?>
12 / 39 Yamil Quiones Nieto
FILE
ACCESOS A FORMULARIO
<FORM ACTION="procesa.php" METHOD="post
ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="fichero">
</FORM>
13 / 39 Yamil Quiones Nieto
HIDDEN
ACCESOS A FORMULARIO
<?PHP
print(<INPUT TYPE=hidden
NAME=username VALUE=$usuario>\n);
?>
<?PHP
$username = $_REQUEST[username];
print ($username);
?>
14 / 39 Yamil Quiones Nieto
PASSWORD
ACCESOS A FORMULARIO
Contrasea: <INPUT TYPE="password"
NAME="clave">
<?PHP
$clave = $_REQUEST[clave];
print ($clave);
?>
15 / 39 Yamil Quiones Nieto
SUBMIT
ACCESOS A FORMULARIO
<INPUT TYPE="submit" NAME="enviar" VALUE="Enviar
datos">
<?PHP
$enviar = $_REQUEST[enviar];
if ($enviar)
print ("Se ha pulsado el botn de enviar");
?>
16 / 39 Yamil Quiones Nieto
SELECT SIMPLE
ACCESOS A FORMULARIO
Color:
<SELECT NAME=color">
<OPTION VALUE=rojo" SELECTED>Rojo
<OPTION VALUE=verde">Verde
<OPTION VALUE=azul">Azul
</SELECT>
<?PHP
$color = $_REQUEST[color];
print ($color);
?>
17 / 39 Yamil Quiones Nieto
SELECT MULTIPLE
ACCESOS A FORMULARIO
Idiomas:
<SELECT MULTIPLE SIZE="3" NAME="idiomas[]">
<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);
?>
18 / 39 Yamil Quiones Nieto
TEXTAREA
ACCESOS A FORMULARIO
Comentario:
<TEXTAREA COLS=50" ROWS=4" NAME="comentario">
Este libro me parece ...
</TEXTAREA>
<?PHP
$comentario = $_REQUEST[comentario];
print ($comentario);
?>
19 / 39 Yamil Quiones Nieto
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
MYQSL
20 / 39 Yamil Quiones Nieto
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
MYSQL
21 / 39 Yamil Quiones Nieto
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
22 / 39 Yamil Quiones Nieto
PHPMYADMIN
23 / 39 Yamil Quiones Nieto
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:
LENGUAJE SQL
Pgina
PHP
Base de
datos
orden SQL
resultado
24 / 39 Yamil Quiones Nieto
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
LENGUAJE SQL
ttulo
texto
categora
noticias
id
fecha
25 / 39 Yamil Quiones Nieto
Sintaxis:
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 de10,
ordenadas de la ms reciente a la ms antigua
LENGUAJE SQL
26 / 39 Yamil Quiones Nieto
INSERT
Sintaxis:
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
27 / 39 Yamil Quiones Nieto
UPDATE
Sintaxis:
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
28 / 39 Yamil Quiones Nieto
DELETE
Sintaxis:
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
LENGUAJE SQL
29 / 39 Yamil Quiones Nieto
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
PHP - MYSQL
30 / 39 Yamil Quiones Nieto
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()
PHP - MYSQL
31 / 39 Yamil Quiones Nieto
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);
PHP - MYSQL
32 / 39 Yamil Quiones Nieto
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);
PHP - MYSQL
33 / 39 Yamil Quiones Nieto
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);
PHP - MYSQL
34 / 39 Yamil Quiones Nieto
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);
PHP - MYSQL
35 / 39 Yamil Quiones Nieto
Cerrar la conexin con el servidor de bases de datos:
mysql_close()
Sintaxis:
mysql_close ($conexion);
Ejemplo
mysql_close ($conexion);
PHP - MYSQL
36 / 39 Yamil Quiones Nieto
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
SESSIONES
37 / 39 Yamil Quiones Nieto
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
SESSIONES
38 / 39 Yamil Quiones Nieto
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
SESSIONES
39 / 39 Yamil Quiones Nieto
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
SESSIONES

You might also like