Foros del Web » Programando para Internet » PHP »

eliminar con checkbox

Estas en el tema de eliminar con checkbox en el foro de PHP en Foros del Web. hola, he visto varios post con este tema y quise guiarme con la programacion de dicho porblema , pero la verdad no me ha salido ...
  #1 (permalink)  
Antiguo 27/01/2009, 16:24
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
eliminar con checkbox

hola, he visto varios post con este tema y quise guiarme con la programacion de dicho porblema , pero la verdad no me ha salido el resultado y quisera saber cual es mi error:

primero me realizo mi consulta

Código PHP:
$consulta "select * from contacto order by contacto_fecha_envio DESC ";
$rs=mysql_query($consulta,$c);
$num=mysql_num_rows($rs); 
luego busco el id

Código PHP:
while ($row mysql_fetch_assoc($rs)) {                
 
$id=$row["contacto_id"];

aqui viene el problema en el checkbox que genero en la celda pongo esto (porque se pone en "name" y no en value?)

Código PHP:
<td height="18" align="center" bgcolor="#BEE3A8"><input type="checkbox" name="post[<?=$row['contacto_id'];?>]"/></td>
luego en la otra pagina que borra va este codigo, segun lo que vi en un post

Código PHP:
$dato=$_POST['post'];

$del=join(',',$dato);

$sql="DELETE FROM contacto WHERE contacto_id IN (".$del.")";
mysql_query($sql,$c); 
bueno, simplemente no elimina los registros, mas bien en vez de recoger el id el resultado siempre sale "on" osea en la cadena $sql sale:

DELETE FROM tabla WHERE id IN (on,on)

el on se repite tantas veces como checks marcados hay, espero me puedan ayudar byes
  #2 (permalink)  
Antiguo 27/01/2009, 16:37
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: eliminar con checkbox

bien, lo que sucede es que el checkbox envía on si no tiene un value, entonces... debes usar los indices con array_keys() para hacer el join() de modo que te resulten solo datos numéricos en el IN()

la otra es, que coloques el ID en el value de cada checkbox para usarlo en lugar del on que te da PHP por defecto...

solo es eso, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/01/2009, 16:58
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: eliminar con checkbox

gracias por tu respuesta, no te entendi mucho eso del array_keys()

pero soluciones en algo el problema ya que le agregue al checkbox esto:

Código PHP:
<input type="checkbox" name="post[<?=$row['contacto_id'];?>]" value="<?php echo $id?>"/>
y elimina!, pero el problema es que ID que coge siempre es el primero osea si hay 10 checkbox todos tienen el primer id del registro... tendre que ver donde poner ese while para que genere todos los id... byes
  #4 (permalink)  
Antiguo 27/01/2009, 17:08
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: eliminar con checkbox

no entiendo el problema.... si el ID ya lo tienes!!

Código PHP:
<input value="<?php echo $row['contacto_id']; ?>"/>
lo de array_keys() era para evitar este paso... y sin tener que usar el value tan solo el name del checkbox...

Código PHP:
$ids join(','array_keys($_POST['post'])); 
suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 27/01/2009, 17:29
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 10 meses
Puntos: 9
Respuesta: eliminar con checkbox

waaaa!! excelente! use el array_keys como lo escribiste (sin value) y tomo los ID que yo escogia, gracias a ti aprendi esta funcion tan util , gracias!
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:05.