Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error en código de cálculo de distancias

Estas en el tema de Error en código de cálculo de distancias en el foro de PHP en Foros del Web. Tengo el siguiente código para el cálculo de distancias entre dos puntos: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original include_once ( '../getBoundaries.php' ) ; $box = ...
  #1 (permalink)  
Antiguo 10/12/2015, 07:24
 
Fecha de Ingreso: mayo-2014
Mensajes: 45
Antigüedad: 10 años
Puntos: 0
Error en código de cálculo de distancias

Tengo el siguiente código para el cálculo de distancias entre dos puntos:
Código PHP:
Ver original
  1. include_once('../getBoundaries.php');
  2. $box = getBoundaries($latitud, $longitud, $distanciausuario);
Función para acotar la distancia entre dos puntos.
Y la consulta:
Código PHP:
Ver original
  1. $result = mysql_query('SELECT id_cliente, nombre, tipo, precio, icono1, localidad, (6371 * ACOS(
  2.                                            SIN(RADIANS(lat))
  3.                                            * SIN(RADIANS(' . $latitud . '))
  4.                                            + COS(RADIANS(lng - ' . $longitud . '))
  5.                                            * COS(RADIANS(lat))
  6.                                            * COS(RADIANS(' . $latitud . '))
  7.                                            )
  8.                               ) AS distance
  9.                     FROM restauracion
  10.                     WHERE (lat BETWEEN ' . $box['min_lat']. ' AND ' . $box['max_lat'] . ')
  11.                     AND (lng BETWEEN ' . $box['min_lng']. ' AND ' . $box['max_lng']. ')
  12.                     HAVING distance  < ' . $distanciausuario . '                                      
  13.                     ORDER BY distance ASC ');
Hasta ahí funciona bien, el problema es cuando añado otra variable en la cláusula WHERE que en realidad me filtra por un tipo de establecimiento: tipo IN('$tipos_trim'), quedando de la siguiente manera:

Código SQL:
Ver original
  1. WHERE tipo IN('$tipos_trim')
  2.                      AND (lat BETWEEN ' . $box['min_lat']. ' AND ' . $box['max_lat'] . ')
  3.                      AND (lng BETWEEN ' . $box['min_lng']. ' AND ' . $box['max_lng']. ')
  4.                      HAVING distance  < ' . $distanciausuario . '                                      
  5.                      ORDER BY distance ASC ');
Que me da error en php.
El error que da es:
Código PHP:
Ver original
  1. Parse error: syntax error, unexpected T_VARIABLE in /home/guiamexc/public_html/AccesoDatos/phpconsult/apartados/tiposComer.php on line 39
La línea 39 corresponde a:
Código SQL:
Ver original
  1. WHERE tipo IN('$tipos_trim')

En realidad son dos preguntas, una porqué utiliza ‘ . $variable . ‘ y no ‘$variable’ y dos, porqué me da error en el código cuando añado en la claúsula WHERE tipo IN('$tipos_trim').

Gracias de antemano a quién me pueda ayudar, pues no doy con ello.

Última edición por gnzsoloyo; 10/12/2015 a las 07:39
  #2 (permalink)  
Antiguo 10/12/2015, 07:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error en código de cálculo de distancias

Cita:
Parse error: syntax error, unexpected T_VARIABLE in /home/guiamexc/public_html/AccesoDatos/phpconsult/apartados/tiposComer.php on line 39
Eso es un error de PHP...

Tienes es un error en la codificación en PHP, no de consulta en SQL.

PHP no entiende SQL, ni la base entiende PHP. Tienes que construir la sentencia correctamente, y evidentemente tienes errores de sintaxis.

OFF TOPIC en Bases de Datos.
Movido a foro de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/12/2015, 07:07
 
Fecha de Ingreso: mayo-2014
Mensajes: 45
Antigüedad: 10 años
Puntos: 0
Respuesta: Error en código de cálculo de distancias

No lo veo tan evidentemente. La consulta si la efectúo por distancias y no por tipo funciona, si la hago por tipo y no por distancia funciona, falla cuando en la claúsula Where incluyo ambas:
WHERE (tipo IN ('$tipos_trim')) AND ((lat BETWEEN ' . $box['min_lat']. ' AND ' . $box['max_lat'] . ')
AND (lng BETWEEN ' . $box['min_lng']. ' AND ' . $box['max_lng']. '))

dándome error en tipo IN ('$tipos_trim').
Una cosa que he estado buscando y no he encontrado es porque utiliza:
' . $box['min_lat']. ' y no '$box['min_lat']' que mientras no me aclare ahí no creo que solucione en problema de tipo IN ('$tipos_trim').
Si puedes aclararme algo te lo agradecería.
  #4 (permalink)  
Antiguo 11/12/2015, 10:10
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Error en código de cálculo de distancias

Tu error es de php y es por las comillas.

El punto es para concatenar cadenas por ejemplo:

Código PHP:
Ver original
  1. $variable=' esto es una union de cadenas de texto ';
  2.  
  3. $val= 'cadena comillas simples'." cadena comillas dobles".$variable;
  4.  
  5. echo $val;
  6. // cadena comillas simples cadena comillas dobles esto es una unión de cadenas de texto
  #5 (permalink)  
Antiguo 11/12/2015, 10:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error en código de cálculo de distancias

Cita:
No lo veo tan evidentemente.
ES evidente, porque ese mensaje de error es del compilador de PHP, y NO es de MySQL.

Como te dicen, es un problema con las comillas dobles y los apóstrofos.
Dado que los subindices de los arrar, cuando los invocas por clave, requieren apóstrofos ('), es conveniente NO construir las sentencias de SQL con ellos, sino con comillas ("). DE esa forma te aseguras que la continuidad de los bloques de texto no se rompa.

VEr: http://stackoverflow.com/questions/1...92267#18092267
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 14/12/2015, 06:57
 
Fecha de Ingreso: mayo-2014
Mensajes: 45
Antigüedad: 10 años
Puntos: 0
Respuesta: Error en código de cálculo de distancias

Llevas toda la razón del mundo. Lo he hecho así y funciona correctamente. Me he liado en el punto: Dado que los subindices de los arrar, cuando los invocas por clave, requieren apóstrofos ('), que no sabía eso. Muchas gracias por tu tiempo y tu paciencia.

Etiquetas: bases-de-datos-general, mysql, select
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 12:12.