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é :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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