Foros del Web » Programando para Internet » PHP »

Problema para concatenar

Estas en el tema de Problema para concatenar en el foro de PHP en Foros del Web. Buenas, Tengo un problema a la hora de concatenar para obtener la ruta adecuada, debido al caracter "\". La idea es que la función reciba ...
  #1 (permalink)  
Antiguo 27/02/2012, 04:46
 
Fecha de Ingreso: noviembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 0
Busqueda Problema para concatenar

Buenas,

Tengo un problema a la hora de concatenar para obtener la ruta adecuada, debido al caracter "\".

La idea es que la función reciba como parámetros un tipo de Producto y una imagen y como resultado obtengamos la ruta.


Os dejo el código:

function asignarRutaJPG ($tipoProducto, $imagenJPG) {

$URL_JPG = "C:\www\imagenes\" .$tipoProducto. "\" .$tipoProducto;
return ($URL_JPG);

}

Ejemplo: Si $tipoProducto='catalogo' & imagenJPG='catalogo.jpg'
La ruta debería ser: "C:\www\imagenes\catalogo\catologo.jpg"


¿Como puedo solucionarlo de una forma sencilla? Gracias
  #2 (permalink)  
Antiguo 27/02/2012, 04:49
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Problema para concatenar

Código PHP:
Ver original
  1. <?php
  2. $a = "imagenes";
  3. $b = "thumbs";
  4. echo $URL_JPG = "C:\www\imagenes\\$a\\$b";
  5. ?>
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 28/02/2012, 03:25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 0
Respuesta: Problema para concatenar

Siguiendo el consejo que me has dado ya he obtenido la URL correctamente, pero me surge un nuevo problema a la hora de introducir mi consulta en MYSQL.

La consulta resultante sería algo símilar a esto..

INSERT INTO IMAGENFINAL (codProducto, titulo, URL1, URL2, comentarios, ventana) VALUES (45, 'Logo Mundo Mágico', 'data\images\catalogo\logotipos_mundo_magico_logo. jpg', 'data\thumbnails\logotipo\logotipos_mundo_magico_l ogo.png', 'Imagen final de logo Mundo Mágico', '' );

La query se ejecuta correctamente pero cuando veo el campo URL1 y URL2, los datos aparecen así: dataimagescatalogologotipos_mundo_magico_logo.jpg, data humbnailslogotipologotipos_mundo_magico_logo....

¿Por qué sucede esto? ¿Como puedo solucionarlo? Muchas Gracias...
  #4 (permalink)  
Antiguo 28/02/2012, 03:39
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Problema para concatenar

Esto sucede porque la infomración está siendo escapada. Comrpueba si al crear la sentencia sql utilizas alguna función como mysql_real_escape_string() o similar. Estas funciones modifican la cadena para evitar cualquier inyección de código en mysql aunque no deberían quitarte las \. Para hacer una prueba, cuando haces un output por pantalla o navegador, utiliza \\, pero para guardar en la db utiliza \. O sea, dos variables, una escapada y otra sin escapar. Son dos cosas diferentes, un problema es escapar para el navegador y otro es escapar para mysql. Lo pruebas y me dices, saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 28/02/2012, 03:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 31
Antigüedad: 17 años
Puntos: 0
Respuesta: Problema para concatenar

No utilizo ninguna función mysql_real_escape_string() o similar...

Como he dicho anteriormente los campos URL1 y URL2 los obtengo mediante la funcion asignarRutaJPG y asignarRutaPNG.
...
$ruta1 = asignarRutaJPG ($tipoProducto, $nombreArchivoJPG);
$ruta2 = asignarRutaPNG ($tipoProducto, $nombreArchivoPNG); ;
....

donde asignarRutaJPG quedaría de la siguiente manera...

function asignarRutaJPG ($tipoProducto, $imagenJPG) {

$URL_JPG = "data\images\\$tipoProducto\\$imagenJPG";
return ($URL_JPG);

}

Si hago un echo ($ruta1) -> El Resultado obtenido sería: "data\images\catalogo\logotipo_..._.jpg"

Etiquetas: concatenar, imagenes
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 16:24.