Foros del Web » Programando para Internet » PHP »

Error al modificar o eliminar registros de una base de datos MySQL con PHP

Estas en el tema de Error al modificar o eliminar registros de una base de datos MySQL con PHP en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/07/2008, 12:07
 
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" /> 
  #2 (permalink)  
Antiguo 24/07/2008, 14:05
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Error al modificar o eliminar registros de una base de datos MySQL con PHP

Tengo dos alternativa sque le pueden ayudar a resolver el problema.

1 Para verificar si se envio el form haga esto

Código PHP:
$Boton $_REQUEST['NOMBREDELBOTON'];
if (isset(
$Boton))
{
// Hace proceso

y luego hay si verifica si esta recibiendo el Id. "No se ve en elcodigo donde es que esta enviando el ID para saber si es hay donde se esta presentando el problema. QUE SEGUN VEO ES MUY POSIBLE".

2. Antes de ejecutar el query dele un echo a esta para saber como quedo la sentencia y la pega directamente en MySQL y la ejecuta para mirar que si haya quedado bien creada y todo el cuento.


Esta segunda opcion es la menos probable porque si dice que lo redirecciona automaticamente quiere decir que el problema esta en que no esta llegando el ID osea que tiene que verificar es como lo esta enviando y hacer un echo al recibirlo para solucionar el problema.


Otra cosa si son links envie la variable por get pero si son botones le aconsejo que mejor envie la variable en un campo oculto por post

Última edición por helacer; 24/07/2008 a las 14:12
  #3 (permalink)  
Antiguo 24/07/2008, 14:31
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Error al modificar o eliminar registros de una base de datos MySQL con PHP

Cambio el if (isset($_POST['submit'])) por el código que me has dicho y ahora al darle a enviar el formulario me sale el siguiente error:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 25' at line 1
En cuanto al ID, en teoría, lo de de recibir aquí:

Código PHP:
$cadena_modificar .= " WHERE id = " $_POST['id']; 
  #4 (permalink)  
Antiguo 24/07/2008, 14:38
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Error al modificar o eliminar registros de una base de datos MySQL con PHP

encuanto a lo de validar el boton seguro usted no reemplazo en $Boton = $_REQUEST['NOMBREDELBOTON']; la plabra NOMBREDELBOTON por el nombre exacto que le asigno al boto.

Segunto me enrede no se porque recibe por get y por post la misma variable quisiera ver donde es que esta capturando ese ID para saber como organizar el codigo y ver que es lo que esta pasando o muestreme todo el codigo del archivo para mirar que esta pasando
  #5 (permalink)  
Antiguo 24/07/2008, 15:35
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Error al modificar o eliminar registros de una base de datos MySQL con PHP

No, te aseguro que lo reemplacé por el nombre exacto del botón.

Lo del ID, te explico el porque lo recibe por GET y por POST, por GET la recibe la 1ª vez, de la página de listado (no es un botón, sino una imagen con un link a la página con el argumento del id), y después por POST, del formulario que se envía al darle a modificar o borrar. El id lo debe de recibir bien con el GET, ya que la consulta para que muestre el registro funciona bien, y está hecha así:

Código PHP:
$consulta "SELECT id,nombre,apellidos,telefono,email,edad FROM agenda";
$consulta .= " WHERE id = " $_GET['id'];
$resultado mysql_query($consulta$link) or die(mysql_error());
if (
mysql_num_rows($resultado) > 0) { 
Y a partir de ahí vendría el formulario, y se mostrarían los datos del registro.


Un saludo.

Última edición por rvelezb; 24/07/2008 a las 15:42
  #6 (permalink)  
Antiguo 01/08/2008, 09:11
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
De acuerdo Respuesta: Error al modificar o eliminar registros de una base de datos MySQL con PHP

Ya encontré el fallo, era una tontería, lo que pasa es que cuando preguntaba:

Código PHP:
if (isset($_POST['submit'])) 
El 'submit' debería de ser el nombre del botón de enviar, lo que pasa es que después le cambié el nombre por el de 'btn_Borrar' y 'btn_Modificar' respectivamente, por eso nunca operaba con la base de datos.

Ya se puede cerrar este topic.


Un saludo y gracias a todos por vuestra ayuda.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:38.