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

AJAX Discussion :

[AJAX] Comment détecter le pays à partir d'une base de données grâce à GeoNames


Sujet :

AJAX

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut [AJAX] Comment détecter le pays à partir d'une base de données grâce à GeoNames
    Bonjour,
    J'ai des fonctions, que j'ai trouvé ici : http://www.geonames.org/export/ajax-...ocomplete.html
    Elles permettent de détecter automatiquement le pays où l'on est, de générer une liste de villes correspondant au code postal écrit ( la correspondance code-postal et ville marchent uniquement pour la France.)
    Dans ce code, les pays sont écrits sous forme de liste. Dans mon cas, ma liste est dynamique et elle se trouve dans ma base de données, du coup, la fonction ne permet plus de détecter le pays! Comment faire pour que ça marche pour ma liste dynamique ?
    Code Ajax:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <script>
    var postalcodes;
    function getLocation(jData) {
    	if (jData == null) {
    		return;
    	}
    	postalcodes = jData.postalcodes;
    	if (postalcodes.length > 1) {
    		document.getElementById('suggestBoxElement').style.visibility = 'visible';
    		var suggestBoxHTML  = '';
    		for (i=0;i< jData.postalcodes.length;i++) {
    			suggestBoxHTML += "<li class='select' id=pcId" + i + " onmousedown='suggestBoxMouseDown(" + i +")' onmouseover='suggestBoxMouseOver(" +  i +")' onmouseout='suggestBoxMouseOut(" + i +")'> " + postalcodes[i].placeName  +'</li>' ; //Ajout possible du code pays ainsi que le code postal avec : + postalcodes[i].countryCode + ' ' + postalcodes[i].postalcode + ' &nbsp;&nbsp; ' 
    		}
    		document.getElementById('suggestBoxElement').innerHTML = suggestBoxHTML;
    	} else {
    		if (postalcodes.length == 1) { 
    			var placeInput = document.getElementById("placeInput");
    			placeInput.value = postalcodes[0].placeName;
    		}
    		closeSuggestBox();
    	}
    }
    function closeSuggestBox() {
    	document.getElementById('suggestBoxElement').innerHTML = '';
    	document.getElementById('suggestBoxElement').style.visibility = 'hidden';
    }
    function suggestBoxMouseOut(obj) {
    	document.getElementById('pcId'+ obj).className = 'suggestions';
    }
    function suggestBoxMouseDown(obj) {
    	closeSuggestBox();
    	var placeInput = document.getElementById("placeInput");
    	placeInput.value = postalcodes[obj].placeName;
    }
    function suggestBoxMouseOver(obj) {
    	document.getElementById('pcId'+ obj).className = 'suggestionMouseOver';
    }
    function postalCodeLookup() {
    	var country = document.getElementById("countrySelect").value;
    	if (geonamesPostalCodeCountries.toString().search(country) == -1) {
    		return; 
    	}
    	document.getElementById('suggestBoxElement').style.visibility = 'visible';
    	document.getElementById('suggestBoxElement').innerHTML = '<small><i>Recherche ...</i></small>';
    	var postalcode = document.getElementById("postalcodeInput").value;
    	request = 'http://api.geonames.org/postalCodeLookupJSON?postalcode=' + postalcode  + '&country=' + country  + '&username=croixrougecrf&callback=getLocation';
    	aObj = new JSONscriptRequest(request);
    	aObj.buildScriptTag();
    	aObj.addScriptTag();
    }
    function setDefaultCountry() {
    	var countrySelect = document.getElementById("countrySelect");
    	for (i=0;i< countrySelect.length;i++) {
    		if (countrySelect[i].value == geonamesUserIpCountryCode) {
    			countrySelect.selectedIndex = i;
    		}
    	}
    }
    </script>
    Voici deux codes de formulaire pour le champ pays :
    Code pour liste de pays = liste dynamique => ne détecte pas le pays
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!-- Pays liste dynamique  ------>	
    <section class="col col-5">
    	<label class="select">
    		<select id="countrySelect" name="country">
    <?php
    $reponse = $bdd->query('SELECT * FROM pays'); 
    echo '<OPTION VALUE="">Pays</OPTION>';
    while ($donnees = $reponse->fetch(PDO::FETCH_ASSOC)){
    	echo '<OPTION VALUE="'.$donnees["id_pays"].'">'.$donnees["pays"].'</OPTION>';
    } 
    ?>
    	        </select>
    Code pour liste de pays = liste statique => détecte le pays
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!-- Pays liste statique -------------->
    <section class="col col-5">
    <label class="select">
    	<select id="countrySelect" name="country"><option value="AD"> Andorra</option><option value="AE"> United Arab Emirates</option><option value="AF"> Afghanistan</option><option value="AG"> Antigua and Barbuda</option><option value="AI"> Anguilla</option><option value="AL"> Albania</option><option value="AM"> Armenia</option><option value="AN"> Netherlands Antilles</option><option value="AO"> Angola</option><option value="AQ"> Antarctica</option><option value="AR"> Argentina</option><option value="AS"> American Samoa</option><option value="AT"> Austria</option><option value="AU"> Australia</option><option value="AW"> Aruba</option><option value="AX"> Aland Islands</option><option value="AZ"> Azerbaijan</option><option value="BA"> Bosnia and Herzegovina</option><option value="BB"> Barbados</option><option value="BD"> Bangladesh</option><option value="BE"> Belgium</option><option value="BF"> Burkina Faso</option><option value="BG"> Bulgaria</option><option value="BH"> Bahrain</option><option value="BI"> Burundi</option><option value="BJ"> Benin</option><option value="BM"> Bermuda</option><option value="BN"> Brunei</option><option value="BO"> Bolivia</option><option value="BR"> Brazil</option><option value="BS"> Bahamas</option><option value="BT"> Bhutan</option><option value="BV"> Bouvet Island</option><option value="BW"> Botswana</option><option value="BY"> Belarus</option><option value="BZ"> Belize</option><option value="CA"> Canada</option><option value="CC"> Cocos Islands</option><option value="CD"> The Democratic Republic Of Congo</option><option value="CF"> Central African Republic</option><option value="CG"> Congo</option><option value="CH"> Switzerland</option><option value="CI"> C&ocirc;te d'Ivoire</option><option value="CK"> Cook Islands</option><option value="CL"> Chile</option><option value="CM"> Cameroon</option><option value="CN"> China</option><option value="CO"> Colombia</option><option value="CR"> Costa Rica</option><option value="CS"> Serbia and Montenegro</option><option value="CU"> Cuba</option><option value="CV"> Cape Verde</option><option value="CX"> Christmas Island</option><option value="CY"> Cyprus</option><option value="CZ"> Czech Republic</option><option value="DE"> Germany</option><option value="DJ"> Djibouti</option><option value="DK"> Denmark</option><option value="DM"> Dominica</option><option value="DO"> Dominican Republic</option><option value="DZ"> Algeria</option><option value="EC"> Ecuador</option><option value="EE"> Estonia</option><option value="EG"> Egypt</option><option value="EH"> Western Sahara</option><option value="ER"> Eritrea</option><option value="ES"> Spain</option><option value="ET"> Ethiopia</option><option value="FI"> Finland</option><option value="FJ"> Fiji</option><option value="FK"> Falkland Islands</option><option value="FM"> Micronesia</option><option value="FO"> Faroe Islands</option><option value="FR"> France</option><option value="GA"> Gabon</option><option value="GB"> United Kingdom</option><option value="GD"> Grenada</option><option value="GE"> Georgia</option><option value="GF"> French Guiana</option><option value="GH"> Ghana</option><option value="GI"> Gibraltar</option><option value="GL"> Greenland</option><option value="GM"> Gambia</option><option value="GN"> Guinea</option><option value="GP"> Guadeloupe</option><option value="GQ"> Equatorial Guinea</option><option value="GR"> Greece</option><option value="GS"> South Georgia And The South Sandwich Islands</option><option value="GT"> Guatemala</option><option value="GU"> Guam</option><option value="GW"> Guinea-Bissau</option><option value="GY"> Guyana</option><option value="HK"> Hong Kong</option><option value="HM"> Heard Island And McDonald Islands</option><option value="HN"> Honduras</option><option value="HR"> Croatia</option><option value="HT"> Haiti</option><option value="HU"> Hungary</option><option value="ID"> Indonesia</option><option value="IE"> Ireland</option><option value="IL"> Israel</option><option value="IN"> India</option><option value="IO"> British Indian Ocean Territory</option><option value="IQ"> Iraq</option><option value="IR"> Iran</option><option value="IS"> Iceland</option><option value="IT"> Italy</option><option value="JM"> Jamaica</option><option value="JO"> Jordan</option><option value="JP"> Japan</option><option value="KE"> Kenya</option><option value="KG"> Kyrgyzstan</option><option value="KH"> Cambodia</option><option value="KI"> Kiribati</option><option value="KM"> Comoros</option><option value="KN"> Saint Kitts And Nevis</option><option value="KP"> North Korea</option><option value="KR"> South Korea</option><option value="KW"> Kuwait</option><option value="KY"> Cayman Islands</option><option value="KZ"> Kazakhstan</option><option value="LA"> Laos</option><option value="LB"> Lebanon</option><option value="LC"> Saint Lucia</option><option value="LI"> Liechtenstein</option><option value="LK"> Sri Lanka</option><option value="LR"> Liberia</option><option value="LS"> Lesotho</option><option value="LT"> Lithuania</option><option value="LU"> Luxembourg</option><option value="LV"> Latvia</option><option value="LY"> Libya</option><option value="MA"> Morocco</option><option value="MC"> Monaco</option><option value="MD"> Moldova</option><option value="MG"> Madagascar</option><option value="MH"> Marshall Islands</option><option value="MK"> Macedonia</option><option value="ML"> Mali</option><option value="MM"> Myanmar</option><option value="MN"> Mongolia</option><option value="MO"> Macao</option><option value="MP"> Northern Mariana Islands</option><option value="MQ"> Martinique</option><option value="MR"> Mauritania</option><option value="MS"> Montserrat</option><option value="MT"> Malta</option><option value="MU"> Mauritius</option><option value="MV"> Maldives</option><option value="MW"> Malawi</option><option value="MX"> Mexico</option><option value="MY"> Malaysia</option><option value="MZ"> Mozambique</option><option value="NA"> Namibia</option><option value="NC"> New Caledonia</option><option value="NE"> Niger</option><option value="NF"> Norfolk Island</option><option value="NG"> Nigeria</option><option value="NI"> Nicaragua</option><option value="NL"> Netherlands</option><option value="NO"> Norway</option><option value="NP"> Nepal</option><option value="NR"> Nauru</option><option value="NU"> Niue</option><option value="NZ"> New Zealand</option><option value="OM"> Oman</option><option value="PA"> Panama</option><option value="PE"> Peru</option><option value="PF"> French Polynesia</option><option value="PG"> Papua New Guinea</option><option value="PH"> Philippines</option><option value="PK"> Pakistan</option><option value="PL"> Poland</option><option value="PM"> Saint Pierre And Miquelon</option><option value="PN"> Pitcairn</option><option value="PR"> Puerto Rico</option><option value="PS"> Palestine</option><option value="PT"> Portugal</option><option value="PW"> Palau</option><option value="PY"> Paraguay</option><option value="QA"> Qatar</option><option value="RE"> Reunion</option><option value="RO"> Romania</option><option value="RU"> Russia</option><option value="RW"> Rwanda</option><option value="SA"> Saudi Arabia</option><option value="SB"> Solomon Islands</option><option value="SC"> Seychelles</option><option value="SD"> Sudan</option><option value="SE"> Sweden</option><option value="SG"> Singapore</option><option value="SH"> Saint Helena</option><option value="SI"> Slovenia</option><option value="SJ"> Svalbard And Jan Mayen</option><option value="SK"> Slovakia</option><option value="SL"> Sierra Leone</option><option value="SM"> San Marino</option><option value="SN"> Senegal</option><option value="SO"> Somalia</option><option value="SR"> Suriname</option><option value="ST"> Sao Tome And Principe</option><option value="SV"> El Salvador</option><option value="SY"> Syria</option><option value="SZ"> Swaziland</option><option value="TC"> Turks And Caicos Islands</option><option value="TD"> Chad</option><option value="TF"> French Southern Territories</option><option value="TG"> Togo</option><option value="TH"> Thailand</option><option value="TJ"> Tajikistan</option><option value="TK"> Tokelau</option><option value="TL"> Timor-Leste</option><option value="TM"> Turkmenistan</option><option value="TN"> Tunisia</option><option value="TO"> Tonga</option><option value="TR"> Turkey</option><option value="TT"> Trinidad and Tobago</option><option value="TV"> Tuvalu</option><option value="TW"> Taiwan</option><option value="TZ"> Tanzania</option><option value="UA"> Ukraine</option><option value="UG"> Uganda</option><option value="UM"> United States Minor Outlying Islands</option><option value="US"> United States</option><option value="UY"> Uruguay</option><option value="UZ"> Uzbekistan</option><option value="VA"> Vatican</option><option value="VC"> Saint Vincent And The Grenadines</option><option value="VE"> Venezuela</option><option value="VG"> British Virgin Islands</option><option value="VI"> U.S. Virgin Islands</option><option value="VN"> Vietnam</option><option value="VU"> Vanuatu</option><option value="WF"> Wallis And Futuna</option><option value="WS"> Samoa</option><option value="YE"> Yemen</option><option value="YT"> Mayotte</option><option value="ZA"> South Africa</option><option value="ZM"> Zambia</option><option value="ZW"> Zimbabwe</option></select>
    <i></i>
    </label>
    </section>

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    Je viens de voir qu'un fichier a été attaché entre les balises <head> et </head> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="http://api.geonames.org/export/geonamesData.js?username=croixrougecrf"></script>
    Ce fichier correpond aux values des pays.
    var geonamesPostalCodeCountries = ["AD","AR","AT","AU","AX","BD","BE","BG","BR","CA","CH","CZ","DE","DK","DO","DZ","ES","FI","FO","FR","GB","GF","GL","GP","GT","HR","HU","IN","IS","IT","JP","LI","LK","LT","LU","MC","MD","MK","MQ","MX","MY","NL","NO","NZ","PH","PK","PL","PM","PT","RE","RO","RU","SE","SI","SK","SM","TH","TR","US","VA","WF","YT","ZA","GR"];
    var geonamesUserIpCountryCode='FR';

    Est-ce qu'il faudrait changer ce fichier ?

    Merci

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 646
    Points
    44 646
    Par défaut
    Bonjour,
    Code pour liste de pays = liste dynamique => ne détecte pas le pays
    as tu regardé le code HTML généré ?

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    as tu regardé le code HTML généré ?
    Bonjour, merci pour votre réponse.
    Le code HTML généré est simplement une liste de pays, la fonction Gronames ne fait rien.

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut
    Problème résolu
    En fait, GeoNames utilise les codes des pays au format ISO (FR pour la France ..etc), et moi j'avais mis des nombres à la place, donc il suffisait de remplacer mes identifiants nombres en code ISO, et Geonames les détectent.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/09/2013, 16h34
  2. Réponses: 1
    Dernier message: 31/07/2009, 08h12
  3. Réponses: 2
    Dernier message: 26/08/2008, 15h35
  4. afficher une image à partir d'une base de données access
    Par zidenne dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/11/2005, 11h41

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