Foros del Web » Programando para Internet » PHP »

Paso de parámetros en PHP para borrar registros en MYSQL

Estas en el tema de Paso de parámetros en PHP para borrar registros en MYSQL en el foro de PHP en Foros del Web. Tengo problemas al borrar un solo registro de mi tabla de mysql. Estoy en un scrip de php que hace consulta a la DB y ...
  #1 (permalink)  
Antiguo 12/07/2011, 19:46
Avatar de leve91  
Fecha de Ingreso: febrero-2011
Ubicación: México
Mensajes: 26
Antigüedad: 13 años, 10 meses
Puntos: 0
Paso de parámetros en PHP para borrar registros en MYSQL

Tengo problemas al borrar un solo registro de mi tabla de mysql. Estoy en un scrip de php que hace consulta a la DB y ordena los registros en filas cada una de color diferente, hasta allí todo bien pero al darle clic en el botón BORRAR que está a la derecha el archivo de borrar.php simplemente no hace nada. Tiene algo que ver con el enlace siguiente: echo ' <a href="borrar.php?type=movie & id = ' .$row['nombre'].'"> [BORRAR] </a> '; y que al pasar los parámetros al archivo de borrar simplemente no reconoce la parte el “id” que se refiere al nombre escrito en la tabla de mysql; lo había hecho funcionar de otra forma pero me borraba TODOS los registros de la tabla.
Dejo los dos archivos para que me digan en que estoy mal.
Hasta pronto.

Archivo de consultas:
Código PHP:
Ver original
  1. <?php
  2. $db = mysql_connect('host', 'user', 'pass') or
  3. die ('Unable to connect. Check your connection parameters.');
  4. mysql_select_db('miDB', $db) or die(mysql_error($db));
  5. ?>
  6. <html>
  7. <head>
  8. <title> Consulta de los depositos </title>
  9. <style type="text/css">
  10. th { background-color: #999;}
  11. .odd_row { background-color: #EEE; }
  12. .even_row { background-color: #FFF; }
  13. </style>
  14. </head>
  15. <body>
  16. <table style="width:100%;">
  17. <tr>
  18. <th colspan="2">Tabla 1</th>
  19. </tr>
  20. <tr>
  21. <th colspan="8" >Encabezados</a> </th>
  22. </tr>
  23. <?php
  24. $query = 'SELECT * FROM depositos';
  25. $result = mysql_query($query, $db) or die (mysql_error($db));
  26. $odd = true;
  27. while ($row = mysql_fetch_assoc($result)) {
  28. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  29. $odd = !$odd;
  30. echo ' <td style="width:75%;"> ';
  31. echo '<b>Nombre: </b>';
  32. echo $row['nombre'];
  33. echo ' </td> <td> ';
  34. echo ' <a href="borrar.php?type=movie & id='.$row['nombre'].'">
  35. [EDITAR] </a> ';
  36. echo ' <a href="borrar.php?type=movie & id = ' .$row['nombre'].'">
  37. [BORRAR] </a> ';
  38. echo ' </td> </tr> ';
  39. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  40. $odd = !$odd;
  41. echo ' <td style="width:75%;"> ';
  42. echo '<b>Apellido: </b>';
  43. echo $row['apellido'];
  44. echo ' </td> <td> ';
  45.  
  46. echo ' </td> </tr> ';
  47. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  48. $odd = !$odd;
  49. echo ' <td style="width:75%;"> ';
  50. echo '<b>Dirección: </b>';
  51. echo $row['direccion'];
  52. echo ' </td> <td> ';
  53.  
  54. echo ' </td> </tr> ';
  55. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  56. $odd = !$odd;
  57. echo ' <td style="width:75%;"> ';
  58. echo '<b>Estado: </b>';
  59. echo $row['estado'];
  60. echo ' </td> <td> ';
  61.  
  62. echo ' </td> </tr> ';
  63. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  64. $odd = !$odd;
  65. echo ' <td style="width:75%;"> ';
  66. echo '<b>Municipio: </b>';
  67. echo $row['municipio'];
  68. echo ' </td> <td> ';
  69.  
  70. echo ' </td> </tr> ';
  71. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  72. $odd = !$odd;
  73. echo ' <td style="width:75%;"> ';
  74. echo '<b>Ciudad: </b>';
  75. echo $row['ciudad'];
  76. echo ' </td> <td> ';
  77.  
  78. echo ' </td> </tr> ';
  79. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  80. $odd = !$odd;
  81. echo ' <td style="width:75%;"> ';
  82. echo '<b>Deposito: </b>';
  83. echo $row['deposito'];
  84. echo ' </td> <td> ';
  85.  
  86. echo ' </td> </tr> ';
  87. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  88. $odd = !$odd;
  89. echo ' <td style="width:75%;"> ';
  90. echo '<b>Cantidad: </b>';
  91. echo $row['cantidad'];
  92. echo ' </td> <td> ';
  93.  
  94. echo ' </td> </tr> ';
  95. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  96. $odd = !$odd;
  97. echo ' <td style="width:75%;"> ';
  98. echo '<b>Día: </b>';
  99. echo $row['dia'];
  100. echo ' </td> <td> ';
  101.  
  102. echo ' </td> </tr> ';
  103. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  104. $odd = !$odd;
  105. echo ' <td style="width:75%;"> ';
  106. echo '<b>Mes: </b>';
  107. echo $row['mes'];
  108. echo ' </td> <td> ';
  109.  
  110. echo ' </td> </tr> ';
  111. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  112. $odd = !$odd;
  113. echo ' <td style="width:75%;"> ';
  114. echo '<b>Año: </b>';
  115. echo $row['año'];
  116. echo ' </td> <td> ';
  117.  
  118. echo ' </td> </tr> ';
  119. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  120. $odd = !$odd;
  121. echo ' <td style="width:75%;"> ';
  122. echo '<b>Banco: </b>';
  123. echo $row['banco'];
  124. echo ' </td> <td> ';
  125.  
  126. echo ' </td> </tr> ';
  127. echo ($odd == true) ? '<tr class="odd_row">' : '<tr class="even_row">';
  128. $odd = !$odd;
  129. echo ' <td style="width:75%;"> ';
  130. echo '<b>Observaciones: </b>';
  131. echo $row['observaciones'];
  132. echo ' </td> <td> ';
  133.  
  134. echo ' </td> </tr> ';
  135. echo'<th colspan="8" height="9"></th>';
  136. }
  137. ?>
  138. </table>
  139. </body>
  140. </html>

Archivo para borrar
Código PHP:
Ver original
  1. <?php
  2. $db = mysql_connect('host', 'usuario', 'pass') or
  3. die ('No se puede conectar. Revisar parámetros de conexión.');
  4. mysql_select_db('midatabase', $db) or die(mysql_error($db));
  5.  
  6. if (!isset($_GET['do']) || $_GET['do'] != 1) {
  7. ($_GET['type']) {
  8. 'movie'
  9. echo '¿Esta seguro de borrar este registro?<br/>';
  10. }
  11. echo '<a href="' . $_SERVER['REQUEST_URI'] . '&do=1">SI</a> ';
  12. echo 'O <a href="consulta.php">NO</a>';
  13. } else {
  14. ?>
  15. <?php
  16. $query = 'DELETE FROM registros
  17. WHERE
  18. nombre = ' .$_GET['id'];
  19. $result = mysql_query($query, $db) or die(mysql_error($db));
  20. ?>
  21. <p style="text-align: center;"> Su registro ha sido borrado.
  22. <a href=" index.php"> Return to Index </a> </p>
  23. <?php
  24. }
  25. ?>
  #2 (permalink)  
Antiguo 13/07/2011, 01:32
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 7 meses
Puntos: 261
Respuesta: Paso de parámetros en PHP para borrar registros en MYSQL

Hay que prestar especial atención a acotar entre comillas simples (') los valores literales (cadenas de caracteres). Te recomiendo que las consultas SQl las hagas siempre entre comillas dobles para evitar estos errores.

Así lo tienes:
Código PHP:
$query 'DELETE FROM registros
WHERE
nombre = ' 
.$_GET['id']; 
Debería ser así:
Código PHP:
$query "DELETE FROM registros
WHERE
nombre = '" 
.$_GET['id']. "'"
Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #3 (permalink)  
Antiguo 13/07/2011, 13:10
Avatar de leve91  
Fecha de Ingreso: febrero-2011
Ubicación: México
Mensajes: 26
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Paso de parámetros en PHP para borrar registros en MYSQL

Muchas gracias amigo, tu consejo me ha funcionado a la perfección, solo una última pregunta, mi programa esta diseñado para que me pregunte si deseo borrar un registro SI Ó NO, si le digo que sí lo borra y si le digo que no me regresa a consultas pero el registro lo borra de todas formas, no se que será lo que me falta.
Y nuevamente gracias por el aporte.
  #4 (permalink)  
Antiguo 13/07/2011, 13:34
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 7 meses
Puntos: 261
Respuesta: Paso de parámetros en PHP para borrar registros en MYSQL

Cita:
Iniciado por leve91 Ver Mensaje
Muchas gracias amigo, tu consejo me ha funcionado a la perfección, solo una última pregunta, mi programa esta diseñado para que me pregunte si deseo borrar un registro SI Ó NO, si le digo que sí lo borra y si le digo que no me regresa a consultas pero el registro lo borra de todas formas, no se que será lo que me falta.
Y nuevamente gracias por el aporte.
Imagino que será por el orden en que se ejecuta. Para evitarlo, más o menos sería en este orden.

Seudocódigo:
Código PHP:
Pulsas para borrar el registro
Preguntas si quieres borrarlo
Si la respuesta es sienvías el id del registro que deseas borrar
if (compruebas la variable) {
    
Validas el id recibido
    Ejecutas la query con respecto al id
    Redireccionas

Si la respuesta es no
    El botón NO redirecciona 
Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #5 (permalink)  
Antiguo 13/07/2011, 13:53
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 10 meses
Puntos: 53
Respuesta: Paso de parámetros en PHP para borrar registros en MYSQL

en etas partes no estoy seguro pero creo estan mal

Cita:
if (!isset($_GET['do']) || $_GET['do'] != 1) { //inicio del if

($_GET['type']) {//inicio de que???

'movie' ///se imprime??

echo '¿Esta seguro de borrar este registro?<br/>';

} ///fin de que??

echo '<a href="' . $_SERVER['REQUEST_URI'] . '&do=1">SI</a> '; ///aqui creo se pone ?id en vez de &id al menos que te de mas variables el ($_SERVER['REQUEST_URI'])ejemplo mi pagina.php?uno=1

echo 'O <a href="consulta.php">NO</a>';

} ///fin del if

else

podrias hacer purebas imprimiendo antes de ejecutar el delete el valor de id y hacer un exit: o comentar la linea donde esta $resulte imprimir $query para ver que te envia
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #6 (permalink)  
Antiguo 14/07/2011, 07:36
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años, 8 meses
Puntos: 3
Respuesta: Paso de parámetros en PHP para borrar registros en MYSQL

Tenes que borrarlo por el id
Código PHP:

<a href='borrar.php?id='.$row['id']."/>Borrar</a> 
Y en borrar
Código PHP:
$id $_GET['id'];
$sql "SELECT * FROM tutabla  WHERE id='$id' Limit 1";
$query mysql_query($sql) or die(mysql_error); 
Despues haces la query de borrar
saludos
  #7 (permalink)  
Antiguo 02/06/2015, 09:45
 
Fecha de Ingreso: junio-2015
Mensajes: 3
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Paso de parámetros en PHP para borrar registros en MYSQL

Gracias me has dado una pista y me ha servido de ayuda, al final lo he puesto así:

<div style="text-align:center;">
<table class="tabla_normal" align="center">
<tr style="background-color:#b08863; color:#FFF;">
<th>Borrar</th>
<th>Nombre máquina</th>
<th>Nº Serie</th>
<th>Fabricante</th>
</tr>

<?php
//Mostramos los registros
while ($row = mysql_fetch_array($resul))
{
?>
<form id="form_borra_maquinaria" action="borra_maquinaria_nuevo.php" method="post">
<tr><td><input type='hidden' name='id' value='<?php echo $row['numero_maquina']?>' />
<input class='buttonFormSmall' id='submit' type='submit' name='enviar' value='Borrar' title='Borrar'>
</td></form>

<?php
echo" <td align='center'>".$row['nombre_maquina']."</td>
<td align='center'>".$row['num_serie']."</td>
<td align='center'>".$row['fabricante']."</td>
</tr>";

}
mysql_free_result($resul);
?>
</table>

He puesto el <form> justo antes del botón de borrar el dato y el </form> justo después del botón. Y funciona perfecto. Muchas gracias

Etiquetas: borrar, html, mysql, paso, registro, 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 03:30.