Foros del Web » Programando para Internet » PHP »

Error modificando/borrando un registro de una base de datos con PHP

Estas en el tema de Error modificando/borrando un registro de una base de datos con PHP en el foro de PHP en Foros del Web. Hola, estoy creando una aplicación de una agenda, pero la modificación de datos, falla, me da el siguiente error: Cita: Warning : mysql_num_rows(): supplied argument ...
  #1 (permalink)  
Antiguo 23/07/2008, 17:21
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Error modificando/borrando un registro de una base de datos con PHP

Hola, estoy creando una aplicación de una agenda, pero la modificación de datos, falla, me da el siguiente error:
Cita:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource on line 50
A la modificación de datos accedo desde el listado de los registros que hay en la agenda, al lado de cada uno, hay un link para borrarlo, que te redirige a la página de modificar, pasándole a la URL de la página el ID de ese registro en concreto como arugmento, para que elimine sólo ese, para saber si hay algún registro en la base de datos, o por el contrario está vacía, primero hago un SELECT, y después pregunto por el número de filas de lo que me devuelva el SELECT, si es mayor que 0, significa que hay no está vacía, y ahí es donde me dice que está el error, el código estaría así:

Código PHP:
$consulta "SELECT id,nombre,apellidos,telefono,email,edad FROM agenda WHERE id = " $_GET['id'];
$resultado mysql_query($consulta);
if (
mysql_num_rows($resultado) > 0) { // en esta línea me da el error 
Además, en la URL de la página me aparece: "modificar_datos.php?id=$id", el $id no debería de aparecer, en su lugar debería de aparecer el nº de identificador del registro, pero si pongo yo manualmente el nº en la URL, me salen todos los datos del registro a modificar, y cuando le doy a enviar el formulario con los datos modificados, me devuelve a la página del listado sin modificar nada. Si necesitáis más código, lo pongo, no lo he puesto todo, porque son ciento y pico líneas de código.


Un saludo.

Última edición por rvelezb; 23/07/2008 a las 20:38 Razón: Cambiar el título del mensaje
  #2 (permalink)  
Antiguo 23/07/2008, 19:23
 
Fecha de Ingreso: julio-2008
Mensajes: 83
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: Error modificando un registro de una base de datos con PHP

El error ese se produce porque $resultado no es un mysql resource valido. En cristiano, tu consulta SQL no se esta ejecutando bien, por lo que mysql_query retorna NULL en vez de un recurso valido. Cambia $resultado = mysql_query($consulta); por $resultado = mysql_query($consulta) or die(mysql_error());.

I fijate cual es el error especifico.

Saludos.
  #3 (permalink)  
Antiguo 23/07/2008, 19:27
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Respuesta: Error modificando un registro de una base de datos con PHP

Ok, gracias por la aclaración, el error específico que me da es este:

Cita:
Unknown column '$id' in 'where clause'

Si identificamos de donde proviene el fallo, matamos dos pájaros de un tiro, ya que en el borrado me da el mismo error específico.


Un saludo.

Última edición por rvelezb; 23/07/2008 a las 19:52
  #4 (permalink)  
Antiguo 23/07/2008, 20:23
Avatar de fhonorato  
Fecha de Ingreso: julio-2008
Ubicación: Talca, Chile
Mensajes: 36
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Error modificando un registro de una base de datos con PHP

usa (') comillas simples... entre la variable ... si no es eso .. vuelve. :D :)

ejemplo Where id = 'valor' .. nose.. hace unas dos horas me paso .. plop! ... aunque nose si fue eso lo que corregi u otra cosa... pero ahi vemos .. suerte...
  #5 (permalink)  
Antiguo 23/07/2008, 20:32
 
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
  #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 modificando/borrando un registro de una base de datos 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.
  #7 (permalink)  
Antiguo 01/08/2008, 09:23
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: Error modificando/borrando un registro de una base de datos con PHP

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
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 01:40.