Foros del Web » Programando para Internet » PHP »

checkbox con nombre de archivos

Estas en el tema de checkbox con nombre de archivos en el foro de PHP en Foros del Web. Estoy recorriendo un directorio y armo un listado de archivos, me gustaría poder hacerlo con checkbox, para luego por ejemplo seleccionarlos y borrar ese archivo ...
  #1 (permalink)  
Antiguo 13/01/2006, 08:58
 
Fecha de Ingreso: enero-2006
Ubicación: Mendoza
Mensajes: 2
Antigüedad: 18 años, 2 meses
Puntos: 0
Información checkbox con nombre de archivos

Estoy recorriendo un directorio y armo un listado de archivos, me gustaría poder hacerlo con checkbox, para luego por ejemplo seleccionarlos y borrar ese archivo selecionado. Se entiende?

<?php
$dir = opendir("./descargas");
while ($file = readdir($dir)) {
echo "<a href='/descargas/".$file."'>- $file</a><br>";
}
closedir($dir);
?>

Meter el $file el check para luego poder borrar el archivo
Alguna idea? desde ya gracias
  #2 (permalink)  
Antiguo 13/01/2006, 09:13
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 3 meses
Puntos: 19
osea... lo que vos queres hacer es que por cada archivo tengas un checkbox ... y el mismo tenga el nombre del archivo ???

para borrar un archivo lo podes hacer con la funcion unlink
aca te dejo el link... saludos
http://ar2.php.net/manual/es/function.unlink.php
__________________
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 13/01/2006, 11:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Podrías usar:

Código PHP:
echo "<input type=\"checkbox\" name=\"archivo[]\" value=\"".urlencode($file)."">"; 
El "nombre del archivo" viajará en un array: archivo .. Uso "urlencode()" para que no tengas problemas con espacios, acentos y demás caracteres como nombre de archivos.

En tu script PHP de proceso, recorre ese array para aplicar tu "unlink()" o como corresponda. No estaría de más validar y verificar que el archivo en sí exista antes de hacer el "unlink()" definitivo.

Código PHP:
foreach ($_POST['archivos'] as $archivo){
   
$ruta_archivo="descargas/".urldecode($archivo);
   if (
file_exists($ruta_archivo)){
       
unlink($ruta_archivo);
       echo 
$ruta_archivo." --> Borrado<br>";
   } else {
       echo 
"<b>".$ruta_archivo." --> FALLÓ Borrado</b><br>";
   }

Un saludo,
  #4 (permalink)  
Antiguo 17/01/2006, 12:27
 
Fecha de Ingreso: enero-2006
Ubicación: Mendoza
Mensajes: 2
Antigüedad: 18 años, 2 meses
Puntos: 0
Gracias!!

Gracias por la rápida respuesta lo pruebo y les digo como me fue!
  #5 (permalink)  
Antiguo 12/07/2006, 20:12
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 20 años, 11 meses
Puntos: 0
Yo he intentado algo parcido pero me sale este error:
Warning: Invalid argument supplied for foreach()
El checkbox biene de aquí...
Código PHP:
        if ($imagen[$o]){
        echo 
"<td><a href=".$pathi."/".$imagen[$o]." target='_blank'><img border='0' src=".$path."/".$imagen[$o]."><br></a><input type='checkbox' name='imagen' value=".$imagen[$o]."></td>"
        }
    } 
Y en pagina borrarimagen.php tengo esto
Código PHP:
$path="imagenes/small/";
$pathi "imagenes/";
$imagenborrar =$_POST['imagen'];


foreach (
$_POST['imagen'] as $imagen){ 
    
$borrar $path.$imagenborrar;
    
$borrari $pathi.$imagenborrar;
   if (
file_exists($path)){ 
       
unlink($borrar);
       
unlink($borrari); 
       echo 
$path." --> Borrado<br>"
   } else { 
       echo 
"<b>".$path." --> FALLÓ Borrado</b><br>"
   } 

Alguien podría decirme que hago mal?

Gracias.
  #6 (permalink)  
Antiguo 13/07/2006, 07:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Tu checkbox debe ser un ARRAY .. para eso se define con [] ... Sino, foreach() que espera un array como parámetro lo lo tiene y en consecuencia te dá ese mensaje de error.

name='imagen[]'

Supongo que usas ese código para seleccionar N checkbox? ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 13/07/2006, 09:19
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 20 años, 11 meses
Puntos: 0
Gracias por la corrección Cluster.
Ahora me me pasa Array como valor. Me imagino que es culpa de las comillas simples pero lo he intentado poniendo comilla dobles y me da un error Parse error: parse error, expecting `','' or `';''

Me van a volver loco las '' i las "".
  #8 (permalink)  
Antiguo 13/07/2006, 09:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Si tu ves el código fuente de tus checkbox generados (en tu navegador -> ver código fuente) que valores observas ahí? son correctos?.

usa las comillas dobles donde se requieren ..

Código PHP:
<input type="checkbox\" name=\"imagen[]\" value=\"".$imagen[$o]."\"></td>"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 13/07/2006, 12:09
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 20 años, 11 meses
Puntos: 0
El formulario del checkbox lo he dejado asi:

Código PHP:
        if ($imagen[$o]){
        echo 
"<td><a href=".$pathi."/".$imagen[$o]." target='_blank'><img border='0' src=".$path."/".$imagen[$o]."><br></a><input type=\"checkbox\" name=\"imagen[$o]\" value=".$imagen[$o]."></td>"
        }
    } 
Y me crea este codigo fuente:
Código HTML:
<table><form action='borrarimagen.php' method='post'><tr align="center"><td><a href=imagenes//CatherineDeneuve.jpg target='_blank'><img border='0' src=imagenes/small//CatherineDeneuve.jpg><br></a><input type="checkbox" name="imagen[1]" value=CatherineDeneuve.jpg></td><td><a href=imagenes//Thumbs.db target='_blank'><img border='0' src=imagenes/small//Thumbs.db><br></a><input type="checkbox" name="imagen[2]" value=Thumbs.db></td></tr><tr align="center"></tr></table><input type='submit' value='Borrar'></form><a href="escandir.php?&page=1">1</a> <table border='0' width='100%'>
  <tr>
    <td width='100%'><br><a href='opers.php'>Volver a la Agenda</a><br></td>
  </tr>
  <tr>
    <td width='100%'><p align='center'>Version 0.2</td>
  </tr>
</table> 
Ahora cuado llega a la pagina borrarimagen.php
Código PHP:
$path="imagenes/small/";
$pathi "imagenes/";
 
$imagenborrar =$_POST['imagen'];
 echo 
$imagenborrar;


foreach (
$_POST['imagen'] as $imagen){
  
    
$borrar $path.$imagenborrar;
    
$borrari $pathi.$imagenborrar;
   if (
file_exists($path)){ 
       
unlink($borrar);
       
unlink($borrari); 
       echo 
$path." --> Borrado<br>"
   } else { 
       echo 
"<b>".$path." --> FALLÓ Borrado</b><br>"
   } 

el valor sigue siendo Array cuando parce que cada componenete del array tiene su valor.
  #10 (permalink)  
Antiguo 13/07/2006, 12:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
En tus checkbox no pongas indice .. dejalo autonumérico ..

name=\"imagen[]"\

Usa las comillas como corresponde en el value del checkbox, esto no es correcto:
value=Thumbs.db

Ya te expuse antes como debe quedar:
Código PHP:
<input type="checkbox\" name=\"imagen[]\" value=\"".$imagen[$o]."\"> 
para que te quede
value="Thumbs.db"

Aquí:
$imagenborrar =$_POST['imagen'];
echo $imagenborrar;

vas a obtener siempre "Array" .. por qué es eso mismo . .un array .. debes recorrerlo para verlo (como se hace con el foreach() que tienes seguidamente) .. Si quieres ver que estructura tiene esa variable:

Código PHP:
echo "<pre>";
print_r($_POST['imagen']);
echo 
"</pre>"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 13/07/2006, 15:10
Avatar de da2
da2
 
Fecha de Ingreso: abril-2003
Ubicación: Catalunya
Mensajes: 239
Antigüedad: 20 años, 11 meses
Puntos: 0
De acuerdo

Gracias. Por fin entendí que al recorrer un array el valor del array se almacena en la variable ($imagen en mi caso).

Código PHP:
foreach ($_POST['imagen'] as $imagen){
     
$borrar $path.$imagen;
    
$borrari $pathi.$imagen;
   if (
file_exists($borrari)){ 
       
unlink($borrar);
       
unlink($borrari); 
       echo 
$imagen." --> Borrado<br>"
   } else { 
       echo 
"<b>".$imagen." --> FALLÓ Borrado</b><br>"
   } 

Muchisimas gracias.
  #12 (permalink)  
Antiguo 13/07/2006, 15:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por da2
Gracias. Por fin entendí que al recorrer un array el valor del array se almacena en la variable ($imagen en mi caso).

Código PHP:
foreach ($_POST['imagen'] as $imagen){
     
$borrar $path.$imagen;
    
$borrari $pathi.$imagen;
   if (
file_exists($borrari)){ 
       
unlink($borrar);
       
unlink($borrari); 
       echo 
$imagen." --> Borrado<br>"
   } else { 
       echo 
"<b>".$imagen." --> FALLÓ Borrado</b><br>"
   } 

Muchisimas gracias.
Ni me había fijado en el código (al detalle) .. por lo menos aunque costó .. tu mismo entendistes que generas un array y que hay que recorrerla.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 18:05.