Foros del Web » Programando para Internet » PHP »

Cambiar nombre al guardar ruta de img en la bd

Estas en el tema de Cambiar nombre al guardar ruta de img en la bd en el foro de PHP en Foros del Web. Hola amigos: Tengo un código que me guarda la ruta de las imagenes en la Bd y la imagen en una carpeta en el sitio. ...
  #1 (permalink)  
Antiguo 17/04/2009, 16:03
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Pregunta Cambiar nombre al guardar ruta de img en la bd

Hola amigos:

Tengo un código que me guarda la ruta de las imagenes en la Bd y la imagen en una carpeta en el sitio.

Lo que quiero hacer es que al guardarla en ambas partes le cambie el nombre que traiga la foto y le asigne un autonumerico.

Este es el código con que guardo:

$archivo = getimagesize($_FILES['img']['tmp_name']);
switch ($archivo[2]) {
case 1:
$imagen = imagecreatefromgif($_FILES['img']['tmp_name']); break;
case 2:
$imagen = imagecreatefromjpeg($_FILES['img']['tmp_name']); break;
case 3:
$imagen = imagecreatefrompng($_FILES['img']['tmp_name']); break;
// etcétera //
}

if(!$imagen)
die('No se pudo crear la imagen.');


$original = $imagen;
$original_w = imagesx($original);
$original_h = imagesy($original);

$max = 175; //AQUI PONES EL TAMAÑO DE LA IMAGEN A LO QUE QUIERAS

if($original_w>$original_h) {
$muestra_w = $max;
$muestra_h = intval(($original_h/$original_w)*$max);
} else {
$muestra_w = intval(($original_w/$original_h)*$max);
$muestra_h = $max;
}

$muestra = imagecreatetruecolor($muestra_w,$muestra_h);

$muestra = imagecreatetruecolor($muestra_w,$muestra_h);

imagecopyresampled($muestra,$original,0,0,0,0, $muestra_w,$muestra_h,$original_w,$original_h);
imagedestroy($original); // aqui destruyo el original, pues no hace falta ya

// me verifica haya sido cargado el archivo
$ruta_destino = "../imgs/";
$namefinal = strtolower(str_replace(' ', '-', $_FILES['img']['name']));

// Quitamos la extension
list($namefinal, $extension) = explode('.', $namefinal);
// Agregamos la extension .jpg
$uploadfile= $ruta_destino . $namefinal . '.jpg';
$namefinal= ereg_replace (" ", "", $namefinal);
//quito los espacios entre las palabtas del nombre si los hay
if(imagejpeg($muestra,$uploadfile,'100')) { // se coloca en su lugar final
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$uploadfile."\">".$_FILES['img']['tmp_name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['img']['type']."</i><br>";
echo "Peso: <i>".$_FILES['img']['size']." bytes</i><br>";
echo "<br><hr><br>";
}
//Insercion de los datos, ojo la imagen se graba con su nombre original en la tabla (es un campo varchar)
$sql_ins = "INSERT INTO articulos (imagen) " .
"VALUES ('$namefinal')";
$res = mysql_query($sql_ins) or die ( "Error MySQL dice: " . mysql_error() );

Gracias por su ayuda...
  #2 (permalink)  
Antiguo 17/04/2009, 16:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Nombre autonumerico?, parece algo complicado, porque para eso necesitarias tener en tu tabla un campo numerico con auto increment, primero insertar el registro, despues obtener el id con mysql_insert_id() y renombrar la imagen o moverla a su lugar de destino hasta despues de obtener el numero correspondiente.

Creo que no necesitarias guardar la extension del archivo, al mostrarla solo tendrias que hacer esto:

Código php:
Ver original
  1. $imagen = '../' . $id_en_la_tabla . '.jpg';
  2. echo "<img src=\"$imagen\" alt=\"Texto alternativo\" />";
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 17/04/2009, 16:47
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Hola, Triby.

Es que tengo que asignarselo con el código, pues ya tengo un autonumerico en la tabla. Sería que cambiar el valor de $namefinal' por un numero cada vez que se guardara (no lo se hacer) y tambien cambiar el nombre de la foto por el mismo numero. ?????
  #4 (permalink)  
Antiguo 17/04/2009, 17:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Cita:
Iniciado por kimmy
ya tengo un autonumerico en la tabla
Solo puedes tener un campo auto incrementable por tabla, la solucion es como te comente en el mensaje anterior:

Código php:
Ver original
  1. $sql_ins = "INSERT INTO articulos (aqui todos los campos necesarios, excepto imagen) " .
  2. "VALUES (aqui los valores correspondientes)";
  3. $res = mysql_query($sql_ins) or die ( "Error MySQL dice: " . mysql_error() );
  4.  
  5. // Obtienes el id del ultimo registro insertado y lo usas para el nombre:
  6. $namefinal = mysql_insert_id();
  7.  
  8. // Guardas el archivo:
  9. $uploadfile= $ruta_destino . $namefinal . '.jpg';
  10. //quito los espacios entre las palabtas del nombre si los hay
  11. if(imagejpeg($muestra,$uploadfile,'100')) { // se coloca en su lugar final
  12.     // Se guardo correctamente
  13.     // Si aun crees necesario guardar el nombre con ruta en la base de datos:
  14.     $query = 'UPDATE articulos SET imagen = '$uploadfile' WHERE id_de_articulo = $namefinal';
  15.     mysql_query($query) or die(mysql_error());
  16. }
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 17/04/2009, 17:46
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Me da este error:

Warning: imagejpeg(): supplied argument is not a valid Image resource in C:\AppServ\www\phpMyAdmin\xxxxx.php on line 41
  #6 (permalink)  
Antiguo 17/04/2009, 18:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Es que tienes que mantener todo el codigo de arriba (desde $ruta_final = '../imgs/'; hasta arriba), donde generas la imagen y usar lo que te sugeri al final, para guardar datos y generar el archivo.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 17/04/2009, 18:50
Avatar de kimmy  
Fecha de Ingreso: julio-2008
Mensajes: 841
Antigüedad: 15 años, 9 meses
Puntos: 15
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Listo, lo único que le cambié fue:

$query = 'UPDATE articulos SET imagen = '$namefinal' WHERE id_de_articulo = $namefinal'

y así logré lo que estaba buscando.

Muchiiiiisimas Gracias Triby, tú nunca me dejas en el aire. Te lo agradezco mucho y espero algún día poder ayudarte en algo.

Saludos, Kimmy
  #8 (permalink)  
Antiguo 18/04/2009, 11:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Cambiar nombre al guardar ruta de img en la bd

Genial, me da gusto que funcione como lo necesitas.
__________________
- León, Guanajuato
- GV-Foto
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:03.