Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/07/2008, 20:32
rvelezb
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Respuesta: Error modificando/borrando un registro de una base de datos con PHP

No era eso, eso está bien, la variable va entre comillas simples, era una tontería, un error de novato, el problema estaba en el vínculo a a la página, que tras el nombre tenía puesto: pagina.php?id=$id, siempre intentaba modificar o borrar un registro que tuviera por ID "$id", en vez del id correspondiente, y claro, daba error, porque el $id es una variable PHP, y como tal debe de ir entre los separadores de código PHP, por esa tontería me estaba volviendo loco.

Bueno, ya está solucionado eso, ahora se muestra la página bien, con todos los datos, pero después de modificar lo que sea, en el caso de la modificación, o cuando le doy a Borrar, en el caso de borrar, el formulario no se envía y no borra, ni modifica nada, vuelve directamente a la página anterior, la del listado de registros de la tabla, pero le tengo puesto que ahí sólo debe de volver automáticamente si el contenido de la variable $id que recibo mediante el método GET, está vacía.

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" /> 

Última edición por rvelezb; 24/07/2008 a las 12:06 Razón: Añadir más información