Forum CMS Made Simple FR

Version complète : Company Directory : problème de recherche par code postal
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.4
#~ Url du site : lerefugedubienetre.farangprod.com
#~ Hébergeur / Soft : o2switch
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 2.1.4
#~ Installed Modules:
#~ AdminSearch: 1.0.1
#~ CGContentUtils: 2.1.5
#~ CGExtensions: 1.53.13
#~ CGGoogleMaps2: 1.1.1
#~ CGJobMgr: 1.3.4
#~ CGSimpleSmarty: 2.1.4
#~ CGSmartImage: 1.21.5
#~ CGUserDirectory: 1.5
#~ CMSContentManager: 1.1
#~ CMSForms: 1.11.2
#~ CMSMailer: 6.2.14
#~ CSSPreprocessor: 2.1
#~ CodeMirror: 3.0.0
#~ CompanyDirectory: 1.23.3
#~ DesignManager: 1.1.1
#~ ExtendedTools: 1.3.3
#~ FAQ: 2.0.1
#~ FileManager: 1.5.2
#~ FormBuilder: 0.8.1.4
#~ FrontEndUsers: 2.1.1
#~ Gallery: 2.1.6
#~ JQueryTools: 1.3.9
#~ JSAvailability: 0.10.2
#~ LISE: 1.2.1.1
#~ LISECategories: 1.2.1.1
#~ LISEPrestations: 1.2.1.1
#~ LISETarifs: 1.2.1.1
#~ ListIt2: 1.4.1
#~ MCFramework: 0.0.6
#~ MicroTiny: 2.0.3
#~ MleCMS: 1.11.5
#~ ModuleManager: 2.0.2
#~ NMS: 2.12.2
#~ Navigator: 1.0.3
#~ News: 2.50.5
#~ Orm: 0.3.3
#~ Postcode: 1.2.1
#~ Search: 1.50.2
#~ Storelocator: 0.2
#~ ThemeManager: 1.1.8
#~ TinyMCE: 3.1.3
#~ TruetypeText: 2.2.1
#~ Config Information:
#~ php_memory_limit:
#~ max_upload_size: 512000000
#~ url_rewriting: mod_rewrite
#~ page_extension: .html
#~ query_var: page
#~ auto_alias_content: true
#~ locale: fr_FR.utf8
#~ set_names: true
#~ timezone: Europe/Paris
#~ permissive_smarty: false
#~ Php Information:
#~ phpversion: 5.5.38
#~ md5_function: On (Vrai)
#~ json_function: On (Vrai)
#~ gd_version: 2
#~ tempnam_function: On (Vrai)
#~ magic_quotes_runtime: Off (Faux)
#~ E_ALL: 32767
#~ E_STRICT: 2048
#~ E_DEPRECATED: 8192
#~ test_file_timedifference: Aucune différence de date du système trouvée
#~ test_db_timedifference: Aucune différence de date du système trouvée
#~ create_dir_and_file: 1
#~ memory_limit: 512M
#~ max_execution_time: 120
#~ register_globals: Off (Faux)
#~ output_buffering: 4096
#~ disable_functions:
#~ open_basedir:
#~ test_remote_url: Valable
#~ file_uploads: On (Vrai)
#~ post_max_size: 512M
#~ upload_max_filesize: 512M
#~ session_save_path: /tmp (0700)
#~ session_use_cookies: On (Vrai)
#~ xml_function: On (Vrai)
#~ xmlreader_class: On (Vrai)
#~ check_ini_set: On (Vrai)
#~ curl: On
#~ Performance Information:
#~ allow_browser_cache: Off (Faux)
#~ browser_cache_expiry: 60
#~ php_opcache: On (Vrai)
#~ smarty_cache: Off (Faux)
#~ smarty_compilecheck: Off (Faux)
#~ smarty_cache_udt: Off (Faux)
#~ auto_clear_cache_age: Off (Faux)
#~ Server Information:
#~ Server Software: Apache
#~ Server Api: litespeed
#~ Server Os: Linux 2.6.32-673.26.1.lve1.4.17.el6.x86_64 On x86_64
#~ Server Db Type: MySQL (mysqli)
#~ Server Db Version: 10.0.27
#~ Server Db Grants: Trouvé un privilège "GRANT ALL" qui semble être adapté
#~ Permission Information:
#~ tmp: /home/farangpr/Sites/lerefugedubienetre/tmp (0755)
#~ tmp_cache: /home/farangpr/Sites/lerefugedubienetre/tmp/cache (0755)
#~ templates_c: /home/farangpr/Sites/lerefugedubienetre/tmp/templates_c (0755)
#~ modules: /home/farangpr/Sites/lerefugedubienetre/modules (0755)
#~ uploads: /home/farangpr/Sites/lerefugedubienetre/uploads (0755)
#~ Masque de création de fichier (umask) : /home/farangpr/Sites/lerefugedubienetre/tmp/cache (0755)
#~ config_file: 0644
#~ ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonjour à tous,

Pour mettre en place un système de localisation de professionnels, j'ai utilisé CompanyDirectory et CGGoogleMap2.
J'arrive sans problème à mettre mes pros sur la carte dynamiquement lors de l'affiche "sommaire", par contre, lors d'une recherche par code postal il ne trouve personne.

J'ai bien installer le module complémentaire PostCode Lookup mais ça ne fonctionnait pas avec un lookup online; j'ai donc uploadé ma liste de tous les codes postaux français avec le nom de la ville et coordonnées gps... et là toujours rien.

En debuggant j'ai cette erreur:


Debug: (0,267687) - (usage: 8357520) - (peak: 8815368)
Code :
[== Indéfini ==]
(mysqli): SELECT * FROM cms_module_postcode
                     WHERE country = 'FR' AND postal = '82700' LIMIT  1

Debug: (0,271635) - (usage: 8397128) - (peak: 9063904)
Code :
(mysqli): SELECT COUNT(DISTINCT C.id) AS count,(SELECT 3959 * acos(cos(radians(43,95))
                 * cos(radians(C.latitude))
                 * cos(radians(C.longitude) - radians(1,166667))
                 + sin(radians(43,95))
                 * sin(radians(C.latitude)))) AS distance FROM cms_module_compdir_companies C WHERE (C.status = 'published') HAVING distance <= 50 LIMIT  1
Error (1582): Incorrect parameter count in the call to native function 'radians'

Debug: (0,271726) - (usage: 8398080) - (peak: 9063904)
Code :
(mysqli): SELECT DISTINCT C.*,(SELECT 3959 * acos(cos(radians(43,95))
                 * cos(radians(C.latitude))
                 * cos(radians(C.longitude) - radians(1,166667))
                 + sin(radians(43,95))
                 * sin(radians(C.latitude)))) AS distance FROM cms_module_compdir_companies C WHERE (C.status = 'published') HAVING distance <= 50 ORDER BY RAND() ,company_name ASC LIMIT 0, 250
Error (1582): Incorrect parameter count in the call to native function 'radians'

Donc, il va bien chercher les coordonnées dans la base de donnée mais apparaissent des virgules au lieu de points.

Ma question:

Est-ce que le problème ne viendrait pas de là ?

Si oui, qui sait quoi changer pour remédier à ce problème ?

Si non, d'où peut bien venir le soucis alors ?

Merci à vous
Je me réponds tout seul comme ça ça pourra servir aux autres...

c'était bien ces histoires de virgule qui mettaient le wild dans la recherche.

il faut modifier le fichier class.cd_company_query.php

remplacer à la ligne 166 :
Code :
[== PHP ==]
$str = '(SELECT 3959 * acos(cos(radians('.$coords['lat'].'))
                 * cos(radians(C.latitude))
                 * cos(radians(C.longitude) - radians('.$coords['long'].'))
                 + sin(radians('.$coords['lat'].'))
                 * sin(radians(C.latitude)))) AS distance';

par:
Code :
[== Indéfini ==]
$str = '(SELECT 3959 * acos(cos(radians('.str_replace(",", ".", $coords['lat']).'))
                 * cos(radians(C.latitude))
                 * cos(radians(C.longitude) - radians('.str_replace(",", ".", $coords['long']).'))
                 + sin(radians('.str_replace(",", ".", $coords['lat']).'))
                 * sin(radians(C.latitude)))) AS distance';

et là, la fonction de recherche fonctionne !

je continue de voir si y'a d'autres trucs qui déconnent ou que je ne comprends pas et je reviens...
Donc, je reviens avec un autre problème concernant toujours cette recherche par code postal.

dans l'aide il est indiqué que si on fait une recherche par code postal cette recherche est prioritaire sur la géolocalisation, si elle est activée... et ben chez moi la géolocalisation prend le devant sur le code postal et je dois effacer les coordonnées gps pour pouvoir faire une recherche sur le code postal voulu... c'est un peu ennuyant !

Si quelqu'un a une idée pour ça.... merci
Bonjour,
À ma connaissance le module PostCode Lookup, n'est pas compatible avec les codes postaux français, il effectue une recherche sur un n° de ZIP unique. En France nos codes postaux peuvent correspondre à plusieurs villes ou villages sans compter les grandes villes qui ont des arrondissements.

J'ai contourné le problème en créant un champ code_postal et en faisant la recherche sur ce champ, ça fonctionne. Par contre ça pert de son intérêt par rapport à la localisation de périmètre approchant.

Bon courage.