Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/07/2008, 12:07
rvelezb
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Error al modificar o eliminar registros de una base de datos MySQL con PHP

Hola, estoy haciendo una aplicación de una agenda, inserción de registros, listado, y modificación y eliminación de registros de una tabla en una base de datos MySQL, a las páginas de eliminar y modificar, se accede sólo a través de la página del listado mediante un link al lado de cada registro, después se la pasa como argumento a la página mediante método GET el ID del registro concreto que queremos modificar o eliminar, lo muestra por pantalla y en el caso de modificar te salen todos los datos dentro de un formulario normal de inserción, donde tú los puedes cambiar, y después tienes el botón de enviar, modifica el contenido en la base de datos, y te sale un mensajito diciendo que todo ha ido bien y un botón para volver a la página de listado, y en el caso de eliminarlo, parecido, te lo muestra en pantalla como una consulta, y tienes el botón de borrarlo, que al pulsarlo lo elimina de la base de datos, y te sale un mensajito diciendo que todo ha ido bien y un botón para volver a la página de listado, eso es la teoría, lo que debería de hacer, ahora vamos a lo que falla, al problema.

El listado nos muestra todos los registros en pantalla en una tabla, y le damos al link correspondiente de modificar o eliminar el registro que queramos de los que aparece en pantalla en una tabla, nos redirige bien a la página que queremos, nos muestra todos los datos de ese registro perfectamente, hasta aquí todo sin problemas, en el caso de modificar, modificamos todos los datos sin problemas, pero, el problema está al final, al darle al botón de "eliminar" o "modificar", que nos devuelve a la página anterior, la del listado, y ni modifica ni elimina el registro de la base de datos, es como si el formulario no se enviara, le tengo puesto sólo debe de volver automáticamente a la página del listado, si el contenido de la variable $id que recibo mediante el método GET, está vacía, así:

Código PHP:
if (empty($_GET['id']))
{
    
header("Location: listado.php");
    exit();

El código de modificación del registro en la base de datos es este:

Código PHP:
if (isset($_POST['submit']))
{
// nos conectamos a la base de datos
    
$link Conectarse("localhost""root""""ejemplo");
            
             
// Obtenemos los datos del formulario
    
$cadena_modificar "UPDATE agenda SET ";
    
$cadena_modificar .= "nombre = '" $_POST['nombre'] . "',";
    
$cadena_modificar .= "apellidos = '" $_POST['apellidos'] . "',";
    
$cadena_modificar .= "telefono = '" $_POST['telefono'] . "',";
    
$cadena_modificar .= "email = '" $_POST['email'] . "',";
    
$cadena_modificar .= "edad = '" $_POST['edad'] . "',";
    
$cadena_modificar .= " WHERE id = " $_POST['id'];

        
// enviamos la consulta a la base de datos            
    
$respuesta mysql_query($cadena_modificar$link) or die(mysql_error());

    echo 
"<h2>Datos modificados correctamente de la agenda</h2>";
    
mysql_close($link); // cerramos la conexión con la base de datos
    
exit();
// se cierra el 'if' 
Y el código de borrado del registro en la base de datos es este otro (son prácticamente iguales, la única diferencia es que en uno modifica el registro de la tabla (UPDATE), y el otro lo borra (DELETE):

Código PHP:
if (isset($_POST['submit']))
{
// nos conectamos a la base de datos
    
$link Conectarse("localhost""root""""ejemplo");
            
             
// Obtenemos los datos del formulario
    
$cadena_borrado "DELETE FROM agenda WHERE id = ";
    
$cadena_borrado .= $_POST['id'] . " LIMIT 1";

        
// enviamos la consulta a la base de datos            
    
$respuesta mysql_query($cadena_borrado$link) or die(mysql_error());

    echo 
"<h2>Registro eliminado correctamente de la agenda</h2>";
    
mysql_close($link); // cerramos la conexión con la base de datos
    
exit();
// se cierra el 'if' 
Y la etiqueta form y el botón de enviar el formulario (el de modificar es igual):

Código HTML:
<form name="f" action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
<!-- aquí vendría la tabla que muestra el registro, en caso de eliminar, y en 
caso de modificar, un formulario normal, pero en los campos con el valor inicial 
de los datos del registro para poder modificarlo -->
<input type="submit" name="btn_Borrar" value="Borrar datos" id="btn_Borrar" />