IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Faire une recherche dans un rayon de X kms


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut Faire une recherche dans un rayon de X kms
    Bonjour,

    Je fais actuellement un espace membre communautaire avec messagerie interne etc..

    Je suis en ce moment en train d'écrire la page "recherche de membres". par sexe, age, localité, etc.. mais je souhaite également proposer aux membres la possibilité de faire une recherche dans un rayon de X kms de chez eux.

    c'est à dire qu'un membre à la possibilité de trouver d'autres membres dans un rayon de X kms de chez lui.

    ma question vous l'auriez deviner : comment dois-je procéder ? Je sais que cela est possible car j'ai déjà utilisé des sites avec le même système.

    merci à vous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec Google Maps API tu peux obtenir les coordonnées d'une ville.
    Et dans ton SGDB, tu as sûrement des fonctions de calcul spatial pour calculer la distance.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    oui c'est avec le geocoding je l'utilise déjà pour obtenir les positions d'une ville.

    mais je ne comprends rien à "Et dans ton SGDB, tu as sûrement des fonctions de calcul spatial pour calculer la distance."

    J'enregistre pas les coordonnées (positions) des villes dans ma bdd, j'ai uniquement le pays, le code postal et la ville dans ma bdd (largement suffisant pour le geocoding qui récupère les positions) mais.. comment faire après ? existe t'il une api qui fonctionne en "rayon" de kms ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu ne stockes pas les coordonnées ?

    Quel SGDB utilises-tu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Je ne sais pas trop.. car je stocke déjà le pays, la ville et le code postal.. je dois rajouter la longitude et la latitude dans ma bdd ? j'utilise le geocoding api de google maps pour afficher une carte avec un tracé du profil 1 au profil 2, qui fonctionne parfaitement, je suis assez fier de le dire car j'ai passé du temps dessus

    mais la c'est dans la page de recherche de profils que je souhaite proposer à mes membres la possibilité de faire une recherche par rayon à partir de leurs villes de résidence (que j'ai dans ma bdd)

    j'utilise php (pdo)/mysql.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Oui il faut les coordonnés pour calculer les distances.

    Désolé c'est en anglais, en format présentation et en miles mais tu as dedans toutes les requêtes pour calculer des distances :
    http://www.arubin.org/files/geo_search.pdf

    Comme il explique dans son article plus récent, les fonctions spatiales de mysql ne sont en fait pas adaptées car elles ne tiennent pas compte de la courbure de la terre :
    https://www.percona.com/blog/2013/10...-applications/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    hum hum

    j'ai survolé les deux liens et je trouve le premier trop "brouillon" et pas assez explicite mais le deuxième lien à l'air bien plus intéressant.. (à condition de le traduire avec google traduction )

    Mais j'ai une question : si j'enregistre la longitude/latitude des villes des membres dans ma bdd, avec l'exemple sur le site Percona, je n'ai plus besoin de google maps ? enfin si j'ai bien compris ? car dans les bouts de code que propose l'article, je ne vois aucun lien avec google maps. (Cela est pas mauvais car je préserve mon nombre de requêtes car limité par google.)

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Google Maps te permet d'obtenir les coordonnées ou de calculer la distance entre deux points, mais exploiter toute ta table utilisateur, il faut faire le calcul dans ta base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    ok je te remercie pour les infos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. COmment faire une recherche dans tous les dossiers
    Par Djohn dans le forum Outlook
    Réponses: 2
    Dernier message: 28/06/2007, 19h27
  2. Réponses: 5
    Dernier message: 03/08/2006, 08h03
  3. Comment faire une recherche dans ACCESS
    Par Bass_Room dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 10h51
  4. Faire une recherche dans un fichier XML
    Par Devilish_Seraph dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 21/01/2006, 13h41
  5. [VB.NET] Faire une recherche dans une treeview
    Par Aspic dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2005, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo