Foros del Web » Programando para Internet » PHP »

Borrar archivos subidos con la función UPLOAD de PHP

Estas en el tema de Borrar archivos subidos con la función UPLOAD de PHP en el foro de PHP en Foros del Web. ¡Hola! Recientemente probé la función UPLOAD de PHP para subir archivos, en mi caso fotos de extensión jpg o gif. Estas fotos están asociadas a ...
  #1 (permalink)  
Antiguo 13/06/2005, 09:39
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Pregunta Borrar archivos subidos con la función UPLOAD de PHP

¡Hola!

Recientemente probé la función UPLOAD de PHP para subir archivos, en mi caso fotos de extensión jpg o gif. Estas fotos están asociadas a una persona, mediante una base de datos. En esta base de datos lo que aparece además del identificador de la persona, es el nombre del archivo de la fotografía.
Ahora bien, necesito una función que me permita eliminar físicamente ese archivo.
Ejemplo: me llamo malucha y voy a subir una foto mía. La subo y en la base de datos le pongo la dirección a la que apunta enlazada con mi nombre de usuario. Me quiero dar de baja, así que me borraré yo y quiero que también se borre la fotografía que subí, el problema es ¿cómo?
¿Se entiende?
Agradezco cualquier ayuda puesto que google en estos momentos no me ayudó demasiado. Gracias!
  #2 (permalink)  
Antiguo 13/06/2005, 10:04
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 18 años, 10 meses
Puntos: 2
Cita:
Iniciado por malucha
¡Hola!

Recientemente probé la función UPLOAD de PHP para subir archivos, en mi caso fotos de extensión jpg o gif. Estas fotos están asociadas a una persona, mediante una base de datos. En esta base de datos lo que aparece además del identificador de la persona, es el nombre del archivo de la fotografía.
Ahora bien, necesito una función que me permita eliminar físicamente ese archivo.
Ejemplo: me llamo malucha y voy a subir una foto mía. La subo y en la base de datos le pongo la dirección a la que apunta enlazada con mi nombre de usuario. Me quiero dar de baja, así que me borraré yo y quiero que también se borre la fotografía que subí, el problema es ¿cómo?
¿Se entiende?
Agradezco cualquier ayuda puesto que google en estos momentos no me ayudó demasiado. Gracias!
antes de borrar cualqueir registro, haces una consulta para obtener los archivos asociados al usuario. Luego esa lista la pasas a la funcion unlink qu epuedes consultar en http://www.php.net/manual/en/function.unlink.php cuando se borren los archivos eleminas los registros de tu BD.
Basicamente esa seria la mecanica y alo demas es que uses lapiz y papel y codigo..

Saludos.
  #3 (permalink)  
Antiguo 13/06/2005, 15:09
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Lo probaré, muchas gracias por tu ayuda :P
  #4 (permalink)  
Antiguo 15/06/2005, 09:36
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Pregunta Probando unlink() aunque no sé si será ese el error...

¡Hola!
Aquí estoy de nuevo preguntando por si os aburrís y eso, es lo que tenemos los novatos, que no hacemos más que dar la vara :P

Bien, lo que yo quiero hacer es lo siguiente: tengo una lista de habitaciones, cada habitación tiene unas fotos, si quiero borrar esa habitación, tendré que borrar también las fotos, para ello compruebo en la tabla fotos, que el ID de la habitación que quiero borrar, coincida con el ID_Hab de la tabla fotos. De momento solo los guardo en la variable, y conforme a esa selección de registros quiero borrar las fotos de la tabla FOTOS cuyo nombre está guardado en el campo Nombre.

Después viene más rollo eso de borrar los registros de la habitación de las dos tablas, etc, pero quiero ir poco a poco y si ya esto no me sale...
El código es el siguiente:

Código PHP:
  <?php
            $id_h
=$_POST["id"];        
            
            include(
"inc/BD_connect.inc"); 
            
$dbd=conecta();
            
            
$seleccion="SELECT * FROM fotos WHERE ID_Hab=$id_h";
            
$seleccion mysql_query ($seleccionn$dbd);

            
            while(
$row=mysql_fetch_array($seleccionMYSQL_ASSOC))
            { 
       
    
/* Esto lo cogí de un ejemplo de la web de php.net creo recordar para ver si imprimía, pero ni imprime ni ná, lo importante es el unlink xD */
//             printf("ID_Hab: %s  Name: %s", $row["ID_Hab"], $row["Nombre"]);

                    
unlink("archivos/".$row['Nombre']);
                
            
            }
            
?>

             <br>
            <a href="delImg.php"> Volver </a>
He estado mirando en google, pero la verdad, dan una explicación "extensísima" y ejemplos "muchos y variados" (ironía) xD

Así que me he acordado de vosotros que ya me ayudasteis antes, el error que me da es el siguiente:


Cita:
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\appserv\www\web\admin\delscript.php on line 77

Volver"
Ya estuve buscando información, incluso en otros foros pero no me dijeron nada que me fuera realmente útil.

Espero que me ayudeis un poquito. Muchas gracias a todos los que me echeis una mano con estos problemas (que al final siempre son tonterías) xD
  #5 (permalink)  
Antiguo 15/06/2005, 10:27
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Exclamación Nuevos dilemas xD

El problema que tenía hasta ahora está solucionado.

Ahora tengo un dilema:

Me funciona todo perfectamente, este es el nuevo código:
Código PHP:
<?php
            $id_h
=$_POST["id"];        
            echo 
$id_h;
   
            include(
"inc/BD_connect.inc"); 
            
$dbd=conecta();
            
            
$sql="SELECT * FROM fotos WHERE ID_Hab=$id_h";
            
$seleccion mysql_query ($sql$dbd);
            
            while(
$row=mysql_fetch_array($seleccionMYSQL_ASSOC))
            { 
             
unlink("archivos/".$row['Nombre']);
            }
            
   
$delfotos="DELETE FROM fotos WHERE ID_Hab=$id_h";
   
$resultado mysql_query ($delfotos$dbd);
   
$delprecios="DELETE FROM precios WHERE ID=$id_h";
   
$solucion mysql_query ($delprecios$dbd);
   
   if ((!
resultado)&&(!solucion)) {
    echo 
"<p class='center'>** ERROR **</p>";
   }
   else {
    echo 
"<p class='center'>Los archivos y el registro se ha eliminado correctamente</p>";
    
unlink("Hab_Del/".$id_h.".php");
    
unlink("Hab_Up/".$id_h.".php");
    
   }   
   
?>
Ahora viene el problema. Tengo una página por habitación, pero en algunas habitaciones igual no hay ninguna fotografía!! ¿Cómo soluciono esto? Quiero decir, como le digo, si no tiene ninguna foto, que ponga la foto por defecto (que sea por ejemplo sinnombre.jpg).

Además, otro dilema: de esta manera, con los dos últimos unlink, borro las páginas que hacían referencia a esa habitación: para dar de alta las fotos para la habitación y para borrar la habitación con las fotos.

No hay una manera de hacer un pequeño script que cuando creamos un nuevo tipo de habitación cree automáticamente estas dos páginas con el mismo contenido variando únicamente los valores de las variables? Estaría muy bien. Si alguien tiene noticias, POR FAVOR, no se olviden de mí.

Gracias por todo! :P

Última edición por malucha; 15/06/2005 a las 10:34
  #6 (permalink)  
Antiguo 15/06/2005, 10:41
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 18 años, 11 meses
Puntos: 1
Pues si lo que quieres es que cuando al ver la info de una habitacion con su foto, comprueba si existe y si no existe muestra la de por defecto, y lo compruebas con la funcion file_exists (nombre_fichero) que devuelve verdadero si existe el fichero, es decir:

Código PHP:

<?php if (file_exists("nombre_de_la_foto"))
   
$imagen="ruta_imagen";
else
   
$imagen="nombre_de_la_foto";
?>

<img src="$imagen">
Bueno más o menos se entiende, está en parte en pseudocódigo.

Y para tu ultima pregunta de utilizar un script para crearte nuevas páginas, eso va a ser un poco... nose, mejor te buscas info sobre el mod_rewrite, y casi sin hacer nada tendras eso que quieres.

Un saludo.
  #7 (permalink)  
Antiguo 15/06/2005, 10:56
Avatar de malucha  
Fecha de Ingreso: abril-2005
Mensajes: 70
Antigüedad: 19 años
Puntos: 0
Atacando de nuevo...

Veamos, lo de file_exists no se si se podría usar en este caso. Ya que tu le das a subir imagen y te sube la imagen con el nombre que tiene, cómo podría yo sacar el nombre de ahí. Vamos,
Código PHP:
 
<?php if (file_exists("quénombresesuponequepongoaquí?")) 
   
$imagen="ruta_imagen"
else 
   
$imagen="nombre_de_la_foto"
?>
Y gracias por la info sobre la función de mod_rewrite, le echaré un ojo.

Gracias por todo de todas formas :P
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:21.