Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ruta y renombrar imagen y caracteres

Estas en el tema de Ruta y renombrar imagen y caracteres en el foro de PHP en Foros del Web. Tengo el siguiente código para subir una imagen a la ftp y el resto a la BD, pero me han surgido unos pequeños imprevistos que ...
  #1 (permalink)  
Antiguo 24/02/2014, 15:43
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Ruta y renombrar imagen y caracteres

Tengo el siguiente código para subir una imagen a la ftp y el resto a la BD, pero me han surgido unos pequeños imprevistos que por lo visto no se aportarle:

1.- Permitir algunas letras como la ñ en la BD

2.- No me define la ruta o nombre de la imagen en la BD simplemente me muestra un numero (1) Tengo en la BD como VARCHAR (150).

3.- ¿Esa imagen como se podría renombrar para que no coincidan el mismo nombre?

4.- Para que el formulario no se envié sin rellenar los datos requerid que debo añadir?

Código PHP:
<?php 
include("conex.php");
$link=Conectarse();  
$Validado_cmNew=$_POST['Validado_cmNew'];
$google_cmNew=$_POST['google_cmNew'];
$LG_cmNew=$_POST['LG_cmNew'];
$Direccion_cmNew=$_POST['Direccion_cmNew'];
$Localidad_cmNew=$_POST['Localidad_cmNew'];
$Provincia_cmNew=$_POST['Provincia_cmNew'];
$CP_cmNew=$_POST['CP_cmNew'];
$Representante_cmNew=$_POST['Representante_cmNew'];
$Tlf_cmNew=$_POST['Tlf_cmNew'];
$web_cmNew=$_POST['web_cmNew'];
$Email_cmNew=$_POST['Email_cmNew'];
$Descripcion_cmNew=$_POST['Descripcion_cmNew'];
$Tipomusica_cmNew=$_POST['Tipomusica_cmNew'];
$Tipopublico_cmNew=$_POST['Tipopublico_cmNew'];
$uss=$_POST['uss'];
$pass=$_POST['pass'];

$dir "altas"//recuerda que debe tener permisos de escritura ;) 
$ext = array('image/jpeg''image/gif''image/png''image/bmp'); //Puedes agregar más extenciones 
    
foreach($_FILES as $archivo) { 
        
$attachtmp  $archivo['tmp_name']; 
        
$attachtype $archivo['type']; 
        
$attachname $archivo['name']; 
        if(
file_exists($attachtmp)) { 
            if(
is_uploaded_file($attachtmp)) { 
                if(
in_array($attachtype,$ext)) { 
                    
$ruta move_uploaded_file($attachtmp"$dir/$attachname"); 
                    
mysql_query("INSERT INTO CM_new (id, Validado_cmNew, google_cmNew, LG_cmNew, Logo_cmNew, Direccion_cmNew, Localidad_cmNew, Provincia_cmNew, CP_cmNew, Representante_cmNew, Tlf_cmNew, web_cmNew, Email_cmNew, Descripcion_cmNew, Tipomusica_cmNew, Tipopublico_cmNew, uss, pass) VALUES ('','$Validado_cmNew','$google_cmNew','$LG_cmNew','$ruta','$Direccion_cmNew','$Localidad_cmNew','$Provincia_cmNew','$CP_cmNew','$Representante_cmNew','$Tlf_cmNew','$web_cmNew','$Email_cmNew','$Descripcion_cmNew','$Tipomusica_cmNew','$Tipopublico_cmNew','$uss','$pass')" ,$link) or die(mysql_error()); 

                } else { 
                    echo 
"Esto no es una imagen"
                } 
            } 
        } 
    } 
?>
Gracias si pueden ayudarme!
  #2 (permalink)  
Antiguo 24/02/2014, 15:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ruta y renombrar imagen y caracteres

1. Busca temas acerca de codificación, ahí encontrarás alguna solución
2. Lee el manual de move_uploaded_file() para que entiendas lo que devuelve
3. Podrías usar uniqid() o algún valor al azar obtenido de mt_random(), tal vez
4. Validación, debes añadir validación, pero del lado del cliente no en el servidor
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/02/2014, 15:48
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Ruta y renombrar imagen y caracteres

La imagen la llamo en el formulario Logo_cmNew y en el codigo el value es $ruta
  #4 (permalink)  
Antiguo 24/02/2014, 15:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ruta y renombrar imagen y caracteres

A esto me refiero:
Código PHP:
Ver original
  1. $ruta = move_uploaded_file($attachtmp, "$dir/$attachname");

Según el manual:
Cita:
Iniciado por http://php.net/move_uploaded_file
Devuelve TRUE en caso de éxito.

Si filename no es un archivo válido subido, no sucederá ninguna acción, y move_uploaded_file() devolverá FALSE.

Si filename es un archivo subido válido, pero no puede ser movido por algunas razones, no sucederá ninguna acción, y move_uploaded_file() devolverá FALSE. Adicionalmente, se emitirá un aviso.
En todo caso se estará subiendo bien el archivo, pero entonces $ruta ya no es lo que esperas, de ahí que te guarde un 1.

¿Se entiende?

Por favor, no respondas por responder, pon atención a las sugerencias: no son broma.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/02/2014, 17:03
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Ruta y renombrar imagen y caracteres

Estoy intentando captar lo que me quieres decir con el enlace que pasaste y varios ejemplos y no caigo en donde podría ser.. y entre que no tengo mucha idea de programación se junta todo!
  #6 (permalink)  
Antiguo 25/02/2014, 01:09
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Ruta y renombrar imagen y caracteres

Le estoy dando muchas vueltas y a ver donde esta el error..

Carpeta donde ubico la imagen
Código PHP:
Ver original
  1. $dir = "altas";

$_Files lo doy como $archivo

$attachtpm= nombre de archivo temporal $archivo['tmp_name']
$attachname= nombre de archivo final $archivo['name']

Y la $ruta que es lo que pongo en Values para que de el valor en la BD

$ruta = move_uploaded_file($attachtmp, "$dir/$attachname");

(recibe el nombre de archivo temporal ($attachtmp) y luego nombra el archivo que deseo dar ($attachname) Es decir $ruta creo que es altas/nombrearchivo

Algo no estoy entendiendo y no pillo..

Última edición por RaulCDT; 25/02/2014 a las 02:39
  #7 (permalink)  
Antiguo 25/02/2014, 02:52
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Ruta y renombrar imagen y caracteres

Y si en Insert Value en vez de poner $ruta pongo $archivo['name'] ya me recoge el nombre del archivo verdad?
  #8 (permalink)  
Antiguo 25/02/2014, 04:08
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Ruta y renombrar imagen y caracteres

SOLUCINADO RUTA DE LA IMAGEN pongo el codigo por si le sirve a alguien

Lo que me queda es poder poner un nombre en el archivo aleatorio..
Por ejemplo como pondria el uniqid()

$attachname = uniqid ($archivo['name']; )

estaria bien puesto así?

Código PHP:
<?php 
include("conex.php");
$link=Conectarse();  
$Validado_cmNew=$_POST['Validado_cmNew'];
$google_cmNew=$_POST['google_cmNew'];
$LG_cmNew=$_POST['LG_cmNew'];
$Direccion_cmNew=$_POST['Direccion_cmNew'];
$Localidad_cmNew=$_POST['Localidad_cmNew'];
$Provincia_cmNew=$_POST['Provincia_cmNew'];
$CP_cmNew=$_POST['CP_cmNew'];
$Representante_cmNew=$_POST['Representante_cmNew'];
$Tlf_cmNew=$_POST['Tlf_cmNew'];
$web_cmNew=$_POST['web_cmNew'];
$Email_cmNew=$_POST['Email_cmNew'];
$Descripcion_cmNew=$_POST['Descripcion_cmNew'];
$Tipomusica_cmNew=$_POST['Tipomusica_cmNew'];
$Tipopublico_cmNew=$_POST['Tipopublico_cmNew'];
$uss=$_POST['uss'];
$pass=$_POST['pass'];


$dir "altas"//recuerda que debe tener permisos de escritura ;) 
$ext = array('image/jpeg''image/gif''image/png''image/bmp'); //Puedes agregar más extenciones 
    
foreach($_FILES as $archivo) { 
        
$attachtmp  $archivo['tmp_name']; 
        
$attachtype $archivo['type']; 
        
$attachname $archivo['name']; 
        if(
file_exists($attachtmp)) { 
            if(
is_uploaded_file($attachtmp)) { 
                if(
in_array($attachtype,$ext)) { 
                    
$ruta move_uploaded_file($attachtmp"$dir/$attachname");
                    
mysql_query("INSERT INTO CM_new (id, Validado_cmNew, google_cmNew, LG_cmNew, Logo_cmNew, Direccion_cmNew, Localidad_cmNew, Provincia_cmNew, CP_cmNew, Representante_cmNew, Tlf_cmNew, web_cmNew, Email_cmNew, Descripcion_cmNew, Tipomusica_cmNew, Tipopublico_cmNew, uss, pass) VALUES ('','$Validado_cmNew','$google_cmNew','$LG_cmNew','$attachname','$Direccion_cmNew','$Localidad_cmNew','$Provincia_cmNew','$CP_cmNew','$Representante_cmNew','$Tlf_cmNew','$web_cmNew','$Email_cmNew','$Descripcion_cmNew','$Tipomusica_cmNew','$Tipopublico_cmNew','$uss','$pass')" ,$link) or die(mysql_error()); 

                } else { 
                    echo 
"Esto no es una imagen"
                } 
            } 
        } 
    } 
?>
  #9 (permalink)  
Antiguo 25/02/2014, 05:31
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Ruta y renombrar imagen y caracteres

O de alguna forma estaría cometiendo algún error poniendo algunos de estos codigos para poner el nombre de una imagen aleatoria y que no se repitan..


Código PHP:
$longitud 8

$attachname substrmd5(microtime($archivo['name'])), 1$longitud); 
o este otro:

Código PHP:
<?
$attachname 
substr(strrchr($archivo['name'], "."), 1); 

$aleatorio md5(rand() * time()) . ".$attachname";

?>
Y poner esto en:

Código PHP:
$ruta move_uploaded_file($attachtmp"$dir/$aleatorio"); 
No sé si voy por buen camino..alguna ayuda?!

Etiquetas: caracteres, formulario, mysql, renombrar, ruta, sql
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 00:50.