Foros del Web » Programando para Internet » PHP »

Obtener registro mas cercano

Estas en el tema de Obtener registro mas cercano en el foro de PHP en Foros del Web. Hola amigos como estais, Vereis tengo una tabla en la BD con numeros y lo que necesito es obtener el numero mas cercano. Estoy haciendo ...
  #1 (permalink)  
Antiguo 25/10/2013, 03:59
 
Fecha de Ingreso: octubre-2013
Mensajes: 17
Antigüedad: 11 años, 1 mes
Puntos: 0
Obtener registro mas cercano

Hola amigos como estais,

Vereis tengo una tabla en la BD con numeros y lo que necesito es obtener el numero mas cercano.

Estoy haciendo de este modo:

Código PHP:
                            $consulta_nombre_comercio "Select * FROM municipios WHERE latitud like '%".$latitud."%' and longitud like '%".$longitud."%'";
                            
$resultado_nombre_comercio mysql_query($consulta_nombre_comercio$conexion1);  



                            while(
$ciudad mysql_fetch_array($resultado_nombre_comercio)){

                            echo 
$ciudad['municipio'].' '.$ciudad['latitud'].' '.$ciudad['longitud'].'<br>';

                            } 
La cosa es que esto no funciona ya que me muestra todos los que "pegue"

Asique no se si hay alguna manera para que pueda obtener el mas cercano al que se le pase en la consulta.


Un saludo!
  #2 (permalink)  
Antiguo 25/10/2013, 05:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 606
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: Obtener registro mas cercano

Haber si he entendido, lo que necesitas es obtener un un numero lo mas cercano a otro?

Pues yo lo que haría es restar uno al numero que se le mandase si se quiere que se acerque por debajo o sumar un numero al que se le mande si se quiere por exceso.
  #3 (permalink)  
Antiguo 25/10/2013, 05:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Obtener registro mas cercano

Uffff trigonometria debes calcular la distancia entre el punto dado y los puntos de la bbdd y elegir la minima.

Distacia entre dos puntos = raiz cuadrada de la suma del (incremento de x) al cuadrado mas (incremento de y) al cuadrado

Es decir aplicar Pitagoras.... para ello, primero tener coordenadas cartesianas, luego construyes una función distancia, supongamos

distancia(x1,y1,x2,y2) donde x1,y1 son el punto de referencia y x2,y2 son los puntos de la base de datos.

Código MySQL:
Ver original
  1. SELECT * FROM municipios
  2. distancia(x1,y1,x2,y2)=(SELECT MIN(distancia(x1,y1,x2,y2)) FROM municipios);

esta seria una solución sql, podrias buscar otra en php pero solo cambiaras el lenguaje.

En php deberas cargar toda la tabla municipios en un array, calcular la distacia a cada punto, con una funcion php muy similar a la anterior, agregar el resultado al array y elegir la menor...

Por otro lado ahora recuerdo que mysql, asi como otras bbdd, tiene extensión geográfica

Capítulo 18. Extensiones espaciales de MySQL

pero solo te puedo dar el link... no lo he usado. Quizas encuentras una función distancia en esas extensiones.

Por cierto LIKE hace una comparación entre strings no entre números
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 25/10/2013 a las 06:09
  #4 (permalink)  
Antiguo 28/10/2013, 01:55
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Obtener registro mas cercano

Hola quimfv gracias por tu atención,

Esta solucion que me propones me parece interesante, tengo una pregunta las coordenadas que proporciona google maps no son cartesionas verdad?

Siendo asi sabes de algun ejemplo para convertir estas coordenadas que nos da google en cartesinas?


Un saludo y muchas gracias amigo!
  #5 (permalink)  
Antiguo 28/10/2013, 02:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Obtener registro mas cercano

Lo siento pero no lo se, mi respuesta es totalmente teorica. Cierta, pero teorica, no suelo trabajar con datos de ese tipo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: mysql, registro, select, tabla
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 14:09.