Diseño de una Aplicación
-
Como ejemplo de creación de contenido dinámico haremos una sencilla aplicación para el manejo de la libreta personal.
Aunque es una aplicación muy sencilla, ilustra la interacción con una base de datos y esto es aplicable a la generación de diferentes tipos de contenido dinámico.
Adición de datos
-
Para adicionar datos necesitamos primero un formulario para capturar la información y luego un programa que reciba esta información y la almacene en la base de datos.
El código para el formulario es:
</head>
<body>
<center>
<form action="grabar.php" method="POST">
<pre>
<h1>Datos Personales</h1>
Nombre: <input type="text" size="30" name="Nombre">
Direccion: <input type="text" size="30" name="Direccion">
Teléfono: <input type="text" size="30" name="Telefono">
Email: <input type="text" size="30" name="Email">
<input type="submit" value="Aceptar"> <input type="reset" value="Borrar">
</pre>
</form>
</center>
</body>
</html>
Y en pantalla se verá así:
Ahora necesitamos el programa que reciba los datos y los grabe.
Por simplicidad se usa un programa aparte para grabar y no se han colocado validaciones respecto a los datos o mejoras en la presentación, solo graba si la información esta bien o indica que no pudo grabar si hay algún error.
El código para grabar.php es:
<?
$Error = @msql("Libreta",
"INSERT INTO Persona VALUES('$Nombre','$Direccion','$Telefono','$Email')");
if($Error == 0);
echo "La información ha sido almacenada";
else;
echo "Se produjo un error al grabar";
endif;
>
Con esto es posible ya introducir información en la tabla Persona, ahora veremos como consultar la información de la tabla.
Consulta
-
Esta consulta muestra todos los registros de la tabla Persona y los presenta en formato tabular.
No es recomendable este tipo de consulta para tablas grandes, en esos casos es necesario obtener del usuario un criterio de selección y limitar el numero de registros que se presentan cada vez a un numero pequeño.
El código para consulta.php es:
<?
$Consulta = msql("Libreta","SELECT * FROM Persona");
$Registros = msql_numrows($Consulta);
$Contador = 0;
echo "<center><h1>Datos Personales</h1><table border=1>";
echo "<tr><th>Nombre</th><th>Direccion</th>";
echo "<th>Telefono</th><th>Email</th></tr>";
while ($Contador < $Registros);
$Nombre = msql_result($Consulta, $Contador, "Nombre");
$Direccion = msql_result($Consulta, $Contador, "Direccion");
$Teléfono = msql_result($Consulta, $Contador, "Teléfono");
$Email = msql_result($Consulta, $Contador, "Email");
echo "<tr><td>$Nombre</td><td>$Direccion</td>";
echo "<td>$Telefono</td><td>$Email</td></tr>\n";
$Contador ++;
endwhile;
echo "</table></center>";
>
El resultado en pantalla es:
Datos Personales
Modificación
-
Para la modificación de un registro necesitamos seleccionarlo, así que usaremos el programa consulta.php, con algunas modificaciones para seleccionar el registro a modificar.
Básicamente solo se necesita crear un enlace entre el listado de consulta y el programa de modificaciones, de manera que se pueda seleccionar un registro determinado y se pase la información al programa de edición.
Las modificaciones, con respecto al programa consulta.php que habíamos escrito antes, aparecen en negrilla.
El programa de selección para edición (seledit.php) es:
<?
$Consulta = msql("Libreta","SELECT * FROM Persona");
$Registros = msql_numrows($Consulta);
$Contador = 0;
echo "<center><h1>Edición Datos Personales</h1><table border=1>";
echo "<tr><th>Nombre</th><th>Direccion</th>";
echo "<th>Telefono</th><th>Email</th></tr>";
while ($Contador < $Registros);
$Nombre = msql_result($Consulta, $Contador, "Nombre");
$Direccion = msql_result($Consulta, $Contador, "Direccion");
$Teléfono = msql_result($Consulta, $Contador, "Teléfono");
$Email = msql_result($Consulta, $Contador, "Email");
echo "<tr><td>";
echo "<a href=edicion.php?Nombre=";
echo UrlEncode($Nombre);
echo ">$Nombre</a>";
echo "</td><td>$Direccion</td>";
echo "<td>$Telefono</td><td>$Email</td></tr>\n";
$Contador ++;
endwhile;
echo "</table></center>";
>
Con esto aparecen todos los registros como en la consulta, pero el nombre es ahora un enlace al programa de edición:
Edición Datos Personales
Ahora hay que escribir el programa encargado de la edición. Vamos a usar como base el formulario de adición que ya habíamos hecho.
Las modificaciones que hay que hacer son para que se traigan los datos de la persona a editar y se coloque como valores del formulario. También cambia el programa que se usa para grabar los datos modificados.
Se colocan en negrillas las modificaciones con respecto a entrada.html.
El programa edicion.php queda así:
<html>
<head>
<title>Edición Datos Personales</title>
</head>
<body>
<center>
<?
$Consulta = msql("Libreta","SELECT * FROM Persona WHERE Nombre='$Nombre' LIMIT 1");
$Direccion = msql_result($Consulta, 0, "Direccion");
$Telefono = msql_result($Consulta, 0, "Teléfono");
$Email = msql_result($Consulta, 0, "Email");
>
<form action="grabedi.php" method="POST">
<pre>
<h1>Edición Datos Personales</h1>
Nombre: <input type="text" size="30" name="Nombre" value="<?echo $Nombre>">
Direccion: <input type="text" size="30" name="Direccion" value="<?echo $Direccion>">
Teléfono: <input type="text" size="30" name="Telefono" value="<?echo $Telefono>">
Email: <input type="text" size="30" name="Email" value="<?echo $Email>">
<input type="submit" value="Aceptar"> <input type="reset" value="Borrar">
</pre>
</form>
</center>
</body>
</html>
El programa para grabar el registro modificado, grabedi.php queda así:
<?
$Datos = "Nombre='$Nombre',Direccion='$Direccion',";
$Datos +="Telefono='$Telefono',Email='$Email'";
$Error = @msql("Libreta",
"UPDATE Persona SET $Datos WHERE Nombre='$Nombre'");
if($Error == 0);
echo "La información ha sido actualizada";
else;
echo "Se produjo un error al grabar";
endif;
>
Borrado
-
Para borrar un registro también es necesario seleccionarlo. Podríamos haber hecho un programa de selección y luego indicar la acción a tomar con el registro seleccionado, pero los programas hubieran quedado más largos y un poco más complejos, por lo que se prefirió modificar seleccion.php para cada acción.
La única modificación en este caso, con respecto a seledi.php, es el nombre del programa que ejecuta la acción, en lugar de ser edicion.php es borrado.php.
El código del programa para seleccionar el registro a borrar (selborra.php) queda así:
<?
$Consulta = msql("Libreta","SELECT * FROM Persona");
$Registros = msql_numrows($Consulta);
$Contador = 0;
echo "<center><h1>Borrado de Datos Personales</h1><table border=1>";
echo "<tr><th>Nombre</th><th>Direccion</th>";
echo "<th>Telefono</th><th>Email</th></tr>";
while ($Contador < $Registros);
$Nombre = msql_result($Consulta, $Contador, "Nombre");
$Direccion = msql_result($Consulta, $Contador, "Direccion");
$Teléfono = msql_result($Consulta, $Contador, "Teléfono");
$Email = msql_result($Consulta, $Contador, "Email");
echo "<tr><td>";
echo "<a href=borrado.php?Nombre=";
echo UrlEncode($Nombre);
echo ">$Nombre</a>";
echo "</td><td>$Direccion</td>";
echo "<td>$Telefono</td><td>$Email</td></tr>\n";
$Contador ++;
endwhile;
echo "</table></center>";
>
y el programa que efectua el borrado del registro borrado.php:
<?
$Error = @msql("Libreta","DELETE FROM Persona WHERE Nombre='$Nombre'");
if($Error == 0);
echo "Los datos de $Nombre se borraron";
else;
echo "Se produjo un error al tratar de borrar";
endif;
>
Notas Finales
-
Las diferentes acciones se deben integrar en una pagina que permita el acceso fácil, no lo haremos aquí.
Algunas operaciones como la selección para borrado no se deben hacer usando el método GET, porque es fácil cambiar el parámetro, es recomendable usar POST y un mecanismo de validación como cookies, sin embargo no se hace aquí por simplicidad.
La programación se simplifico al máximo, con la intención de ilustrar la interacción con la base de datos y mejorar la legibilidad del código, sin embargo tanto el HTML como PHP y mSQL permiten un mayor control, mejor presentación y una implementación mas elegante y es la esperanza del autor que esto motive a quienes usen este material a explorar más a fondo las posibilidades de estas magnificas herramientas y a divertirse en el proceso.