Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2010, 05:59
Forseti
 
Fecha de Ingreso: febrero-2010
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
str_replace y comillas (simples y dobles)

Hola, estoy haciendo una aplicación en php+mysql en la que gente va a tener que meter coordenadas de longitud y latitud, para ello me valgo de un formulario en que la longitud y la latitud están divididas en 3 campos: uno para los grados, otro para los minutos y el último para los segundos. El objetivo de los 3 campos "normalizar" los simbolos de grado, minuto y segundo, explicándome mejor, quiero darle un formato estilo

xxºxx'xx''

y así evitar que la gente pueda poner, por ejemplo, un acento (`) por una comilla simple.

El problema lo tengo al añadir dentro de la cadena, tanto la comilla simple como la comilla doble. Como veo que no me queda muy claro os pego el código que tengo

$long_grados=mysql_real_escape_string(htmlspecialc hars(trim($_POST["long_grados"])));
$long_min=mysql_real_escape_string(htmlspecialchar s(trim($_POST["long_min"])));
$long_seg=mysql_real_escape_string(htmlspecialchar s(trim($_POST["long_seg"])));

$lat_grados=mysql_real_escape_string(htmlspecialch ars(trim($_POST["lat_grados"])));
$lat_min=mysql_real_escape_string(htmlspecialchars (trim($_POST["lat_min"])));
$lat_seg=mysql_real_escape_string(htmlspecialchars (trim($_POST["lat_seg"])));

/*Reconstruyo la longitud y latitud como previas, indicando en que lugar van los grados
minutos y segundos, por una "g","m" y "s", que luego cambiaré por su simbolo*/

$longitud_pre=sprintf("%sg %sm %ss", $long_grados, $long_min, $long_seg);
$latitud_pre=sprintf("%sg %sm %ss", $lat_grados, $lat_min, $lat_seg);

//Creo los arrays a sustituir y su valor

$buscar=array("g","m","s");
$remplazar=array("º"," ' ",' '' ');

//Reemplazo

$longitud=str_replace($buscar, $remplazar, $longitud_pre);
$latitud=str_replace($buscar, $remplazar, $latitud_pre);

Que conste que he intentado varias opciones que no han funcionado (como la más lógica hacerla directamente en el sprintf, pero tampoco fui capaz de poner las comillas que es donde tengo el problema) y os pego el código de la última.

¿Alguien me puede dar una solución?. Agradeciendo la respuesta y esperando haberme explicado bien (si quereis más aclaraciones no teneis más que pedirlas) me despido.

edit*****

Bueno, en cierto modo me había respondido con otra prueba, si simplifico todo

$longitud=sprintf('%sº%s'."'".'%s"', $long_grados, $long_min, $long_seg);
$latitud=sprintf('%sº%s'."'".'%s"', $lat_grados, $lat_min, $lat_seg);

me da la cadena en el formato que quiero (he sacado los datos con un echo y se ven tal cual). El problema está al hacer la consulta insert para mysql

$consulta=("INSERT INTO `puntos_agua` (`nombre`,`longitud`,`latitud`,`codigo`,`concejo`, `estado`,`motivo`) VALUES ('$nombre','$longitud','$latitud','$codigo','$conc ejo','$estado','$motivo')");

En que los valores de ' y '' me chafan la misma (me había fijado que los valores no se añadian a la tabla y no sabía bien la razón)

Alguna idea de como modificar la consulta?

Última edición por Forseti; 04/05/2010 a las 06:38