Foros del Web » Programando para Internet » PHP »

Cambiar nombre a una imagen al subir a mi mysql

Estas en el tema de Cambiar nombre a una imagen al subir a mi mysql en el foro de PHP en Foros del Web. Hola, estoy realizando un gestor de noticias, en el cual debe tener imagenes de las noticias; mi tabla es asi: titulo autor fecha fuente noiticia ...
  #1 (permalink)  
Antiguo 16/06/2009, 18:21
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 16 años, 2 meses
Puntos: 2
Cambiar nombre a una imagen al subir a mi mysql

Hola, estoy realizando un gestor de noticias, en el cual debe tener imagenes de las noticias;


mi tabla es asi:

titulo
autor
fecha
fuente
noiticia
IMAGEN


todo me funciona perfectamente, solo que cuando subo una imagen con el mismo nombre que tiene una anterior que halla subido esa imagen si me sistituye.


Es decir por ejemplo, yo registro una noticia y la imagen se llama noticia.png
esta imagen se registrara perfectamente sin problema alguno. luego si yo subo otra noticia y por casualidad la imagen se llama igual noticia.png la imagen que tenia antes se me sustituye por la nueva! :(

como puedo hacer que no suceda eso? como la renombro?

pondre el codigo que utilizo porsi alguien me puede ofrecer su ayuda!

Código PHP:
<?

include("conexion.php"); 
$link=Conectarse(); 


$titulo=$_POST['titulo'];
$autor=$_POST['autor'];
$fuente=$_POST['fuente'];
$noticia=$_POST['noticia'];
$noticia2=$noticia;
$fecha=date("d-m-Y h:i:s a"); 

$foto="fotos/".$_FILES["foto"]["name"]; 
$foto_tmp $_FILES["foto"]["tmp_name"]; 

if(
is_uploaded_file($foto_tmp)){ 
move_uploaded_file($foto_tmp,$foto); 


    
$query=mysql_query("INSERT INTO noticias(titulo,autor,fuente,noticia,noticia2,fecha,foto) VALUES ('$titulo','$autor','$fuente','$noticia','$noticia2','$fecha','$foto')",$link);

la imagenes las guardo en una carpeta llamada fotos.

ayuda por favor.
Gracias...
  #2 (permalink)  
Antiguo 16/06/2009, 18:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Cambiar nombre a una imagen al subir a mi mysql

se entiende, por favor busca en el foro... ya he visto varias soluciones...

usa uniqid(), md5() no se... algún ciclo hasta determinar que no exista el nombre ya... etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/06/2009, 21:54
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Cambiar nombre a una imagen al subir a mi mysql

Hola amigo! nada yo busque en el foro y no vi nada parecido!

Como podria renombrar el archivo que stoy subiendo para que no se sustituya por otro que suba con el misma nombre?

Gracias! ayudaaa
  #4 (permalink)  
Antiguo 22/06/2009, 22:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Cambiar nombre a una imagen al subir a mi mysql

Pues ya te lo comento tienes que revisar que no exista previamente el nombre y si existe le asignas otro, todo esto dentro de un ciclo para checar el nombre hasta que no exista.

Saludos.
  #5 (permalink)  
Antiguo 22/06/2009, 22:29
Avatar de joelluis17  
Fecha de Ingreso: septiembre-2008
Mensajes: 182
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Cambiar nombre a una imagen al subir a mi mysql

pero esque no logro entender amigo! me puedes dar una mano? con el codigo que postee arriba?

seria algo asi como hacer una consulta antes de registrar el archivo? y si existe que diga ya existe otro archivo con ese nombre?

pero esque yo no quiero asi, porque si varias personas registraran un archivo llamado "documento.pdf" entocnes no puedo privarlos de eso amigo!
  #6 (permalink)  
Antiguo 23/06/2009, 01:41
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 19 años, 2 meses
Puntos: 49
Respuesta: Cambiar nombre a una imagen al subir a mi mysql

haber amigo lo que te tratan de explicar es que puedes crearle un nombre aleatorio por ejemplo con round o md5 etc.... al nombre y te evitas que este se repita, por ejemplo... el que uso yo....

Código php:
Ver original
  1. <?php
  2. //GENERADOR DE CODIGOS ALEATORIOS
  3.     $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
  4.     $cad = "";
  5.     for($i=0;$i<15;$i++) {
  6.     $cad .= substr($str,rand(0,62),1); 
  7.     }
  8. /*con eso generas una cadena casi irrepetible de 15 digitos aleatorios y lo puedes configurar a gusto
  9. ahora solo quedaría agregarlo a tu imagen....
  10. por ejemplo
  11. */
  12. $imagen = ("$cad".$_FILES['imagen']['name']);
  13. //y ya se renombra
  14. //ahora si quieres hacer un poco mas optima la subida te aconsejaria quitar caracteres especiales y demás.... te paso una funcion
  15. ?>
  16. <?php
  17. function replace_filename($str,$min = 0) {
  18.     $str = ereg_replace("[^a-zA-Z0-9.()]",'_',$str);
  19.     return ($min == 1) ? strtolower($str) : $str;
  20. }
  21.  
  22. //y después solo aplicamos
  23. $imagen = replace_filename($imagen);
  24. ?>

eso como para empezar espero te sirva ;)

saludos
__________________
Gokuh Salvo al mundo. PUNTO!!!!
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 22:12.