HTML, PHP y bases de datos
Estrella Pulido Cañabate
HTML
1
Estructura de un documento HTML
Estructura de un documento HTML
<HTML>
<HEAD>
<TITLE>Zen and Tumbolia</TITLE>
</HEAD>
<BODY>
The Zen monk Bassui wrote a letter to
one of his disciples who was about
to die, and...
</BODY>
</HTML>
Formularios HTML
(cid:132) Formulario empieza con <FORM> y termina con
</FORM>
(cid:132) Dos atributos obligatorios
(cid:132) METHOD
(cid:132) especifica cómo se pasan los datos al programa que los
procesará
(cid:132) GET – añadidos al final de la URL
(cid:132) POST – como un paquete aparte ⇐
(cid:132) ACTION
(cid:132) URL de la página que se cargará cuando el usuario pulse el
botón ENVIAR
2
Campos INPUT
<INPUT TYPE=“tipo” NAME=“nombre” VALUE=“valor_defecto>
(cid:132) text - una línea de texto
(cid:132) password - aparecen *
(cid:132) checkbox - opciones no excluyentes
(cid:132) radio - opciones excluyentes
(cid:132) reset - limpia el contenido del formulario
(cid:132) submit - envía datos a la aplicación
(cid:132) image - submit con imagen en vez de botón
(cid:132) hidden – son invisibles y sirven para enviar información al
programa que procesa la información del formulario
Campo SELECT
<SELECT NAME=“nombre” SIZE=“N” MULTIPLE>
<OPTION> alternativa 1
<OPTION> alternativa 2
....
<OPTION> alternativa N
</SELECT>
(cid:132) lista desplegable
(cid:132) SIZE - número de elementos visibles
(cid:132) MULTIPLE - se pueden elegir más de un
elemento
3
Campo TEXTAREA
<TEXTAREA NAME=“nombre” ROWS=“filas visibles”
COLS=“columnas visibles”>
Texto por defecto
...
</TEXTAREA>
(cid:132) Campos de entrada de más de una
línea
(cid:132) Se puede hacer “scrolling”
Ejemplo
4
Ejemplo de uso
<form name="inscripcion" method="post" action="mailto:
[email protected]">
Nombre:
<br>
<input type="text" name="nombre" size="20" maxlength="20">
<br><br>
Apellidos:
<br>
<input type="text" name="apellidos" maxlength="60" size="60">
<br><br>
Facultad:
<br>
<input type="text" name="facultad" size="60" maxlength="60">
<br><br>
Estudios:
<br>
<select name="estudios">
<option>Primer Ciclo</option>
<option>Segundo Ciclo</option>
<option>Doctorado</option>
</select>
<br><br>
<input type="submit" name="Submit" value="Enviar">
</form>
Definición de tablas
(cid:132) Inicio y fín de tabla
<TABLE> </TABLE>
(cid:132) Definición de filas
</TR>
(cid:132) Definición de celdas
<TR>
(cid:132) celdas de datos
(cid:132) celdas cabecera
<TD> </TD>
<TH> </TH>
5
<html>
<head> <title>Formulario de pedidos</title> </head>
<form action="procespedido.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=150>Artículo</td> <td width=15>Cantidad</td>
</tr>
<tr>
formulario.html
<td>Neumáticos</td> <td align="center"><input type="text" name="neumcant" size="3“
maxlength="3"></td>
</tr>
<tr>
<td>Aceite</td> <td align="center"><input type="text" name="aceitecant" size="3"
maxlength="3"></td>
</tr>
<tr>
<td>Bujías</td> <td align="center"><input type="text" name="bujcant" size="3“
maxlength="3"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Enviar Pedido"></td>
</tr>
</table>
</form>
</html>
6
PHP
procespedido.php
<html>
<head>
<title>Resultados del pedido</title>
</head>
<body>
<h1>Resultados del pedido</h1>
<?php
echo '<p>Pedido recibido</p>';
?>
</body>
</html>
7
Notas sobre el código
(cid:132) Código PHP
<?php
...
?>
(cid:132) Instrucciones terminan en ;
(cid:132) echo – imprime cadena que aparece en
argumento
8
Comentarios
(cid:132) En HTML
<!– El comentario va aquí. -->
(cid:132) En PHP
# Esto es un comentario.
// Esto también es un comentario.
/* Esto es un comentario más largo
que ocupa dos líneas */
procespedido.php
<html>
<head>
<title>Resultados del pedido</title>
</head>
<body>
<h1>Resultados del pedido</h1>
<?php
echo '<p>Pedido procesado a las ';
echo date('H:i, jS F');
echo '</p>';
?>
</body>
</html>
9
La función date()
date('H:i, jS F')
(cid:132) Recibe como argumento una cadena de
formato
(cid:132) Cada letra de la cadena representa una parte
de la fecha y hora
(cid:132) H es la hora
(cid:132) i son los minutos
(cid:132) j es el día del mes
(cid:132) S representa el sufijo "th“
(cid:132) F es el mes
10
procespedido.php
<html>
<head><title>Resultados del pedido</title></head>
<body>
<h1>Resultados del pedido</h1>
<?php
echo '<p>Pedido procesado a las ';
echo date('H:i, jS F');
echo '</p>';
//crear nombres de variable cortos
$neumcant = $_REQUEST['neumcant'];
$aceitecant = $_REQUEST['aceitecant'];
$bujcant = $_REQUEST['bujcant'];
echo '<p>Tu pedido es el siguiente: </p>';
echo $neumcant. ' neumáticos<br />';
echo $aceitecant. ' botellas de aceite<br />';
echo $bujcant. ' bujías<br />';
?>
</body>
</html>
11
Concatenación de cadenas
(cid:132) Operador de concatenación .
echo $neumcant. ' neumáticos<br />';
Variables
(cid:132) Posiciones de memoria donde se almacenan
valores
(cid:132) Ocho tipos
(cid:132) Escalar: booleana, entera, punto flotante, cadenas
(cid:132) No escalar: vectores, objetos
(cid:132) Recursos
(cid:132) NULL
(cid:132) Se les puede asignar valor con =
(cid:132) No hay que declararlas
12
Reglas sintácticas para nombres de variables
(cid:132) Deben empezar con $
(cid:132) Pueden contener caracteres, números y
_
(cid:132) El primer carácter después de $ no
puede ser un número
(cid:132) Sensibles a mayúsculas y minúsculas
Paso de valores
(cid:132) HTML
(cid:132) Formulario
<input type=“text” name=“dni”>
(cid:132) Desde enlace
<a href=“procesa.php”?dni=<? =$dni ?>
&nombre=...
(cid:132) En fichero php
$dni = $_REQUEST[‘dni’]
13
Visualización de valores
(cid:132) En general
echo $dni
(cid:132) Dentro de código HTML
<? =$dni ?>
(cid:132) Ejemplo
<tr><td>DNI
<tr><td><? =$dni ?>
Instrucciones condicionales
if( $canttotal == 0 )
{
echo 'El pedido está vacío<br />';
}
else
{
echo $neumcant.' neumáticos<br />';
echo $aceitecant.' botellas de aceite<br />';
echo $bujcant.' bujías<br />';
}
14
Bucles while
while( condición ) expresión;
$num = 1;
while ($num <= 5 )
{
echo $num."<br />";
$num++;
}
Bucles for
for( expresión1; condición; expresión2)
expresión3;
<?
for ($distancia = 50; $distancia <= 250; $distancia +=
50)
{
echo "<tr>\n <td align='right'>$distancia</td>\n";
echo " <td align=right>". $distancia / 10 ."</td>\n</tr>\n";
}
?>
15
Acceso a BD con PHP
Acceso a BD con PHP
(cid:132) Los pasos básicos para consultar una
base de datos en la web son:
(cid:132) Establecer una conexión con la base de
datos apropiada.
(cid:132) Consultar la base de datos.
(cid:132) Extraer los resultados.
(cid:132) Mostrar los resultados al usuario.
(cid:132) Cerrar la conexión
16
Establecer una conexión con la BD
(cid:132) Función pg_connect(): Establece una
conexión con la BD.
(cid:132) Normalmente recibe como argumentos el
nombre de la máquina donde se ejecuta
PostgreSQL, el usuario y la contraseña con
los que conectarse.
$con = pg_connect(“dbname=DBTEST user=alumnodb
password=eps1”);
if (!$con)
{
echo 'Error: No se pudo conectar a la base de datos';
exit;
}
Consultar la BD
(cid:132) Se realiza la consulta mediante la función
pg_query()
$resultado = pg_query($con, "SELECT autor, email
FROM autores");
if (!$resultado) {
echo “Ocurrió un error.\n";
exit;
}
La función devuelve un identificador del
resultado (que permite extraer los resultados
de la consulta) en caso de éxito y falseen el
caso de que se haya producido algún fallo.
17
Extraer los resultados
(cid:132) Cada fila de resultado se procesa con la
función pg_fetch_row()
(cid:132) Devuelve la fila como un vector
(cid:132) Cada columna es un elemento del vector
(empezando a partir de la posición 0)
while ($fila = pg_fetch_row($resultado)) {
echo "Autor: $fila[0] E-mail: $fila[1]";
echo "<br />\n";
}
?>
Extraer los resultados (II)
(cid:132) La función pg_num_rows() devuelve
el número filas obtenidas en la
consulta.
$num_filas = pg_num_rows($resultado);
18
Introducir nueva información en la BD
(cid:132) Se realizan los mismos pasos que
empleamos para consultar la BD.
(cid:132) Como diferencia, la consulta se
compondrá de un INSERT, UPDATE o
DELETE en lugar de SELECT
(cid:132) Tras ejecutar pg_query() se puede
llamar a la función pg_num_rows() para
conocer cuántas filas se han
introducido, actualizado o borrado.
Cerrar la conexión
pg_free_result($con)
19
Secuencias en postgreSQL
(cid:132) Para crear una columna cuyo valor se
autoincremente se utiliza el tipo de
datos serial
CREATE TABLE curso (
numero serial,
....)
(cid:132) Para insertar
INSERT INTO curso(numero, ....)
VALUES(NEXTVAL(‘curso_numero_seq’),...)
tabla
columna
Ventanas de aviso
echo "
<SCRIPT language='JavaScript'>
<!--
alert('¡Registro borrado!');
-->
</script>
";
20
En el laboratorio
(cid:132) Todos los ficheros php y html en
carpeta public_html
(cid:132) En navegador
http://localhost/~usuario/fichero.php
21
Comentarios de: HTML, PHP y bases de datos (0)
No hay comentarios