Foros del Web » Programando para Internet » PHP »

Depuración de Código - No borra registro en BD

Estas en el tema de Depuración de Código - No borra registro en BD en el foro de PHP en Foros del Web. Hola amigos, Vuelvo a buscar ayuda. Tengo un problema para borrar un registro. En mi modestia opinión creo que no estoy cogiendo la id correcta. ...
  #1 (permalink)  
Antiguo 21/08/2010, 07:54
 
Fecha de Ingreso: mayo-2009
Ubicación: Leganés - Madrid
Mensajes: 37
Antigüedad: 15 años, 6 meses
Puntos: 1
Depuración de Código - No borra registro en BD

Hola amigos,

Vuelvo a buscar ayuda.
Tengo un problema para borrar un registro.
En mi modestia opinión creo que no estoy cogiendo la id correcta. Pero, se fuese verdad, no estoy encontrando el error.

En la pagina de edición tengo el atajo para llamar el archivo borrar.php.

1) editar.php
Código PHP:
<html>
<head>
</head>
<body>
<?php

//recibimos la variable id enviada en el enlace por GET
$id_noticia=$_GET[id_noticia];

//conectamos a la base
$connect=mysql_connect("xxxxxx","xxxxxx","xxxxx");
//Seleccionamos la base
mysql_select_db("xxxxx",$connect);


//hacemos las consultas
$result=mysql_query("select * from noticias order by id_noticia Desc"$connect);

//Una vez seleccionados los registros los mostramos para su edición
while($row=mysql_fetch_array($result))
{
echo 
' <form method="post" action="edit.php">
<input type="hidden" name="id_noticia" value="'
.$row[id_noticia].'"><br>
T&iacute;tulo not&iacute;cia:<br>
<input type="text" name="titulo" value="'
.$row[titulo].'"><br>
Autor:<br>
<input type="text" name="autor" value="'
.$row[autor].'"><br>
Categor&iacute;a:<br>
<input type="text" name="categoria" value="'
.$row[categoria].'">

<br>Escriba el art&iacute;culo<br>
<textarea name="noticia" cols="50" rows="10">"'
.$row[noticia].'" </textarea>
<br>
<input type="submit" value="Editar"><br>
</form>'
;
?>
<a href="borrar.php?id='.$row[id_noticia].'">Borrar</a>
<?
}
mysql_free_result($result);
mysql_close($connect);
?>
</body>
</html>
Y el archivo que borra en el Banco de Datos es este:

2) borrar.php
Código PHP:
<?
//recibimos la variable $id
$id_noticia=$_POST[id_noticia];

//conectamos a la base
$connect=mysql_connect("xxxx","xxxxx","xxxx");
//Seleccionamos la base
mysql_select_db("xxxx",$connect);

//borramos los registros pertenecientes a la id
mysql_query("delete from noticias where id_noticia='$id_noticia'"$connect);

header("location: index.php");
?>
Donde estoy errando? En la pagina no me enseña error y tan poco el código borra el registro en el MySQL.
Alguien que tenga mejor ojo que yo para ayudarme?
Saludos!

Gabriel
  #2 (permalink)  
Antiguo 21/08/2010, 08:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Depuración de Código - No borra registro en BD

cuando veas el formulario HTML en tu navegador procura leerlo, y analizarlo...

ya que es evidente que esta parte anda mal:
Código HTML:
<a href="borrar.php?id='.$row[id_noticia].'">Borrar</a> 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/08/2010, 08:59
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Depuración de Código - No borra registro en BD

Ademas de lo que te ha dicho pateketrueke del enlace, debes saber que tal y como lo haces ahora, te mostrará un formulario por cada noticia que tengas, deberias usar un where en la consulta donde muestras el formulario.

Ademas, si quieres borrar, en el fichero borrar.php debes coger la variable por GET y no por POST

Creo que tienes un poco de lio para hacer las cosas :)
  #4 (permalink)  
Antiguo 23/08/2010, 04:57
 
Fecha de Ingreso: mayo-2009
Ubicación: Leganés - Madrid
Mensajes: 37
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Depuración de Código - No borra registro en BD

Hola pateketrueke y DooBie,

Buenos días!
Gracias por las ayudas y la pronta disposición en ayudar un aprendiz-cabezón.
Estuve leyendo y releyendo el código para intentar encontrar los errores indicados por vosotros:

- Cuanto la linea:
Cita:
<a href="borrar.php?id='.$row[id_noticia].'">Borrar</a>
Confeso que aun sigo sin encontrar el error.

- Cuanto al cambio de POST por GET. Ya lo he hecho.

Pero creo que tengo algo mas para hacer..... porque aun no borra el registro.

Gracias por la ayuda y sigo aguardado otra orientación.
  #5 (permalink)  
Antiguo 23/08/2010, 07:35
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Depuración de Código - No borra registro en BD

Si te fijas en el codigo html resultante, te darias cuenta.
Esa linea la estas imprimiendo tal cual, es decir, que el valor que deberia de tener $row['id_noticia'] no lo escribe, sino que escribe literalmente, $row['id_noticia']
Para que funcione, deberias ponerlo asi:

<a href="borrar.php?id=<?php echo $row['id_noticia']; ?>">Borrar</a>

Por cierto, acostumbrate a poner las etiquetas de apertura completas, en lugar de <? usa <?php
Las short tags dejaran de funcionar en versiones futuras.
  #6 (permalink)  
Antiguo 23/08/2010, 09:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP orientado a objetos a PHP
  #7 (permalink)  
Antiguo 23/08/2010, 11:10
 
Fecha de Ingreso: mayo-2009
Ubicación: Leganés - Madrid
Mensajes: 37
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Depuración de Código - No borra registro en BD

Cita:
Iniciado por DooBie Ver Mensaje
Si te fijas en el codigo html resultante, te darias cuenta.
Esa linea la estas imprimiendo tal cual, es decir, que el valor que deberia de tener $row['id_noticia'] no lo escribe, sino que escribe literalmente, $row['id_noticia']
Para que funcione, deberias ponerlo asi:

<a href="borrar.php?id=<?php echo $row['id_noticia']; ?>">Borrar</a>

Por cierto, acostumbrate a poner las etiquetas de apertura completas, en lugar de <? usa <?php
Las short tags dejaran de funcionar en versiones futuras.
DooBie,

Gracias por la orientación del uso de <?php / ?>
Ahora quedó mas claro lo que tu decías sobre el <a href --->
Pero aun sigo sin borrar el registro.
Aun hay como aprovechar lo que he hecho en este archivo borrar.php o mejor voelver a empezar?
Saludos!
  #8 (permalink)  
Antiguo 23/08/2010, 11:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Depuración de Código - No borra registro en BD

una pregunta... ¿en el navegador se ve el ID en la URL del enlace cuando pones el mouse encima?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 23/08/2010, 12:19
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Depuración de Código - No borra registro en BD

Una buena idea sería el postear de nuevo el codigo de editar.php, borrar.php y el resultado que te sale en el navegador en ambos casos.
  #10 (permalink)  
Antiguo 23/08/2010, 12:22
 
Fecha de Ingreso: mayo-2009
Ubicación: Leganés - Madrid
Mensajes: 37
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Depuración de Código - No borra registro en BD

Cita:
Iniciado por pateketrueke Ver Mensaje
una pregunta... ¿en el navegador se ve el ID en la URL del enlace cuando pones el mouse encima?
Si... aparece la ID del registro cuando pongo el raton arriba del atajo.
  #11 (permalink)  
Antiguo 23/08/2010, 12:26
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Depuración de Código - No borra registro en BD

hola

como se llama tu campo en tu tabla id o id_noticia?

porque en tu enlace

Código HTML:
?>
<a href="borrar.php?id='.$row[id_noticia].'">Borrar</a>
<?
pienso que deberia ser asi

Código HTML:
?>
<a href="borrar.php?id_noticia=<?php echo $row['id_noticia']; ?>">Borrar</a>
<?
intenta y comentas que tal
  #12 (permalink)  
Antiguo 23/08/2010, 12:48
 
Fecha de Ingreso: mayo-2009
Ubicación: Leganés - Madrid
Mensajes: 37
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Depuración de Código - No borra registro en BD

Cita:
Iniciado por DooBie Ver Mensaje
Una buena idea sería el postear de nuevo el codigo de editar.php, borrar.php y el resultado que te sale en el navegador en ambos casos.
Aqui esta:

editar.php
Código PHP:
<html>
<head>
</head>
<body>
<?php

//recibimos la variable id enviada en el enlace por GET
$id_noticia=$_GET[id_noticia];

//conectamos a la base
$connect=mysql_connect("xxxx","xxx","xx");
//Seleccionamos la base
mysql_select_db("xx",$connect);


//hacemos las consultas
$result=mysql_query("select * from noticias order by id_noticia Desc"$connect);

//Una vez seleccionados los registros los mostramos para su edición
while($row=mysql_fetch_array($result))
{
echo 
' <form method="post" action="edit.php">
<input type="hidden" name="id_noticia" value="'
.$row[id_noticia].'"><br>
T&iacute;tulo not&iacute;cia:<br>
<input type="text" name="titulo" value="'
.$row[titulo].'"><br>
Autor:<br>
<input type="text" name="autor" value="'
.$row[autor].'"><br>
Categor&iacute;a:<br>
<input type="text" name="categoria" value="'
.$row[categoria].'">

<br>Escriba el art&iacute;culo<br>
<textarea name="noticia" cols="50" rows="10">"'
.$row[noticia].'" </textarea>
<br>
<input type="submit" value="Editar"><br>
</form>'
;
?>
<a href="borrar.php?id=<?php echo $row['id_noticia']; ?>">Borrar</a>
<?php
}
mysql_free_result($result);
mysql_close($connect);
?>
</body>
</html>

borrar.php
Código PHP:
<?
//recibimos la variable $id
$id_noticia=$_GET[id_noticia];

//conectamos a la base
$connect=mysql_connect("xx","xx","xx");
//Seleccionamos la base
mysql_select_db("xx",$connect);

//borramos los registros pertenecientes a la id
mysql_query("delete from noticias where id_noticia='$id_noticia'"$connect);

header("location: index.php");
?>
Resultado en el navegador de:

1) editar.php
[URL="http://bit.ly/ahT5M4"]http://bit.ly/ahT5M4[/URL]

2) borrar.php
[URL="http://bit.ly/b2ql7x"]http://bit.ly/b2ql7x[/URL]

Saludos!
  #13 (permalink)  
Antiguo 23/08/2010, 12:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Depuración de Código - No borra registro en BD

amigo... estas usando id_noticia en el borrar.php, cuando en el enlace que creas en editar.php usas id
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 23/08/2010, 13:42
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Depuración de Código - No borra registro en BD

tiene razon pateketrueke, esta linea esta mal

<a href="borrar.php?id=<?php echo $row['id_noticia']; ?>">Borrar</a>

Deberia ser:

<a href="borrar.php?id_noticia=<?php echo $row['id_noticia']; ?>">Borrar</a>

O haces ese cambio, o este:
$id_noticia=$_GET[id_noticia];
por
$id_noticia=$_GET[id];


Ves los cambios?
  #15 (permalink)  
Antiguo 23/08/2010, 14:34
 
Fecha de Ingreso: mayo-2009
Ubicación: Leganés - Madrid
Mensajes: 37
Antigüedad: 15 años, 6 meses
Puntos: 1
[RESUELTO] - Depuración de Código - No borra registro en BD

Hola amigos,

Ufa... todo resuelto.
Realmente el error era este:

* Tuve que substituir ID por ID_NOTICIAS.

Agradezco la ayuda de todos y mas aun la paciencia y comprensión en ayudar un principiante que en muchas veces tarda para comprender la explicación.
Muchas gracias!
Saludos!

Etiquetas: bd, registro
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 12:50.