2010-12-13 6 views
0

J'ai plusieurs pages qui accèdent directement à ma base de données et récupèrent les valeurs d'une table.MySQL retourne une valeur différente en fonction de l'emplacement GEO?

Maintenant, en fonction de l'emplacement géographique des utilisateurs, nous voulons retourner une valeur différente.

J'ai un script PHP qui obtient l'emplacement géographique, mais j'essaie de trouver un moyen d'éviter de traquer chaque page qui accède à la base de données pour ajouter cette logique. Je me suis rendu compte que si le site utilisait une architecture MVC, je pouvais simplement ajouter la logique au modèle. Malheureusement, ce n'est pas le cas.

Donc, ma question est, est ma seule option pour ajouter cette logique à chaque page qui accède à ces données de la base de données. Ou y a-t-il une meilleure façon dont je ne suis pas au courant?

P.S. Le titre de ma question n'est probablement pas la meilleure description de mon problème, mais je ne savais pas comment le décrire.

+0

Chaque page qui accède à la base de données doit s'y connecter. Y a-t-il un fichier inclus pour effectuer la connexion? Si oui, vous pouvez simplement y inclure le code. En excluant cette phrase, je ne mentionnerai pas qu'il semble que votre site ait vraiment besoin de refactoring majeur. – webbiedave

+0

@Webbiedave, Oui J'ai un seul fichier qui gère la connexion, mais comment puis-je ajouter une logique qui affectera les valeurs de retour d'une instruction SELECT sur une page qui l'inclut? Et oui je sais qu'il faut refactoring :). Merci –

+0

@John - par l'emplacement géographique de l'utilisateur voulez-vous dire pays ou ville? quel niveau devrait déterminer la valeur retournée? –

Répondre

0

Vous n'avez pas besoin d'ajouter la logique de détection à chaque page qui accède aux données, mais à une page commune, par exemple la page d'index. Avez-vous une page commune?

Comme l'a dit webbiedave, vous devrez apporter quelques modifications à votre requête pour modifier les données.

J'ai implémenté l'affichage de données basé sur la localisation de l'utilisateur dans un projet. Nous devions afficher une liste de cours en ligne qui seront suivis par certains tuteurs. La liste des classes est affichée en fonction de la géo-localisation du navigateur/utilisateur enregistré (pays). La région d'utilisateur (à l'intérieur d'un pays je suppose) ne changera pas la logique de base pour faire ceci. On n'a pas utilisé tout cadre, donc je pense que cela peut vous être utile: -

C'est à peu près ce que nous avons fait: -

1. La partie de manipulation de l'emplacement Geo -
Nous avons un index fichier (comme un contrôleur frontal d'un cadre) qui est exécuté pour chaque demande (pour chaque module) qui a tout le code lié à la manipulation de la géo-localisation de l'utilisateur. Voici les principaux points de ce code de manipulation:
- nous avons utilisé une bibliothèque php pour effectuer la détection - Détecter l'emplacement de l'utilisateur (pays dans notre cas) et le stocker en session.
- Ne pas détecter à nouveau/à chaque fois si déjà stocké en session.
- efface la position géographique enregistrée lors de la déconnexion de l'utilisateur et la détecte à nouveau.

2. état de dépendance de localisation à vos requêtes
- Maintenant, vous avez juste à ajouter l'emplacement détecté à votre requête dans un seul endroit, le mettre dans une fonction, ajouter un paramètre d'emplacement pour et l'appeler de votre module. Réutilisez la fonction autant que possible.

Questions connexes