Foros del Web » Programando para Internet » PHP »

Problema con el nombre de imagen.

Estas en el tema de Problema con el nombre de imagen. en el foro de PHP en Foros del Web. Buenas, tengo una duda a ver si alguien me puede hechar una mano se lo agradeceria mucho. En una tabla guardo el nombre de una ...
  #1 (permalink)  
Antiguo 07/03/2007, 05:32
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Problema con el nombre de imagen.

Buenas, tengo una duda a ver si alguien me puede hechar una mano se lo agradeceria mucho. En una tabla guardo el nombre de una imagen(que lo hago coincidir con el registro), y el numero de registro asociado a esa imagen. Por ejemplo: nombre de la imagen: 1234 numero de registro 1234. Ahora si el registro tiene 3 imagenes asociadas o mas, quisiera hacer algo como esto:
Nombre de la primera imagen:
1234-1-3
segunda:
1234-2-3
tercera:
1234-3-3
Nombre del registro: 1234
Se entiende lo que quiero hacer, por favor si alguien sabe como hacerlo le agradeceria su ayuda. Salu2
__________________
->Aprender es un proceso que incluye el error..
  #2 (permalink)  
Antiguo 07/03/2007, 05:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 78
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problema con el nombre de imagen.

Hola,
La verdad es que igual no te he entendido muy bien... pero si tienes el resgitro, por ejemplo en $registro y en número de imágenes, por ejemplo en $num_img, lo podrías hacer así:

for ($i=1; $i<=$num_img; $i++){
$nombre = $registro . "-" . $i . "-" . $num_img;
...
}

Espero que te sirva, y si no es así... aclarame un poco qué necesitas y te intentaré ayudar. Suerte.
  #3 (permalink)  
Antiguo 07/03/2007, 05:51
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Problema con el nombre de imagen.

Gracias por responder IngProd, si basicamente seria eso, pero para ello desde el formulario donde subo las imagenes tendria que agregar un campo que indique la cantidad de imagenes que va a introducir. Y digamos que era algo que queria evitar, por si el usuario por ejemplo se confunde y pone que son 4 imagenes cuando son 5.
De todos modos te muestro el script donde guardo las imagenes
Código PHP:
<?
//nombre del archivo subido
$nombre_archivo=$HTTP_POST_FILES['archivo']['name'];
echo
"Nombre del archivo: $nombre_archivo<br>";
//nombre del archivo ligado al registro
$foto="$registro".".jpg";
echo
"$foto";
$file=$HTTP_POST_FILES['archivo']['tmp_name'];
//renombro el archivo.
@rename($nombre_archivo,$foto);
$var_arch=explode('.',$foto);
if(
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
copy($_FILES['archivo']['tmp_name'],"C:/AppServ/www/secretaria/imagenes/".$foto);
//envio los datos a la base.
$ssql=mysql_consulta("INSERT INTO `sa_imagenes`(`tb_imagen_id`,`tb_imagen_nombre`,`tb_imagen_registro`, `tb_imagen_tipo`) VALUES(0,'$var_arch[0]','$registro','.$var_arch[1]');","sec_administrativa","$usuario","$pass");
} else {
    echo 
"Posible ataque de carga de archivo: " $HTTP_POST_FILES['archivo']['name'];
}
$ssql=mysql_insert_id();
if(
$ssql)
echo
"La imagen ha sido Guardada";
else
echo
"NO se ha podido guardar la imagen";
?>
En la base guardo el nombre separado de la extension para no tener que complicarme con los header. Directamente cuando quiero mostrar la imagen muestro el nombre sin importar la extension (gif, jpg etc).
__________________
->Aprender es un proceso que incluye el error..
  #4 (permalink)  
Antiguo 07/03/2007, 11:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 78
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Problema con el nombre de imagen.

Pero para hacer eso que has puesto tienes que saber también cuántas imágenes son no ¿? A no ser que las vaya subiendo de una en una... entonces, con contar con una consulta a la base de datos cuántas hay ya, tendrías el número secuencial que le corresponde... no sé si me he explicado.
Suerte!
  #5 (permalink)  
Antiguo 07/03/2007, 14:58
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Problema con el nombre de imagen.

Bueno, todo es cuestion de entender bien la situación y tener ingenio. Si el número de imágenes es hasta de 3 pues al momento de subir las imagenes les cambias secuencialmente los nombres para que queden 2545-1, 2545-2, 2545-3 y ya está, los jalas así.

Ahora que si el numero de imagenes es indeterminado e ilimitado entonces tendrías que hacer otra tabla en la que tenga un campo que lleve el numero identificador del registro de la primera tabla, para que mediante ese numero se jale el id de la tabla de imagenes y por ende, las fotos, no me entendiste? no importa, no creo que sea el caso. Suerte.
  #6 (permalink)  
Antiguo 08/03/2007, 05:18
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Problema con el nombre de imagen.

Gracias por responder ElJavista, ya lo solucione, en la tabla donde guardo la imagen agrege un campo mas que se llama indice, por que el numero de imagenes no siempre es tres, entonces lo que hago es verificar si el registro ya ha sido insertado, saco el indice lo incremento y guardo el nombre de la nueva imagen, quedando 2545-1, 2545-2, 2545-3 y asi sucesivamente. Gracias tambien IngProd me guie para hacerlo con lo que me dijiste. Les dejo el codigo a lo mejor me ayudan a optimizarlo.
Código PHP:
<?
//nombre del archivo subido
$nombre_archivo=$HTTP_POST_FILES['archivo']['name'];
//compruebo si ya hay un registro asociado a esa imagen
$sql=mysql_consulta("SELECT * FROM `sa_imagenes` WHERE 1 AND `tb_imagen_registro`='$registro'","sec_administrativa","$usuario","$pass");
if(
mysql_affected_rows()==0)
$cantidad=1;
else{
while(
$row=mysql_fetch_array($sql))
{
$cantidad=$row["tb_imagen_indice"];
}
$cantidad+=1;//proximo indice
}
$indice=$cantidad;
$separator="-";
$cantidad=$separator.$cantidad;
$registro=$registro.$cantidad;
//nombre del archivo ligado al registro
$foto="$registro".".jpg";
//renombro el archivo.
@rename($nombre_archivo,$foto);
$var_arch=explode('.',$foto);
if(
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
copy($_FILES['archivo']['tmp_name'],"C:/AppServ/www/secretaria/imagenes/".$foto);
//envio los datos a la base.
$ssql=mysql_consulta("INSERT INTO `sa_imagenes`(`tb_imagen_id`,`tb_imagen_nombre`,`tb_imagen_registro`, `tb_imagen_tipo`, `tb_imagen_indice`) VALUES(0,'$var_arch[0]','$registro','.$var_arch[1]','$indice');","sec_administrativa","$usuario","$pass");
} else {
    echo 
"Posible ataque de carga de archivo: " $HTTP_POST_FILES['archivo']['name'];
}
$ssql=mysql_insert_id();
if(
$ssql)
echo
"<br><span style='background-color: #FFFFFF'>La imagen ha sido Guardada</span>";
else
echo
"<br><span style='background-color: #FFFFFF'>##Error No se pudo guardar la imagen</span>";
?>
Creo que se puede optimizar el while con algo que me permita directamente posicioname en el ultimo registro , porque en realidad tengo que sacar el indice del ultimo registro, y el while lo que hace es recorrer todos al pedo hasta que llega al ultimo. Saludos y muchas gracias por responder.
__________________
->Aprender es un proceso que incluye el error..
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 15:02.