Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2012, 16:22
Avatar de catpaw
catpaw
 
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
armar código para verificar y crear nombres de archivos

hola forer@s, creo que he dado mucha lata ultimamente

pues aquí otra vez

verán, hago un upload de imágenes con uploadify (si sigo peleándome con el, creo que ya lo odio), la forma en que actúa este plugin (o como se llame) es que si por ejemplo el usuario elige subir 3 imágenes, se llama 3 veces al php donde hace el move_uploaded_file, entonces ahi mismo yo armo el nombre del archivo que se va a subir y lo guardo en la bd junto con su ruta,

lo armo asi:
Código PHP:
$fileName="img_".$id_publicacion
pero aquí viene el problema, retomando el ejemplo, el usuario hizo la publicación con el id 30, quiere subir 3 imágenes, en la primera todo bien, el nombre se guardaría:

img_30

la segunda imagen el nombre quedaria igual img_30

necesito verificar que:

si no existe el nombre lo cree asi:

img_30_1

si ya existe, verificar el numero que tiene al ultimo y sumarle 1 para que el segundo sea:

img_30_2

y así sucesivamente

el codigo que tengo actualmente es este:

Código PHP:
include('../conexion_mysql/conecta_db.php');
$conn_mysql conecta_db();

$query_id="select max(id_publicacion) as last from publicaciones";
$res_id=mysql_query($query_id) or die ("Error ".mysql_error());
$row_id=mysql_fetch_array($res_idMYSQL_ASSOC);
$id_publicacion=$row_id['last'];
mysql_free_result($res_id);
    
$root $_SERVER['DOCUMENT_ROOT'];
$tempFile $_FILES['Filedata']['tmp_name'];
$targetPath $root.'/images/uploads/';
$fileName "img_".$id_publicacion;

$targetFile $targetPath.$fileName;

move_uploaded_file($tempFile,$targetFile);
    
$sql_insert="Insert into imagenes (nombre_img, ruta_img, id_publicacion) values ('$fileName', '$targetFile', '$id_publicacion')";
mysql_query($sql_insert) or die('Error en la inserci&oacuten: '.mysql_error());
        
echo 
"ok"
Entonces yo trate de añadir estas lineas:

Código PHP:
    $cont=1;
    
$fileName="img_".$id_publicacion."_".$cont;
    
$sql_query="select nombre_img from imagenes where id_publicacion='$id_publicacion'";
    
$res=mysql_query($sql_query) or die('Error en la consulta: '.mysql_error());
    while(
$row mysql_fetch_array($res,MYSQL_ASSOC)){
        if(
$row['nombre_img']==$fileName){
            
$fileName="img_".$id_publicacion."_".$cont+1;
        }
    } 
pero el problema de este código es que el primer insert me guarda img_30_1 y los 2 siguientes solo guarda el numero 1

pero eso no es lo peor, voy a la carpeta donde sube las imágenes y tengo solo dos llamadas img_30_1 y 1 y sin extensión, porque obviamente y como podrán darse cuenta no le estoy agregando la extensión del archivo y es que no se como averiguar que extensión están subiendo ya que permito jpg, jpeg, png y gif

Que enredo , espero que puedan ayudarme, gracias