Foros del Web » Programando para Internet » PHP »

Renombrar imagen en un form de tienda virtual

Estas en el tema de Renombrar imagen en un form de tienda virtual en el foro de PHP en Foros del Web. Hola a todos, Actualmente tengo un formulario de creación de productos para una tienda virtual el cual sube las imagenes de los productos manteniendo el ...
  #1 (permalink)  
Antiguo 17/02/2011, 21:44
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Renombrar imagen en un form de tienda virtual

Hola a todos,

Actualmente tengo un formulario de creación de productos para una tienda virtual el cual sube las imagenes de los productos manteniendo el nombre original con el que se suben, evidentemente esto es un problemon pues cuando suben otra con el mismo nombre tenemos problemas.

Querria añadirle al código que dejo abajo una opción que renombre la foto, con la id del producto o con letras y números aleatorios.


Código PHP:
<?
if ($e == 1){
    
$todo_ok 1;
    for (
$i=0$i<6$i++) {
        if (
$_FILES['imagen']['size'][$i] > 0) {
            if (!(
$_FILES['imagen']['type'][$i] == "image/gif" or $_FILES['imagen']['type'][$i]=="image/pjpeg" or $_FILES['imagen']['type'][$i]=="image/jpg" or $_FILES['imagen']['type'][$i]=="image/jpeg")) {
            
$todo_ok 0;
            
$error_imagen[$i] = "<br>La extensión de la imagen no es correcta.";
            }
            if (
is_file("../img_productos/".$_FILES['imagen']['name'][$i])) {
            
$todo_ok 0;
            
$error_imagen[$i] .= "<br>El nombre de la imagen  seleccionada (".$_FILES['imagen']['name'][$i].") ya existe.";
            }
        }
    }
    
    
// agregado de imagenes
    
for ($i=0$i<6$i++) {
        if(
$_FILES['imagen']['size'][$i] > 0) {
            
copy($_FILES['imagen']['tmp_name'][$i],"../img_productos/"$_FILES['imagen']['name'][$i]);
            
            
$sql_img "INSERT INTO productos_imagenes (id,id_producto,nombre) VALUES ('','".$id_insert."','"$_FILES['imagen']['name'][$i] ."' ) ";
            
$result mysql_query($sql_img);
        }
    }    
        
header("Location: exito.php?a=n&id_producto=$id");
        exit;
    }
}
?>
  #2 (permalink)  
Antiguo 17/02/2011, 22:58
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Renombrar imagen en un form de tienda virtual

Mi consejo sabio:

Código PHP:
$nombre=date('Ymdhis'); 
asi nunca se repetiran.
obvio que esto lo guardas al hacer el upload y en la base.


  #3 (permalink)  
Antiguo 18/02/2011, 05:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

no entiendo, donde pongo esa linea ...?
  #4 (permalink)  
Antiguo 18/02/2011, 08:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Ya la puse, pero tengo un problema con esto "[$i]", tengo 5 imagenes a subir, y este parametro creo que indica cual es la 1,2,3,4 y 5. Necesito saber como ponerlo.

Código PHP:
// agregado de imagenes
    
for ($i=0$i<6$i++) {
        if(
$_FILES['imagen']['size'][$i] > 0) {
            
copy($_FILES['imagen']['tmp_name'][$i],$carpeta.$nombre_fichero.$extension.);
            
            
$sql_img "INSERT INTO productos_imagenes (id,id_producto,nombre) VALUES ('','".$id_insert."','".$nombre_fichero.$extension."' ) ";
            
$result mysql_query($sql_img);
        }
    } 

y este es el form de la subida de fotos:

Código PHP:
<input type="file" name="imagen[]"
  #5 (permalink)  
Antiguo 18/02/2011, 08:59
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

Saludos

Al momento que utilizas la funcion copy

Código PHP:
Ver original
  1. copy($_FILES['imagen']['tmp_name'][$i],"../img_productos/". $_FILES['imagen']['name'][$i]);

Seguido de esa linea debes renombrar la imagen utilizando la funcion rename, tomando el nombre de la imagen actual, concatenando el $nombre como te indico enlinea777 y por ultimo ese va ser el nombre que guardaras en tu base de datos
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #6 (permalink)  
Antiguo 18/02/2011, 09:09
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Cita:
Iniciado por Nano_ Ver Mensaje
Saludos

Al momento que utilizas la funcion copy

Código PHP:
Ver original
  1. copy($_FILES['imagen']['tmp_name'][$i],"../img_productos/". $_FILES['imagen']['name'][$i]);

Seguido de esa linea debes renombrar la imagen utilizando la funcion [URL="http://php.net/manual/es/function.rename.php"]rename[/URL], tomando el nombre de la imagen actual, concatenando el $nombre como te indico enlinea777 y por ultimo ese va ser el nombre que guardaras en tu base de datos
Si pero claro no se como meter esa linea, puedes hacerme un ejemplo.
  #7 (permalink)  
Antiguo 18/02/2011, 09:36
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

Saludos

Seria algo de la siguiente manera:

Código PHP:
Ver original
  1. for ($i = 0; $i < 6; $i++) {
  2.     if ($_FILES['imagen']['size'][$i] > 0) {
  3.         copy($_FILES['imagen']['tmp_name'][$i], "../img_productos/" . $_FILES['imagen']['name'][$i]);
  4.         $random=date('Ymdhis');
  5.         $nombreImagenActual=$_FILES['imagen']['name'][$i];
  6.         $nombreImagenModif=$_FILES['imagen']['name'][$i].$random;
  7.         rename("../img_productos/$nombreImagenActual", "../img_productos/$nombreImagenModif");
  8.         $sql_img = "INSERT INTO productos_imagenes (id,id_producto,nombre) VALUES ('','" . $id_insert . "','$nombreImagenModif' ) ";
  9.         $result = mysql_query($sql_img);
  10.     }
  11. }
  12. header("Location: exito.php?a=n&id_producto=$id");
  13. }

Toca probarlo puede tener errores de sintaxys pero la idea es esa
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #8 (permalink)  
Antiguo 18/02/2011, 09:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Casi funciona, lo hace todo, pero al subir la imagen la pone asi:

images.jpg20110218044028
  #9 (permalink)  
Antiguo 18/02/2011, 09:43
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

Es que esa es la idea.

Para que las imágenes no queden con el mismo nombre!. Eso significa esta linea
Cita:
date('Ymdhis'); //20110218044028
Es el año, mes, dia ctual, hora, minuto y segundos.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 18/02/2011, 09:45
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Renombrar imagen en un form de tienda virtual

asi:
Código PHP:
              $nombreImagenModif=$random.$_FILES['imagen']['name'][$i]; 
  #11 (permalink)  
Antiguo 18/02/2011, 09:46
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

si pero si te fijas renombra la imagen y le pone "20110218044028" despues de la extensión "jpg" con lo cual la extesión que tiene el nuevo archivo es ".jpg20110218044028". Entiendo que ese "20110218044028" deberia ir antes del ".jpg"... no...?
  #12 (permalink)  
Antiguo 18/02/2011, 09:47
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Renombrar imagen en un form de tienda virtual

Cita:
Iniciado por accionti Ver Mensaje
si pero si te fijas renombra la imagen y le pone "20110218044028" despues de la extensión "jpg" con lo cual la extesión que tiene el nuevo archivo es ".jpg20110218044028". Entiendo que ese "20110218044028" deberia ir antes del ".jpg"... no...?

asi:

Código PHP:
              $nombreImagenModif=$random.$_FILES['imagen']['name'][$i]; 
colocas el ramdon antes del nombre
  #13 (permalink)  
Antiguo 18/02/2011, 09:47
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Gracias enlinea777, solo una duda, por que añade la fecha al nombre del archivo y no lo cambia entero para dejar algo como "20110218044028.jpg"...?
  #14 (permalink)  
Antiguo 18/02/2011, 09:48
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

aaaaaaaaaa jejejeeje Que pena se me paso, pero haz como te indica enlinea777 que así ya quedaría bien
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #15 (permalink)  
Antiguo 18/02/2011, 09:49
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

gracias Nano_, como le comentaba a enlinea777, por que añade la fecha al nombre del archivo y no lo cambia entero para dejar algo como "20110218044028.jpg"...?
  #16 (permalink)  
Antiguo 18/02/2011, 09:52
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

Saludos

Accionti solo es un consejo personal analiza el codigo!. Y no te esperes a que te indiquemos todo!.

Si te fijas en la siguiente linea
Código PHP:
Ver original
  1. $nombreImagenModif=$random.$_FILES['imagen']['name'][$i];
Se esta concatenando el random con el nombre de la imagen si lo que quieres es solo que quede el random entonces quitale el resto y concatenale .jpg
Código PHP:
Ver original
  1. $nombreImagenModif=$random.".jpg";
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #17 (permalink)  
Antiguo 18/02/2011, 10:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Una duda para finalizar,

Ahora quiero que borre la imagen de la carpeta en la que se encuentra, actualmente solo borra el apunte en la DB, y necesito que elimine la foto.
Código PHP:
Ver original
  1. // borro imagenes seleccionadas
  2.     for ($j=0; $j<count($borrar); $j++) {
  3.         if (is_file("../img_productos/".$borrar[$j])) {
  4.         unlink("../img_productos/".$borrar[$j]);
  5.         $sql = "DELETE FROM productos_imagenes WHERE nombre = '".$borrar[$j]."' and id_producto = $id_producto";
  6.         $result = mysql_query($sql);
  7.         }
  8.     }
  #18 (permalink)  
Antiguo 18/02/2011, 10:04
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

Saludos

Prueba de la siguiente manera:
Código PHP:
Ver original
  1. // borro imagenes seleccionadas
  2.     for ($j=0; $j<count($borrar); $j++) {
  3.         if (is_file("../img_productos/".$borrar[$j])) {
  4.        chdir('../img_productos/');
  5.        unlink($borrar[$j]);
  6.        $sql = "DELETE FROM productos_imagenes WHERE nombre = '".$borrar[$j]."' and id_producto = $id_producto";
  7.         $result = mysql_query($sql);
  8.         }
  9.     }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #19 (permalink)  
Antiguo 18/02/2011, 10:18
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Funciona GENIAL.

Solo me queda el paso de borrar las imagenes asociadas al producto cuando se borra el producto, podeis hecharme un cable en eso, de ese modo ya termino.
Código PHP:
Ver original
  1. if ($e == 1){
  2.    
  3.     $todo_ok = 1;
  4.    
  5.     if ($id_producto == ""){
  6.         $todo_ok = 0;
  7.         $error_producto = "<br>Debe seleccionar al menos 1 producto";
  8.     }
  9.  
  10.    
  11.     if ($todo_ok == 1){
  12.         while (list ($indice, $valor) = each ($id_producto)) {
  13.  
  14.             //Borro los productos seleccionados
  15.             $sql = "DELETE FROM productos_datos WHERE id = $valor";
  16.             $result = mysql_query($sql);
  17.             //Borro los proveedores del producto
  18.             $sql = "DELETE FROM prod_prov WHERE id_producto = $valor";
  19.             $result = mysql_query($sql);
  20.             header("Location: exito.php?a=e");
  21.         }
  22.        
  23.     }
  24. }
  #20 (permalink)  
Antiguo 18/02/2011, 10:54
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Renombrar imagen en un form de tienda virtual

Cita:
Iniciado por accionti Ver Mensaje
Gracias enlinea777, solo una duda, por que añade la fecha al nombre del archivo y no lo cambia entero para dejar algo como "20110218044028.jpg"...?
pues es obvio por la fecha es muy dificil saver al ojo que imagen era por eso es mejor mantener el monbre original.

si si quieres ver la carpeta no es nesesario estar viendo foto por foto para encontrar una en espesifico
  #21 (permalink)  
Antiguo 18/02/2011, 10:55
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Renombrar imagen en un form de tienda virtual

Cita:
Iniciado por accionti Ver Mensaje
Funciona GENIAL.

Solo me queda el paso de borrar las imagenes asociadas al producto cuando se borra el producto, podeis hecharme un cable en eso, de ese modo ya termino.
Código PHP:
Ver original
  1. if ($e == 1){
  2.    
  3.     $todo_ok = 1;
  4.    
  5.     if ($id_producto == ""){
  6.         $todo_ok = 0;
  7.         $error_producto = "<br>Debe seleccionar al menos 1 producto";
  8.     }
  9.  
  10.    
  11.     if ($todo_ok == 1){
  12.         while (list ($indice, $valor) = each ($id_producto)) {
  13.  
  14.             //Borro los productos seleccionados
  15.             $sql = "DELETE FROM productos_datos WHERE id = $valor";
  16.             $result = mysql_query($sql);
  17.             //Borro los proveedores del producto
  18.             $sql = "DELETE FROM prod_prov WHERE id_producto = $valor";
  19.             $result = mysql_query($sql);
  20.             header("Location: exito.php?a=e");
  21.         }
  22.        
  23.     }
  24. }

asi:

unlink();

un consejo nada se borra solo se desabilita o se comenta dependiendo de que sea
  #22 (permalink)  
Antiguo 18/02/2011, 11:19
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

si pero como adapto el código para que elimine las fotos asociadas solo a esa id de producto.
Código PHP:
Ver original
  1. for ($j=0; $j<count($borrar); $j++) {
  2.     if (is_file("../img_productos/".$borrar[$j])) {
  3.     chdir('../img_productos/');
  4.     unlink($borrar[$j]);
  5.     $sql = "DELETE FROM productos_imagenes WHERE nombre = '".$borrar[$j]."' and id_producto = $id_producto";
  6.     $result = mysql_query($sql);
  #23 (permalink)  
Antiguo 18/02/2011, 13:11
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Renombrar imagen en un form de tienda virtual

Saludos

Debes hacer un select y dependiendo de los resultados, borran las imágenes asociadas.
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Última edición por Nano_; 18/02/2011 a las 13:26
  #24 (permalink)  
Antiguo 18/02/2011, 13:35
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

estoy pez, y con lo que me aportais vosotros estoy intentando adaptar mi tienda, si eres tan amable, puedes ponerme un ejemplo...?

Gracias,
  #25 (permalink)  
Antiguo 19/02/2011, 09:13
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: Renombrar imagen en un form de tienda virtual

mish, y no quieres que te hagamos el codigo.
  #26 (permalink)  
Antiguo 19/02/2011, 09:31
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Renombrar imagen en un form de tienda virtual

Cita:
Iniciado por accionti Ver Mensaje
estoy pez, y con lo que me aportais vosotros estoy intentando adaptar mi tienda, si eres tan amable, puedes ponerme un ejemplo...?

Gracias,
Claro, como no...

Cita:
- SELECCIONO LAS FOTOS DONDE EL ID DEL PRODUCTO SEA IGUAL A X (DONDE X ES CUALQUIER NUMERO)
- GUARDO EL RESULTADO DE LA CONSULTA EN UN ARREGLO
- CUENTO LA CANTIDAD DE ELEMENTOS DEL ARREGLO
- SI ES MAYOR A 1, RECORRO EL ARREGLO ELIMINANDO DE LA CARPETA LAS FOTOS QUE TENGAN EL MISMO NOMBRE QUE LOS ELEMENTOS DEL ARREGLO
- SI EL NUMERO DE ELEMENTOS ES IGUAL A 1, EVITO EL BUCLE Y ELIMINO DIRECTAMENTE LA IMAGEN ACCEDIENDO AL ELEMENTO 0 DEL ARREGLO.
Algo así lo haría yo.

Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #27 (permalink)  
Antiguo 19/02/2011, 17:38
 
Fecha de Ingreso: diciembre-2010
Mensajes: 30
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Renombrar imagen en un form de tienda virtual

Gracias Spider Boy, por desgracia parece haber otros usuarios que les cuesta hechar un cable.

Etiquetas: renombrar, virtual, tiendas, formulario
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 11:50.