Comme dis dans mon titre, j'ai un gros souci au niveau d'une requète permettant de commander un module de géolocalisation
Je vais tenter de décrire le principe : je me suis inspiré d'un système existant mais je sens que je me suis planté en fait
En gros j'ai une bdd sur laquelle est stockée dans une table le profil des membres. Je passe sur ce qui se passe avant mais il arrive un moment ou dans une champ "geodata" se retrouve stocké les coordonées de la personne sous la forme :
Code :
- 0.817104983959776|0.0296705972839036
|
(en radians donc, le premier chiffre correspond à la latitude, le second la longitude, toussa dans un seul champ).
Le problème viens du moment ou il faut calculer la distance entre deux utilsateurs ayant ce champ renseigné : j'en suis arrivé à sortir cette requète :
Code :
- $select = mysql_query("SELECT `id`, `zipcode`,`geodata` FROM `match_users`" );
- while ($row = mysql_fetch_array($select)) {
- $geo = GeoLoc($user["zipcode"]);
- if (is_array($geo)) {
- $geodata = "{$geo[0]}|{$geo[1]}";
- }
- }
|
Qui me donne geo[0] = latitude de l'utilisateur et geo[1] = longitude utilisateur en fonction de son code postal.
Ensuite cette requète qui represente en quelque sorte la formule pour calculer la ditance entre deux personnes à partir de leur coordonnées en radians :
Code :
- $geoloc = mysql_fetch_array(mysql_query("SELECT id, zipcode, geodata, round(((6366*acos(cos('{$me["geo[0]"]}')*cos('{$user["geo[0]"]}')*cos('{$user["geo[1]"]}'-'{$me["geo[1]"]}')+sin('{$me["geo[0]"]}')*sin('{$user["geo[0]"]}')))*1.4),1) as proximite FROM match_users" ));
|
Sous SQL aucun souci : la requète fonctionne et me répond bien la distance entre moi et les autres utilisateurs. Mais impossible de la faire fonctionner sous php : je n'arrive pas à exprimer ces fameux geo[0] ou geo [1] : j'ai mes coordonnées, celle de l'utilisateur mais pas moyen d'avoir les deux à la fois
D'ailleurs en réecrivant les requètes sur HFR je suis en train de voir qu'il y a des éléments en double dans les requètes; j'suis un peu perdu là
Je me demande s'il ne serai carrement pas plus pratique de séparer les champs longitude et latitude, car finalement mon seul souci est de trouver le moyen d'exprimer geo[0] et geo[1] pour obtenir un nombre "proximite"...qui serai résolu en passant au système des champs séparés (enfin je crois )
C'est un peu embrouillé comme récit je crois mais je tiens à résoudre ce souci pour avancer un peu
Quelqu'un aurait une idée ?
Message édité par Syl_83 le 02-04-2006 à 20:39:20
---------------
Michael Schumacher laissera une trace immense dans l'histoire de notre sport. Il en a aussi laissé une belle sur les flancs de ma Williams à Adélaïde, en 1994...