AnteriorPosterior

10.3. Inserción de datos en la base de datos

  Curso: Introducción a PHP

10.3. Inserción de datos en la base de datos

Para introducir datos, normalmente usaremos dos "páginas":

  • Una será el formulario con las casillas de introducción, el botón, etc.
  • La segunda recibirá los datos del formulario y los insertará en la base de datos (normalmente, antes deberemos asegurarnos de que los datos tienen valores "razonables").

En un proyecto real, en ocasiones será la misma página la que reciba los datos, como ya habíamos comentado, pero de momento vamos a separar la lógica, para simplificar el desarrollo.

La apariencia de la página que pide datos al usuario podría ser:

<html>
<body>
<h1>Introducci&oacute;n de datos</h1>
  <form action="almacenar.php" method="post">
    Nombre: <input name="nombre" type="text"> <br> <br>
    Correo electr&oacute;nico: <input name="email" type="text"> <br> <br>
    Tel&eacute;fono: <input name="telefono" type="text"> <br> <br>
    Fecha nac.: <input name="fechanac" type="text"> <br> <br>
    <input name="guardar" value="Guardar" type="submit"><br>
</body>
</html>

Y la página encargada de guardar estos datos en la base de datos sería muy similar a la que habíamos utilizado para mostrar información extraída de la base de datos, apenas con dos diferencias importantes:

La orden de SQL que habíamos usado para leer era "SELECT FROM"; para introducir datos usaremos "INSERT INTO" (si son datos nuevos) o bien "REPLACE INTO" (si se debe sobrescribir algún dato que pudiera existir previamente y en el que se haya modificado sólo algún campo).

No necesitaremos usar "mysql_fetch_array" para recibir información, ni ningún "while" para que esta recepción de información sea repetitiva.

Podría ser algo así (insisto: en un caso real también se debería comprobar que el usuario realmente ha introducido datos, y que esos datos tienen sentido):

<html>
<body>
<?php
$n = $_POST["nombre"];
$e = $_POST["email"];
$t = $_POST["telefono"];
$f = $_POST["fechanac"]; 
 
if (!($enlace=mysql_connect("localhost","usuario","1234"))) { 
    echo "Error conectando a la base de datos."; 
    exit(); 
} 
 
if (!mysql_select_db("prueba",$enlace)) { 
    echo "Error seleccionando la base de datos."; 
    exit(); 
} 
 
mysql_query("REPLACE INTO amigos (nombre, email, telefono, fechanac) VALUES (".
    "'$n','$e','$t','$f')", $enlace);
 
mysql_close($enlace); 
?>
<p>Datos introducidos: </p>
    Nombre:&nbsp;<?=$n?><br>
    E-mail:&nbsp;<?=$e?><br>
    Tel&eacute;fono:&nbsp;<?=$t?><br>
    Fecha Nac.:&nbsp;<?=$f?><br>
</body>
</html>

Una vez introducidos los datos, podríamos volver a mostrarlos de la forma vista en el apartado anterior. La nueva ficha debería aparecer junto a las demás.

Podemos comprobar si los datos se han guardado con "mysql_affected_rows();":

$cantidadDeDatos = mysql_affected_rows();

Si $cantidadDeDatos vale 0, es que no se ha llegado a guardar ningún dato (típicamente, porque no esté funcionando la conexión a la base de datos o porque ese código ya estuviera utilizado).

Ejercicio propuesto 10.3.1: Crea un formulario que permita introducir un nuevo libro en la "biblioteca".

Ejercicio propuesto 10.3.2: Mejora el apartado 10.3.1, para que se vuelva a mostrar el formulario tras introducir un dato. Antes del formulario, debe aparecer el texto "Cambios guardados correctamente" en color verde, o el texto "No se ha podido guardar", en color rojo, según corresponda.

Ejercicio propuesto 10.3.3: Crea un formulario que permita modificar un libro de la "biblioteca": el usuario deberá introducir su nombre exacto. Entonces se mostrará un nuevo formulario, similar al de "añadir", que contendrá los datos anteriores de ese libro dentro de las casillas de texto (deberás escribir esos datos en el "value" de cada "input"). El usuario podrá modificar los datos que desee, y los cambios se guardarán (en la misma ficha) cuando se pulse el correspondiente botón.

Actualizado el: 20-12-2013 20:24

AnteriorPosterior