12.- Bases de datos, includes y formularios (2º parte)

INTRODUCCIÓN

Ahora que ya tenemos nuestra estructura y nuestros incluyes hechos vamos a hacer las páginas de nuestra aplicación.

MOSTRANDO LOS REFRANES.

Bien ahora necesitamos hacer la página en la que se van a ver nuestros refranes: así que abrimos index.php y la guardamos como refran.php y ahora sí que nos toca meter nuestro código para mostrar los refranes, además con un añadido, al lado de cada refrán pondremos un enlace para editar el refrán por si tenemos que corregirlo.

En esta página vamos a necesitar conectar con la base de datos, tal y cómo vimos en el tema anterior. Pero, como no es la única página de nuestro proyecto en la que vamos a tener que conectar con la base de datos, el código para conectar con la bd, lo vamos a poner en un archivo aparte y lo incluiremos en nuestro código.

Vamos a crear el archivo connect.inc

<?php

// conectamos a la base de datos
$bdconex = @mysql_connect("localhost", "root", "TUCLAVE");

if (!$bdconex) {
echo( "<h1>La base de datos no está disponible</h1> " .
"<p>Por si acaso, comprueba que tienes bien los datos de la dirección, el nombre de usuario y la contraseña.</p>" );
exit();
}

// seleccionamos la base de datos

if (! @mysql_select_db("refranes", $bdconex)){

echo "<h2 align='center'>ERROR3: Imposible localizar la base de datos en este momento</h2>";

exit();
}
?>

Y ahora lo incluimos en nuestro archivo refran.php

<html>
<head>
<title>El Refranero</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%"  summary="tabla de disposicion">
<tr>
<?php include('titulo.inc'); ?>
</tr>
<tr>
<?php include('menu.inc'); ?>

<td width="76%">

<?php include('connect.inc'); ?>

</td>
</tr>
<tr>
<?php include('pie.inc'); ?>
</tr>
</table>
</body>
</html>

Una vez que hemos conectado a la base de datos, vamos a poner el código para que nos muestre los refranes que tenemos en la bd, tal y cómo lo hacíamos en el tema anterior, pero incluyendo en enlace para “editar” cada uno de los refranes que mostremos:

<h1>Mi base de datos de refranes</h1>
<?php

// Seleccionamos todos los refranes de la base de datos
$resultado = @mysql_query("SELECT * FROM refranero");

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}

// mostramos todos los refranes
while ($fila = mysql_fetch_array($resultado)) {

echo ("<strong>Refrán: </STRONG>" . $fila['refran'] . "<br />");
echo ("<strong>Fecha: </STRONG>" . $fila['fecha']);

?>
<a href="editar.php?id=<?php echo $fila['ID'];?>"> Editar</a>
<a href="borrar.php?id=<?php echo $fila['ID']; ?>"> Borrar</a>
<br /><br />
<?php } ?>

Este código lo incluiremos justo después de haber conectado en la base de datos. En realidad todo lo hemos visto en el tema anterior, sólo hemos añadido dos enlaces, que en realidad tampoco suponen una gran novedad puesto que ya hemos visto como se pasan las variables por la URL.

<a href=”editar.php?id=<?php echo $fila[‘ID’];?>”> Editar</a>
<a href=”borrar.php?id=<?php echo $fila[‘ID’]; ?>”> Borrar</a>

En realidad son enlaces que le pasan al siguiente archivo el ID del refran que queremos editar o borrar; sobre todo por aquello de borrar o editar el refrán que queremos y no otro.

BORRANDO REFRANES

La “carcasa” de este archivo, es exactamente igual que la veíamos para mostrar los refranes, con su conexión a la BD.

<html>
<head>
<title>El Refranero</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%"  summary="tabla de disposicion">
<tr>
<?php include('titulo.inc'); ?>
</tr>
<tr>
<?php include('menu.inc'); ?>

<td width="76%">

<?php include('connect.inc'); ?>

</td>
</tr>
<tr>
<?php include('pie.inc'); ?>
</tr>
</table>
</body>
</html>

Sólo que esta vez, el código que le vamos a añadir después de conectarnos a la base de datos es un poco distinto. Primero vamos a seleccionar el refrán que el usuario quiere borrar y vamos a obligarle a confirmar que efectivamente quiere borrarlo, en caso de que lo confirme, borraremos el archivo, sino, volveremos al a página anterior. Vamos a ello.

Para nuestra aplicación vamos a utillizar una página multiuso lo primero que vamos a hacer, es comprobar si el usuario ha confirmado que quiere borrar el refrán. Si lo ha confirmado, borraremos el archivo e indicaremos al usuario que el refrán ha sido eliminado de la bd. Si no lo ha confirmado, le pediremos que confirme que quiere borrar el refrán en cuestión.

Así que lo primero que vamos a hacer es que la variable $confirmado existe.

<?php

if (!isset($confirmado)) {

/* El usuario no ha confirmado, así que le preguntamos si está seguro de que quiere borrar el refrán */

}else {

/* Borramos el archive e indicamos al usuario que hemos eliminado el código de la bd */

}?>

Si el usuario no ha confirmado todavía que quiere borrar el refrán, se lo preguntamos:

// Seleccionamos todos los refranes de la base de datos

$sql = "SELECT * FROM refranero WHERE ID = $ID";

$resultado = @mysql_query($sql);

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}

// mostramos todos los refranes
while ($fila = mysql_fetch_array($resultado)) {
echo ("<BR /><BR />");

echo ("Has solicitado borrar el refrán:<br /><br /><strong>" . $fila['refran'] . "</strong><br /><br />");
echo ("¿Estás seguro de que quieres borrarlo?");

} ?>
<br /> <a href="borrar.php?confirmado=si&ID=<?php echo $ID; ?>">Si estoy seguro</a> - <a href="refranes.php">Mejor no lo borro</a>

Si el usuario ha confirmado que quiere borrar el refrán, borramos el refrán y le damos la posibilidad de volver a la lista de refranes:

$sql ="DELETE FROM refranero WHERE ID = $ID";

if(@mysql_query($sql)) {

?>
<STRONG>¡refrán borrado!</STRONG><br /><br />
<a href="refranes.php">Volver al listado de refranes</a>

<?php

}else {

echo("Parece que se ha producido un error al borrar el refrán");
echo("<br /><a href='refranes.php'>vuelve a intentarlo luego.</a>");

}

El código completo de nuestra página multiuso quedaría así:

<html>
<head>
<title>El Refranero</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%"  summary="tabla de disposicion">
<tr>
<?php include('titulo.inc'); ?>
</tr>
<tr>
<?php include('menu.inc'); ?>

<td width="76%">

<?php include('connect.inc'); ?>

<h1>Mi base de datos de refranes</h1>

<?php

if (!isset($confirmado)) {

// Seleccionamos todos los refranes de la base de datos

$sql = "SELECT * FROM refranero WHERE ID = $ID";

$resultado = @mysql_query($sql);

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}

// mostramos todos los refranes
while ($fila = mysql_fetch_array($resultado)) {
echo ("<BR /><BR />");

echo ("Has solicitado borrar el refrán:<br /><br /><strong>" . $fila['refran'] . "</strong><br /><br />");
echo ("¿Estás seguro de que quieres borrarlo?");

} ?>
<br /> <a href="borrar.php?confirmado=si&ID=<?php echo $ID; ?>">Si estoy seguro</a> - <a href="refranes.php">Mejor no lo borro</a>

<?php

}else {

// borramos el refrán

$sql ="DELETE FROM refranero WHERE ID = $ID";

if(@mysql_query($sql)) {

?>
<STRONG>¡refrán borrado!</STRONG><br /><br />
<a href="refranes.php">Volver al listado de refranes</a>

<?php

}else {

echo("Parece que se ha producido un error al borrar el refrán");
echo("<br /><a href='refranes.php'>vuelve a intentarlo luego.</a>");

}
}?>

</td>
</tr>
<tr>
<?php include('pie.inc'); ?>
</tr>
</table>
</body>
</html>

MODIFICANDO NUESTROS REFRANES

Es posible que, al introducir un refrán, hayamos cometido un error (una b en lugar de una v o algo por el estilo), y queramos corregirlo. Así que tenemos que tener la posibilidad de editar nuestros refranes.

Cómo siempre, vamos a utilizar nuestra plantilla para evitarnos tener que volver a meter el código del título, el menú y la conexión a la base de datos. Aquí lo que tenemos que hacer es mostrar el refrán y la fecha dentro de los campos de un formulario, de forma que podamos escribir sobre ellos y modificar, luego sólo tendremos que actualizar la base de datos. Para ello, como vimos en el tema 11 utilizamos la orden UPDATE.

<?php

if (!isset($submit)) {

// Seleccionamos el refrán que coincide con la ID que le hemos pasado

$sql = "SELECT * FROM refranero WHERE ID = $ID";

$resultado = @mysql_query($sql);

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
}

// obtenemos los datos a mostrar

while ($fila = mysql_fetch_array($resultado)) {
echo ("<BR /><BR />");

?>
<h3>Modificar refrán</h3>
<form method=post action="">
<textarea name="refran" rows="5" cols="40"><?php echo $fila['refran'];?></textarea><br />
<strong>Fecha:</strong>
<textarea name="fecha" rows="1" cols="20"><?php echo $fila['fecha'];?></textarea>
<input type="submit" name="submit" value="submit">
</form>

<?php
}

}else {

$sql ="UPDATE refranero SET fecha='".$fecha ."', refran='". $refran." ' WHERE ID = $ID";

$resultado = @mysql_query($sql);

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
} else {

echo("Refrán Modificado!<br /><br />");
}

?>
<a href="refranes.php">Volver al listado de refranes</a>

<?php

}?>

AÑADIENDO NUEVOS REFRANES

Para añadir un nuevo refrán, lo hacemos igual que lo hacíamos en el tema 11, pero en esta ocasión vamos a ofrecer al usuario un formulario para que escriba el texto del refrán y añadirlo a nuestra BD cuando pulse sobre el botón enviar. También tendremos que averiguar la fecha para introducirla en la bd

Cómo antes, vamos a utilizar una página multiusos, de forma que si ya se ha enviado el formulario, insertamos el nuevo refrán en la base de datos. Y si todavía no se ha enviado, le mostramos al usuario el formulario. También usaremos nuestra plantilla con los includes para ahorrarnos código. Vamos allá.

Empezamos como siempre, con nuestra plantilla:

<html>
<head>
<title>El Refranero</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="100%"  summary="tabla de disposicion">
<tr>
<?php include('titulo.inc'); ?>
</tr>
<tr>
<?php include('menu.inc'); ?>

<td width="76%">

<?php include('connect.inc'); ?>

<h1>Mi base de datos de refranes</h1>

Luego comprobaremos que el refrán todavía no ha sido introducido en el formulario y le presentaremos en ese caso el formulario

if (!isset($refran)) {

?>
<h2> Escribe el refrán que quieres introducir</h2>
<form action="nuevo.php" method="get">
<textarea name="refran" rows="10" cols="40"></textarea>
<br />
<input type="submit" value="GUARDAR REFRÁN">
</form>

Si ya ha introducido un refrán en el formulario, averiguaremos la fecha y ejecutaremos la query para introducirlo en la base de datos.

<?php

}else {

$fecha = date("Y-n-j");

$sql="INSERT INTO refranero  ( refran , fecha )
VALUES ( '". $refran."', '".$fecha ."' );";

$resultado = @mysql_query($sql);

if (!$resultado) {
echo ("<p> Me temo que te has colado en la query:" . mysql_error() . "</p>");
exit();
} else {

echo("Refrán Introducido en la base de datos!<br /><br />");

}

}?>
Y por último añadimos nuestro pie de página

</td>
</tr>
<tr>
<?php include('pie.inc'); ?>
</tr>
</table>
</body>
</html>

En este tema hemos visto lo que en realidad ya habíamos aprendido: introducir, mostrar, modificar y borrar datos en mysql, sólo que esta vez hemos utilizado para ello un formulario y y unos includes. Espero que haya sido útil.

Volver an índice

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s