Foros del Web » Programando para Internet » PHP »

eliminar multiples imagenes con checks

Estas en el tema de eliminar multiples imagenes con checks en el foro de PHP en Foros del Web. Buenas a todos estoy construyendo una pequeña galería de fotos con una bd. El caso es que la sección de subida de imágenes, despues de ...
  #1 (permalink)  
Antiguo 25/11/2008, 15:11
Avatar de willyfc  
Fecha de Ingreso: octubre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 662
Antigüedad: 16 años, 1 mes
Puntos: 40
eliminar multiples imagenes con checks

Buenas a todos

estoy construyendo una pequeña galería de fotos con una bd. El caso es que la sección de subida de imágenes, despues de que se guarda la img aparece debajo del formulario la imagen con el nombre y una pequeña descripción todo ingresado por el usuario y así aparecen todas las subidas con un bucle while en la consulta.

bueno primero hice lo que dicen en las faq's que vi que es generar un boton o vinculo para cada imagen para eliminar y funcionó direccionando a una hoja eliminar.php, el inicial fue así:


pero ahora quiero hacerlo así:


el caso es que no se como pasar las variables cuando el usuario marque el check que esta afuera y se marquen todas o quiera marcar solo algunas

gracias de antemano
  #2 (permalink)  
Antiguo 25/11/2008, 15:16
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 multiples imagenes con checks

lo del checkbox múltiple, fácilmente lo haces con Javascript.... osea, la selección...

para recibirlos con PHP es igual de simple, estas usando arrays en el name ???
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/11/2008, 15:40
Avatar de willyfc  
Fecha de Ingreso: octubre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 662
Antigüedad: 16 años, 1 mes
Puntos: 40
Respuesta: eliminar multiples imagenes con checks

Cita:
Iniciado por pateketrueke Ver Mensaje
lo del checkbox múltiple, fácilmente lo haces con Javascript.... osea, la selección...

para recibirlos con PHP es igual de simple, estas usando arrays en el name ???
gracias por responder tan rápido.

lo del javascript si lo estoy usando eso funciona marca varios y en el name de input que se repite lo tengo así:

Código PHP:
<input type="checkbox" name="check2[]" id="check2<?php echo($numero)?>" />
el id con la variable solo es un incrementador para que trabaje bien el js y no se repita este input es el que esta al lado del editar

gracias

valga aclarar que desde donde dice eliminar con el check has abajo es un solo form por si es necesario usar botones en vez de vínculos y por si acaso coloco lo que hay en mi hoa eliminar.php

Código PHP:
$link=Conectarse();
$id=$_GET[eli];
$result=mysql_query("SELECT * FROM `imagenes` WHERE idimg='$id'",$link);
$row mysql_fetch_array($result);
$arch_elimin $row["foto"];
$directorio $arch_elimin;
unlink ("$directorio");
 
mysql_query("Delete From ´imagenes´ Where idimg='$id'",$link

Última edición por willyfc; 25/11/2008 a las 15:51
  #4 (permalink)  
Antiguo 25/11/2008, 16: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 multiples imagenes con checks

bien, para eliminar múltiples ID de la tabla... debes usar el operador IN, en este caso tu name es check2

Código PHP:
$ids join(','$_POST['check2']); // unimos con comas
$sql "DELETE FROM `tabla` WHERE item_id IN($ids)"
el objeto del IN, es listar una colección...

Código:
... WHERE item_id IN(1,3,5,7,9,99,42,5,4,...,N)
si el ID (o campo) entra dentro de la lista, bingo!

espero te sirva, bien....sabes este tema ya había sido tratado, ni modo...

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/11/2008, 16:37
Avatar de willyfc  
Fecha de Ingreso: octubre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 662
Antigüedad: 16 años, 1 mes
Puntos: 40
Respuesta: eliminar multiples imagenes con checks

te cuento que no me funciona, disculpa la lata pero no entiendo muy bien php si vi algo en las faq's pero no le entendí, ahora pasa lo siguiente cuando marco varios y le doy eliminar me sale el mensaje de que eliminó pero no elimina ni la imagen del dir ni de la bd, y si quito el redireccionador de eliminar.php para que se quede ahí me sale esto:

Warning: unlink() [function.unlink]: No error in C:\wamp\www\ccfrancoaleman.org\admin\eliminar.php on line 10

ahora estoy usando un boton en vez de vinculo
sorry por la lata pero necesito hacer estoy y ya llevo 2 días dandome contra el monitor

gracias
  #6 (permalink)  
Antiguo 25/11/2008, 16:48
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 multiples imagenes con checks

mira, la clave esta en como armas e interpretas tus datos... cierto?

Código HTML:
<input type="checkbox" name="borrar[12]" value="el/archivo/.original"/>
<input type="checkbox" name="borrar[9]" value="que/debe/ir/aqui"/>
<input type="checkbox" name="borrar[123]" value="foo/candy"/> 
el indice de borrar es el ID de la tabla, bien... el value, es la ruta completa del archivo (debería existir)

mas o menos algo así... continuemos

Código PHP:
$ids join(','array_keys($_POST['borrar'])); // indices, no values
$sql "DELETE FROM `tabla` WHERE item_id IN($ids)";

// ...

mysql_query($sql) or die(mysql_error()); // etc, etc...

// ahora, borramos los archivos (¿o antes?)

foreach ($_POST['borrar'] as $id => $old)
{
  if (
is_file($old))
  {
    
// siempre hay que estar seguros!
    
unlink($old);
  }

bueno, mas o menos... ese es el concepto, espero te sirva...

suerte!


--

recuerda que: el error mas común, es asumir que el error mas común no va a ocurrir...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 25/11/2008, 17:49
Avatar de willyfc  
Fecha de Ingreso: octubre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 662
Antigüedad: 16 años, 1 mes
Puntos: 40
Respuesta: eliminar multiples imagenes con checks

estuve probando tu código y si funciona tal y como esta pero solo elimina de la bd y las imagenes quedan en la carpeta de la galería y no se si estoy colocando bien los datos a tu código pero me sale:

Warning: Invalid argument supplied for foreach() in C:\wamp\www\ccfrancoaleman.org\admin\eliminar.php on line 29

al final deje así el código:

Código PHP:
$ids join(','array_keys($_POST['check2'])); // indices, no values 
$result=mysql_query("SELECT * FROM `imagenes` WHERE idimg='$ids'",$link);
$arch_elimin $row["foto"];
$directorio $arch_elimin;
@
unlink ("$directorio");
$sql "DELETE FROM `imagenes` WHERE idimg IN($ids)"

// ... 

mysql_query($sql) or die(mysql_error()); // etc, etc... 

// ahora, borramos los archivos (¿o antes?) 

foreach ($_POST['check'] as $ids => $directorio

  if (
is_file($directorio)) 
  { 
    
// siempre hay que estar seguros! 
    
unlink($directorio); 
  } 

espero me puedas ayudar y si no gracias por tu tiempo y la ayuda ya brindada
  #8 (permalink)  
Antiguo 25/11/2008, 17:54
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Respuesta: eliminar multiples imagenes con checks

Hola willyfc...

El select también debe ir con IN, tal como está el delete:

Código PHP:
$result=mysql_query("SELECT * FROM `imagenes` WHERE idimg IN ($ids)",$link); 
Además, no veo donde asocias el resultado de tu consulta de imágenes, a un arreglo? (mysql_fetch_assoc, mysql_fetch_array)??

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 25/11/2008, 18:03
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 multiples imagenes con checks

mira... primero, no es check es check2 ... y tu lo pusiste así, no veo porque lo cambiaste en el foreach

luego, seguro que colocaste los value de los checkbox como puse en mi ejemplo, osea... la ruta real, verdadera y completa ???

ahora, porque haces esto... ???

Código PHP:
$result=mysql_query("SELECT * FROM `imagenes` WHERE idimg='$ids'",$link);
$arch_elimin $row["foto"];
$directorio $arch_elimin;
@
unlink ("$directorio"); 
Carxl tiene mucha razón, de donde sacas $row ???

luego, si esta el foreach para borrar los archivos... para que el SELECT y unlink ???

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 25/11/2008, 18:04
Avatar de willyfc  
Fecha de Ingreso: octubre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 662
Antigüedad: 16 años, 1 mes
Puntos: 40
Respuesta: eliminar multiples imagenes con checks

gracias Carxl

acabo de corregir los errores que me dijiste y sigue pasando lo mismo, quedaría así:

Código PHP:
$ids join(','array_keys($_POST['check2'])); // indices, no values 
$result=mysql_query("SELECT * FROM `imagenes` WHERE idimg IN ($ids)",$link);
$row mysql_fetch_array($result);
$arch_elimin $row["foto"];
$directorio $arch_elimin;
@
unlink ("$directorio");
mysql_query("DELETE FROM `imagenes` WHERE idimg IN($ids)",$link);
foreach (
$_POST['check2'] as $ids => $directorio)  
{  
  if (
is_file($directorio))  
  {  
    
// siempre hay que estar seguros!  
    
unlink($directorio);  
  }  

de la bd borra perfecto pero me deja la imagen en el directorio
gracias
  #11 (permalink)  
Antiguo 25/11/2008, 18:10
Avatar de willyfc  
Fecha de Ingreso: octubre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 662
Antigüedad: 16 años, 1 mes
Puntos: 40
Respuesta: eliminar multiples imagenes con checks

pateketrueke

tienes toda la razón, fue una babosada mia todo eso, ya esta resuelto te agradezco muchísimo, muchas gracias por la ayuda y paciencia y también gracias a Carxl por hacerme notar los otros errores

Saludos...
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 22:00.