Hola.
A ver si consigo explicar bien lo que me gustaría conseguir.
Antes de nada, tengo una tabla llamada
articulos y dentro de ella dos columnas, una llamada
titulo y otra llamada
coordenadas.
De tal modo que puedo tener los siguientes registros (son burdos ejemplos):
Cita: ----- articulos -------
titulo ----- coordenadas
Madrid ----- 111111,111111
Barcelona ----- 222222,222222
Valencia ------ 333333,333333
Canarias ------ 4444444,444444
Bilbao ------ 555555,555555
Sevilla ------ 666666,666666
Si por ejemplo, estoy viendo la sección Madrid, para separar sus coordenadas en latitud y longitud hago lo siguiente:
Código PHP:
$query = "SELECT coordenadas from articulos where url = '$url'";
$result = @mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
$coordenadas = $row['coordenadas'];
$coordenada1 = explode(",", $coordenadas);
$latitud1 = $coordenada1[0];
$longitud1 = $coordenada1[1];
}
Con eso lo que hago es separar las coordenadas de Madrid y tener por un lado
$latitud1 = 111111
$longitud1 = 111111
Al separar la longitud y la longitud de Madrid, luego hago otra consulta para calcular las distancias al resto de ciudades:
Código PHP:
$consulta = mysql_query("SELECT titulo, coordenadas FROM articulos ORDER BY titulo ASC");
while($row = mysql_fetch_array($consulta)){
$coordenadas = $row['coordenadas'];
$coordenada2 = explode(",", $coordenadas);
$latitud2 = $coordenada2[0];
$longitud2 = $coordenada2[1];
$distancia = (3958*3.1415926*sqrt(($latitud2-$latitud1)*($latitud2-$latitud1) + cos($latitud2/57.29578)*cos($latitud1/57.29578)*($longitud2-$longitud1)*($longitud2-$longitud1))/180)*1.609344;
$kilometros = number_format(($distancia),2,".",",");
echo "$row[titulo] a $kilometros km";
}
Con todo esto me funciona perfectamente y me da obviamente los resultados ordenados por su título (son ejemplos inventados):
Cita: Barcelona a 534 km
Bilbao a 463 km
Canarias a 1693 km
Sevilla a 906 km
Valencia a 315 km
Y esta es mi pregunta, ¿cómo puedo hacer para que me muestre los resultados ordenados de menor distancia a mayor distancia? Es decir:
Cita: Valencia a 315 km
Bilbao a 463 km
Barcelona a 534 km
Sevilla a 906 km
Canarias a 1693 km
Espero que se haya entendido.
Gracias de antemano a cualquiera que me pueda ayudar.
Un saludo!
PD: no sabía si meterlo en PHP o en MySQL, así que si hay que mover el hilo al foro adecuado... adelante!