Bonjour,
Je travaille actuellement sur une fonctionnalité similaire à celle décrite dans cette discussion, à savoir trouver des villes dans un rayon donnée.
J'ai - en lisant ce post - réussit à faire fonctionner ma requête et j'ai bien mes villes en sortie.
Mais quelque chose me trouble...
Pour tester le bout de code fournit ici, je l'ai copié/collé dans la fenêtre sql de phpmyadmin en changeant quelques paramètres pour que ça colle avec ma base.
Donc j'ai copié :
1 2 3 4 5 6 7 8 9 10 11
| delimiter $$
DROP FUNCTION IF EXISTS `distance terrestre`$$
CREATE FUNCTION `distance terrestre`(lo_target float,la_target float,lo_ref float,la_ref float)
returns float
deterministic
begin
RETURN (6366*acos(cos(radians(la_ref))*cos(radians(la_target))*cos(radians(lo_target)-radians(lo_ref))+sin(radians(la_ref))*sin(radians(la_target))));
end$$
delimiter ;
SELECT ville,`distance terrestre`(longitude,latitude,-1.4814908,47.9742104) AS proximite FROM communes WHERE `distance terrestre`(longitude,latitude,-1.4814908,47.9742104)<5 ORDER BY proximite; |
Résultat ok donc je clique sur "créer source php" et ça me donne :
SELECT id, nom_ville,`distance terrestre`(longitude,latitude,$_longitude,$_latitude) AS proximite FROM villes WHERE `distance terrestre`(longitude,latitude,$_longitude,$_latitude) <5 ORDER BY proximite
Et quand je colle cette requête dans mon fichier php, ça marche aussi impeccablement mais il ya une chose que je comprends pas c'est la fonction "distance_terrestre", enfin je comprend son rôle mais dans mon code php elle est passé où cette fonction ?
car je l'ai rentré une fois dans phpmyadmin mais ensuite elle n’apparaît pas dans mon script php, et ça fonctionne malgré tout...ça me trouble ça ! elle est stocké quelque part cette fonction ?
Bref ça fonctionne et tant mieux, mais j'aimerai bien éclaircir ce point car c'est troublant de voir une fonction marcher sans l'avoir en dur dans le code...
Merci d'avance
Olivier
Partager