Foros del Web » Programando para Internet » PHP »

Problema con borrar registros

Estas en el tema de Problema con borrar registros en el foro de PHP en Foros del Web. Buenas noches. Os expongo el problema: Tengo una página php en la que se muestran todos los registros de una tabla y abajo tengo un ...
  #1 (permalink)  
Antiguo 16/09/2011, 14:53
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Problema con borrar registros

Buenas noches.

Os expongo el problema:

Tengo una página php en la que se muestran todos los registros de una tabla y abajo tengo un botón para borrar el contenido, lo que pasa es que no me funciona. No tengo demasiados conocimientos en PHP así que posiblemente se me haya pasado algo o haya puesto algo mal.

El código que tengo es el siguiente:

Código:
conectar_mysql();
$registros=mysql_query("SELECT * FROM noticias order by id_noticia desc");
while ($reg=mysql_fetch_array($registros)){
    echo "<div><p><b>".$reg['titulo_noticia']."</b><br /><span>Publicado el ".$reg['fecha']."</span></p>";
    echo "<p>".$reg['noticia']."</p><form action='$PHP_SELF' method='post'><input type='submit' name='borrar' value='Borrar' /></form>";
    if(isset($_POST["borrar"])) {
        $borrar= mysql_query("DELETE * FROM noticias WHERE id_noticia='".$reg['id_noticia']."'");
        mysql_close();
    }
    echo "</div>";
}
Bien, la query para mostrar los registros de la tabla funciona perfectamente (se muestran todos y en el orden especificado), pero al clicar en el botón Borrar no hace nada, se vuelve a cargar la página pero no borra el registro.

Espero que podáis ayudarme, llevo días rompiéndome los sesos y no sé como solucionarlo.
  #2 (permalink)  
Antiguo 16/09/2011, 14:58
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problema con borrar registros

quieres borrar todos tus registros?? haz un truncate, o has un delete sin indicar condición para el delete, aunque no recomiendo mucho borrar los registros asi por asi, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 16/09/2011, 15:14
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: Problema con borrar registros

Un par de cosas que he notado en tu código. Primero estas intentando borrar cada registro despues de mostrarlo, es decir primero lo muestras (cuando todavia existe) y despues intentas borrarlo; por otra parte haz llamado a la función mysql_close() dentro del bucle while con lo cúal la conexión con la base de datos se cierra despues de la primera iteración de este bucle, en concecuencia ya no se puede realizar ninguna accion sobre los registros de la tabla.
  #4 (permalink)  
Antiguo 16/09/2011, 15:16
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Problema con borrar registros

En un principio la sentencia de SQL está bien, pero si te fijas en el código, lo primero que haces es mostrar los registros por pantalla y después borrarlos.

Lo que tendrías que haces es poner despues del conectar_mysql() el "if(isset($_POST["borrar"]))", entonces debería hacerlo correctamente, o sea, te borraría los datos y después los mostaría, y no al revés.
  #5 (permalink)  
Antiguo 16/09/2011, 15:36
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con borrar registros

Gracias por contestar.

Cuando entras en la web sale lo de la imagen de más abajo (si estás registrado salen los botones y lo de añadir contenido, sino no).
Lo que quiero hacer es que se vean todos los post con un botón de Borrar en cada uno de ellos para borrar uno en específico si así se desea (no quiero borrarlos todos).

He probado en poner el if(isset) justo después del conectar_mysql() pero sigue sin funcionar.

No se bien el problema que hay en mostrar los registros primero y luego mandar a borrarlos si uno lo quiere, pero quizás sería mejor si hiciera otra página obteniendo la id de la noticia y borrarlo desde allí, luego que me devuelva al index.php (la pág. de la imagen). ¿Qué pensáis?

Os dejo una imagen para que podáis ver como queda la página:



EDIT: he cambiado el link de la imagen, que no se veía.
  #6 (permalink)  
Antiguo 16/09/2011, 16:14
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Problema con borrar registros

Prueba con este código a ver si te funciona:

Código PHP:
Ver original
  1. <?php
  2.  
  3.     conectar_mysql();
  4.  
  5.     if($_POST["borrar"]) {
  6.  
  7.         mysql_query("DELETE * FROM noticias WHERE id_noticia='{$_POST['id']}'");
  8.     }
  9.  
  10.     $consulta = mysql_query("SELECT * FROM noticias order by id_noticia desc");
  11.  
  12.     while ($reg = mysql_fetch_array($consulta)){ ?>
  13.  
  14.         <div>
  15.        
  16.             <p>
  17.            
  18.                 <strong><?php echo $reg['titulo_noticia']; ?></strong><br />
  19.                 <span>Publicado el <?php echo $reg['fecha']; ?></span>
  20.                
  21.             </p>
  22.            
  23.             <p>
  24.            
  25.                 <?php echo $reg['noticia']; ?>
  26.  
  27.             </p>
  28.            
  29.             <form method="post">
  30.            
  31.                 <input type="hidden" name="id" value="<?php echo $reg['id_noticia']; ?>">
  32.                 <input type="submit" name="borrar" value="Borrar" />
  33.            
  34.             </form>
  35.        
  36.         </div>
  37.        
  38.     <?php }
  39.        
  40.     mysql_close();
  41.  
  42. ?>

Última edición por hasdpk; 16/09/2011 a las 16:28
  #7 (permalink)  
Antiguo 18/09/2011, 05:30
 
Fecha de Ingreso: septiembre-2011
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Problema con borrar registros

Hola de nuevo.

Probé tu código, hasdpk, pero no me funcionó.
También lo intenté haciendo la parte del borrado en una página a parte, pero tampoco dio resultado.
Al hacerle un echo a la variable que $_POST['id'] me devuelve el valor correcto, pero la sentencia mysql continua sin funcionar. Os pongo el código como quedó para ver si veis algo:

index.php
Código PHP:
Ver original
  1. <?php
  2. conectar_mysql();
  3. $registros=mysql_query("SELECT * FROM noticias order by id_noticia desc");
  4. while ($reg=mysql_fetch_array($registros)){
  5. ?>
  6.     <div>
  7.         <p>
  8.             <b><?php echo $reg['titulo_noticia']; ?></b><br />
  9.             <span>Publicado el <?php echo $reg['fecha']; ?></span>
  10.         </p>
  11.         <p><?php echo $reg['noticia']; ?></p>
  12.         <form action='borrar.php' method='post'>
  13.             <input type="hidden" name="id" value="<?php echo $reg['id_noticia']; ?>" />
  14.             <input type="submit" name="borrar" value="Borrar" />
  15.         </form>
  16.     </div>
  17. <?php
  18. }
  19. ?>

borrar.php
Código PHP:
Ver original
  1. <?php
  2. $id=$_POST['id'];
  3. //si le hago un echo $id; imprime la id_noticia correcta
  4. conectar_mysql();
  5. mysql_query("DELETE * FROM noticias WHERE id_noticia='$id'");
  6. header("location:index.php");
  7. ?>

EDIT: Ya conseguí solucionar el problema, era tan tonto como quitar el * de la sentencia de borrado:
mysql_query("DELETE FROM noticias WHERE id_noticia='$id'");

Gracias a todos por vuestra ayuda igualmente. :)

Última edición por efreyoltana; 19/09/2011 a las 13:21

Etiquetas: borrar, mysql, registro, registros, sql, tabla
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 13:26.