Foros del Web » Programando para Internet » PHP »

Problemas con el carácter '

Estas en el tema de Problemas con el carácter ' en el foro de PHP en Foros del Web. Buenas, A ver si alguien me puede ayudar con esto… Tengo unas imágenes almacenadas en una serie de carpetas y, desde mi web, accedo a ...
  #1 (permalink)  
Antiguo 04/06/2008, 03:59
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Problemas con el carácter '

Buenas,


A ver si alguien me puede ayudar con esto…

Tengo unas imágenes almacenadas en una serie de carpetas y, desde mi web, accedo a estas imágenes calculando la ruta de forma dinámica.

El problema es que algunas carpetas tienen un caracter ' y, cuando trato de coger toda la ruta, pues no lo hace bien. Me explico:

$ruta = "img/logo/ ".$resultadoLogo[$i]['directorio'] . "/" . $resultadologo[$i]['imagen'];


Si el directorio no tiene el caracter ' funciona de perlas:

ruta = img/logo/directorio/imagen.jpg

Pero cuando el directorio es: Urza's Saga, pues en lugar de coger toda la cadena, sólo se almacena la palabra Urza... Ni siquiera llega a coger el nombre de la imagen... Imagino que el motor del php lee el carácter ' y piensa que es fin de cadena o algo así...

Cómo puedo hacer para que coja toda la cadena sin quitar el carácter ' de las carpetas? (Urza's Saga)

Saludos.
  #2 (permalink)  
Antiguo 04/06/2008, 04:38
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Respuesta: Problemas con el carácter '

Coño, un magiquero! Jejeje.

Deberías evitar estos carácteres en las urls. Puedes utilizar funciones como urlencode o directamente cambiar el nombre del directorio quitando la comilla.

Un saludo
  #3 (permalink)  
Antiguo 05/06/2008, 01:14
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Problemas con el carácter '

jeje... pues sí Jerkan,

La función que citas es interesante, si no lo he entendido mal, sirve para codificar las variables que se pasan a la URL, verdad?...

La verdad es que no me gustaría cambiar el nombre de las carpetas... Aunque es un poco extraño una carpeta que tenga un apóstrofe.... pero es el nombre original de la colección y utilizo estos nombres de carpetas para compararlos con las ediciones...

Creo que probaré con la función str_replace para ver como resulta...
Gracias por el consejo!!

Saludos.
  #4 (permalink)  
Antiguo 09/06/2008, 16:20
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Problemas con el carácter '

No lo consigo!!

A ver, en la base de datos, mysql, tengo nombres con apóstrofes. Cuando trato de leerlos, el intérprete del navegador me recorta el nombre porque piensa que es fin de cadena y llevo varios días tratando de encontrar una solución.

Urza's Saga, es interpretado o leído por el navegador como Urza

Necesito algún truco o función que me permita capturar toda la cadena de texto.
He probado str_replace("'","\'",$POST["edicion"])

y me devuelve la palabra Urza (recortado)


la función: mysql_escape_string($POST["edicion"]) igualmente me devuelve la palabra Urza

Es que no hay ninguna forma de capturar todo el texto? (Urza's Saga).

Sé que si pongo echo "Urza's Saga"; me muestra todo el texto, luego no entiendo por qué si utilizo un combobox y capturo el option por POST me tiene que cortar el texto.

Saludos!!

Última edición por Tarzan; 10/06/2008 a las 00:11
  #5 (permalink)  
Antiguo 10/06/2008, 04:24
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Problemas con el carácter '

Nada... Puede que el problema esté en el html y no en el php...

Os escribo la parte del código que es relevante para este problema para ver si alguien puede ayudarme a solucionarlo

Este sql me devuelve todas las ediciones almacenadas en la tabla, las devuelve bien… con todos los caracteres (apóstrofes incluidos).

// Ediciones de un Color seleccionado

$sqlEdiciones="SELECT DISTINCT ediciones.edicion FROM ediciones, cartas WHERE ediciones.idEdicion=cartas.idEdicion AND cartas.idColor =".$IDcolor."";


La variable $resultadoEdiciones contiene todos los registros obtenidos con el SELECT anterior, ok?

Puedo acceder al primer valor DEVUELTO POR EL SELECT DE ESTA FORMA: $resultadoEdiciones[0]["edicion"], OK?

De esta forma, cuando escribo echo $resultadoEdiciones[24]["edicion"] (el 24 equivale a Urza’s Saga), se imprime el valor correctamente y sin recortar.

echo "<option value='1'> Todas </option>";

for ($i=0; $i < $fila3; $i++) {

if( $_POST["comboEdiciones"]==$resultadoEdiciones[$i]["edicion"])
echo "<option value='".$resultadoEdiciones[$i]["edicion"]."' selected>".$resultadoEdiciones[$i]["edicion"]."</option>";

else

echo "<option value='".$resultadoEdiciones[$i]["edicion"]."'>".$resultadoEdiciones[$i]["edicion"]."</option>";

}


Este código anterior sirve para mantener en el comboBox la opción seleccionada. Cosa que hace en todos los casos excepto cuando selecciono una edición con el carácter ‘



Con el código siguiente se modifica la consulta general que se filtra con el combo, recogiendo el valor que se pasa por POST y que equivale a lo que se ha seleccionado en el combo.

IF($_POST["comboEdiciones"])


// La primera vez que cargue la página, $_POST["comboEdiciones"] es igual a la primera edición del combo.

IF($_POST["comboEdiciones"] != 1)

$edicion = " AND ediciones.edicion = '".$_POST["comboEdiciones"]."'";




Sin embargo, cuando escribo aquí:
echo $_POST[“comboEdiciones”]

después de haber seleccionado la opción del combo: Urza’s Saga

me imprime: Urza
  #6 (permalink)  
Antiguo 10/06/2008, 05:13
 
Fecha de Ingreso: junio-2004
Mensajes: 17
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Problemas con el carácter '

A ver... cuando imprimes esto echo $resultadoEdiciones[24]["edicion"] dices que sale bien no?..
pues susituye en ese momento la comilla simple por unos caracteres especiales,asi str_replace("'","-@@-'",$resultadoEdiciones[24]["edicion"] )

Código PHP:

echo "<option value='1'> Todas </option>";


for (
$i=0$i $fila3$i++) {

//Si contienes la apostrofe, que las sustituya por el caracter especial,guardamos en nombreBD, y nombrePOST
$nombreBD=str_replace("'","-@@-'",$resultadoEdiciones[$i["edicion"]);  
$nombrePOST=str_replace("'","-@@-'",$_POST["comboEdiciones"])  ;


if( 
$nombrePOST==$nombreBD
echo 
"<option value='".$nombreBD."' selected>".$resultadoEdiciones[$i]["edicion"]."</option>";

else

echo 
"<option value='".$nombreBD."'>".$resultadoEdiciones[$i]["edicion"]."</option>";

}


depues cuando envies recojas el valor del formulariosustitye al reves

$nombrePOST
=str_replace("-@@-","'",$_POST["comboEdiciones"])  ;

para tener el nombre original ...

prueba a ver...


salu2 
  #7 (permalink)  
Antiguo 11/06/2008, 05:03
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Problemas con el carácter '

Ok !!

Lo arreglé con la función str_replace!!!

Muchísimas gracias!!
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 21:58.