Foros del Web » Programando para Internet » PHP »

eliminacion de registros multiples

Estas en el tema de eliminacion de registros multiples en el foro de PHP en Foros del Web. Hola amigos; tengo en el panel del admin la opcion de elimiar registros, pero uno a uno. lo que me gustaria ahcer es con un ...
  #1 (permalink)  
Antiguo 12/01/2006, 09:47
 
Fecha de Ingreso: mayo-2005
Ubicación: Muy lejos de aquí
Mensajes: 367
Antigüedad: 18 años, 11 meses
Puntos: 0
eliminacion de registros multiples

Hola amigos;

tengo en el panel del admin la opcion de elimiar registros, pero uno a uno. lo que me gustaria ahcer es con un boton de seleccion o similar, seleccionar varios, y al darle a eliminar me los borrara (los seleccionados, claro). no se como hacerlo,alguna idea?

Gracias
__________________
Saludos!
  #2 (permalink)  
Antiguo 12/01/2006, 10:00
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
hola ..
no es con boton de opcion ... sino con checkbox ...
la cosa es asi ... suponiendo que la palabra chk representa un checkbox

chk registro 1
chk registro 2
chk registro 3
chk registro 4
chk registro 5

lo primero que tenes que hacer es saber interpretar si un chk ha sido tildado o no ...
suponiendo que cada chk tiene como nombre el ID de los registros ... vamos a recorrer todos los ID ... y los que esten tildados,(2 y 4) los borramos ... esto es un poco lerdo .. ya que va a tener que hacer tantos delete como chk tildados tengas ...
supongo que hay otras formas .. pero esta es de la forma rapida que se me ocurrio ..
quedaria algo asi ..
Código PHP:
while($i == $cantidad_de_registros){
       if(
$chak == TRUE){
               
$sql "delete ....";
                
mysql_query
                
.
                .
       }

saludos ...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #3 (permalink)  
Antiguo 12/01/2006, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
turco_7

Realmente sólo los "checkbox" que seleccionas pasan su valor al script PHP, es decir .. que todos los que lleguen son "true" (o mejor dicho, pasaran su valor que se indique en su "value").

De todo esto tienen una FAQ al respecto.
http://www.forosdelweb.com/showthrea...710#post518710


Un saludo,
  #4 (permalink)  
Antiguo 12/01/2006, 21:27
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
Cluster ..
claro lo correcto seria utilizar el foreach ... que por cierto lo tengo que aprender a usar .. en realidad trabajo de modo mas clasico .. casi nunca uso esas funciones raras ...porque no las se, o bien porque desconosco sobre su existencia .. pero dentro de todo es valido como digo??? o no??? .. saludos ...
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #5 (permalink)  
Antiguo 13/01/2006, 05:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por turco_7
Cluster ..
claro lo correcto seria utilizar el foreach ... que por cierto lo tengo que aprender a usar .. en realidad trabajo de modo mas clasico .. casi nunca uso esas funciones raras ...porque no las se, o bien porque desconosco sobre su existencia .. pero dentro de todo es valido como digo??? o no??? .. saludos ...
No es válido lo que comentas, por qué como te menciono, -sólo- los checkbox que seleccionas son los que pasa su valor al script PHP, el resto NO.

Por ende no puedes usar un bucle que recorra los N posibles checkbox que he generado y esperar tomar su valor como un "boolean" (True/false) por qué no es así ..

Si un checkbox lo seleccionas su nombre de vairiable "exite" y con el valor que definas en el "value" del mismo. Pruebalo y veras (el ejemplo de las FAQ's te servirá para salir de dudas).

Un saludo,
  #6 (permalink)  
Antiguo 13/01/2006, 05:56
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
Muestro un ejemplo de como lo hago yo.

Es para noticias, pero es lo mismo.

A cada item le pongo un check llamado "new_X" en donde X es el ID de ese item, ejemplo:

Código PHP:
<form action="" method="post">
<?php
$_sql 
mysql_query("SELECT * FROM `news` WHERE `state` = 0");
while(
$_row=mysql_fetch_array($_sql)){ 
<
input type="checkbox" name="new_'.$_row[id].'" value="ON" '.$_row['title'].'<br />;
}
?>
<input type="submit" value="Aceptar" name="new_accept" />
</form>
Ahi ya tenes generado el listado con sus checks correspondientes y el boton.

Ahora, al principio del script (arriba de todo, antes del listado inclusive) haces el while que aceptara/eliminara o lo que sea que quieras que haga, en mi caso cambia el campo "state" de 0 a 1.

Código PHP:
<?php
if ($_POST["new_accept"]) {
  
$_sql_accept mysql_query("SELECT * FROM `fw_news` WHERE `state` = 0 ORDER BY `id` ASC");
  while(
$_row=mysql_fetch_assoc($_sql_accept)){
    if(
$_POST['new_'.$_row[id]]) { $_sql_aupdate mysql_query("UPDATE `news` SET `state` = '1' WHERE `id` = '$_row[id]'"); }
  }
}
?>
Podrías poner otro boton en el formulario para eliminarlos, agrega esto en el form:
Código PHP:
<input type="submit" value="Eliminar" name="new_delete" /> 
y luego vas arriba de todo nuevamente y pegas este codigo:

Código PHP:
<?php
if ($_POST["new_delete"]) {
  
$_sql_delete mysql_query("SELECT * FROM `news` WHERE `state` = 0 ORDER BY `id` ASC");
  while(
$_row=mysql_fetch_assoc($_sql_delete)){
    if(
$_POST['new_'.$_row[id]]) { $_sql_dupdate mysql_query("DELETE FROM `news` WHERE `id` = '$_row[id]'"); }
  }
}
?>
Bueno, ahi tienes un ejemplo de como lo hago yo, funciona rapido y nunca me ha fallado (lo probe hasta con 150 registros simultaneos, no se como funcionara con mas)

Luego puedes conseguirte un codigo javascript para seleccionar todos los checkboxes de una sola vez y ahorrarte ir tildandolos de a uno...
__________________
I Love Programming...
  #7 (permalink)  
Antiguo 13/01/2006, 05:59
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
bue, ahora viendo el faq de cluester me doy cuenta que podría ser mucho mas facil :p
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 13/01/2006, 06:59
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
ok Cluster .. entiendo .. pero creo haber hecho alguna ves algo asi ... si lo encuentro te lo muestro ... saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #9 (permalink)  
Antiguo 13/01/2006, 08:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si dices que tu propuesta funciona .. OK (no he tenído oportunidad de estudiarla) .. Pero la que te propongo yo como ya has visto es mucho más "simple" de implementar, eso sí, requiere de algunos conocimientos "base" .. por ejmplo del tema que nombre[] (tratar elementos de formulario como array) y particularidades como los "checkbox" que sólo pasan los que seleccionas.

Un saludo,
  #10 (permalink)  
Antiguo 16/01/2006, 01:17
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Sonrisa yo normalmento lo hago como este ejemplo

pagina en ejecucioon
http://www.rinconastur.net/php/ejemplo138f.php

codigo del form
http://www.rinconastur.net/php/ver138.php

codigo del php
http://www.rinconastur.net/php/ver139.php

espero que te sirva
__________________
gerardo
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 04:12.