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] Code postaux avec hexaposte


Sujet :

AJAX

  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut [AJAX] Code postaux avec hexaposte
    Bonjour,

    J'ai besoin dans un formulaire que lorsque je saisie le code postal j'ai le nom des villes correspondantes. Pour cela ma boite c'est abonné à la poste pour avoir le fichier correspondant (hexaposte).
    Le problème c'est que je ne sais pas du tous comment procéder surtous qu'ils nous ont fournis un fichier .tri. Ce que je n'avais jamais vu.
    C pour cela que je viens dans ce forum histoire de voir comment procéder avec ce fichier, mais surtous par ou commencer.

    Merci

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Si tu ne l'as jamais vu, nous non plus.

    Je vois difficilement comment on peut t'aider dans ces conditions...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Par défaut
    Que contient ce fichier ?
    As-tu essayé de l'ouvrir avec le bloc-notes ou équivalent ?
    S'il contient les codes postaux et les noms des villes, sont-ils séparés par un caractère commun ?

    Bref, plus de précisions seraient les bienvenues...

  4. #4
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    Merci pour ta réponse

    Oui ce fichier je peux l'ouvrir avec le bloc note. Et non les villes et les codes postaux ne sont pas séparé par un caractère commun.

    Voici un exemple de quelque ligne je c pas si sa pourras t'aider.

    01004 AMBERIEU EN BUGEY 01500*AMBERIEU EN BUGEY
    01004CAMBERIEU EN BUGEY 01501 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01502 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01503 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01504 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01505 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01506 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01507 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01508 AMBERIEU EN BUGEY CEDEX
    01004CAMBERIEU EN BUGEY 01509 AMBERIEU EN BUGEY CEDEX
    Merci

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    Sur ce lien tu pourras voir un extrait de ce fichier

    http://www.laposte.fr/sna/IMG/txt/hexaposte.txt

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Par défaut
    Je pense que tu devrais t'orienter vers les expressions régulières:

    http://g-rossolini.developpez.com/tutoriels/php/regex/

    Dans le cas présent, tu retrouves toujours la syntaxe 5 chiffres puis une chaine de caractères.

    Désolé de ne pas t'aiguiller le plus, mais je n'ai pas beaucoup de temps ce soir....

    Tiens nous au courant.

  7. #7
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    Merci pour ta reponse.

    Ce qu'il y a c que je ne code pas en php mais en java.

    Dés que j'ai trouvé je vous tiens o courant

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Par défaut
    D'accord, autant pour moi.
    Les expressions régulières se retrouvent dans un peu tous les langages, mais tu trouveras un tutoriel plus adapté ici:
    http://cyberzoide.developpez.com/java/regex/

    Bon courage.

  9. #9
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    Merci

  10. #10
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    Bonjour,

    Donc j'ai bien utilisé les expressions regulières pour découper mon fichier.

    Cependant je n'arrives pas à faire la communication entre Ajax et la servlet.

    Ma page html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <input class="saisie" type="text" name="Code postal" size="5" maxlength="5" value="" id="id_cp" onchange="afficherVille();"/><br/>
    	<select name="Ville" id="id_ville">
    		<%for(int f=0; f<ville.size(); f++){ %>
    		<option value="<%=ville.get(f)%>"><%=ville.get(f)%></option>
    		<%} %>
    	</select>
    Ma page js :

    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
     
    function afficherVille(){
    	  var xhr; // Objet XMLHttpRequest
    	  var cp=document.getElementById("id_cp").value;
     
    	 xhr = getXMLHttpRequest();
    	 xhr.open("GET", "MONURL/SrvCodePostaux?cp="+cp, false);
     
    	 // Mise en place de la routine de traitement de la réponse
    	 xhr.onreadystatechange = function () {
    	 if ((xhr.readyState == 4) && (xhr.status == 200))
    	 document.getElementById("ville").innerHTML = xhr.responseText;
    	 else if ((xhr.readyState == 4) && (xhr.status != 200)) {
    	 window.alert("Problème avec AJAX.");
    	 }
     
     
    	 // Envoi de la requête
    	 xhr.send();
    	 }
    }
    En ce qui concerne la servlet c la où je plantes je ne sais pas comment faire le lien avec Ajax. Pour l'instant elle fait tous le traitement pour trouver la ville en fonction du code postal.

    Si quelqu'un aurait un exemple à me proposer sa ne serait pas de refus.

    Merci

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 59
    Par défaut
    Bonjour,

    Le "lien" avec Ajax est en fait la variable "cp" que tu passes dans ton url lorsque tu crées ta requête Ajax.

    Dans ton code côté serveur, il te suffit de faire comme si tu cherchais à récupérer la valeur de la variable passée en GET.

    Je n'ai malheureusement pas d'exemple à te proposer.

    En espérant que ça puisse t'aider...

  12. #12
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 24
    Par défaut
    Merci pour ta reponce.

    Si sa interresse je fourni le code que j'ai utilisé car maintenant cela fonctionne sauf une petite erreur avec ie.

    Mon js :

    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
     
    function afficherVille(id){
    	//  var xhr;
    	var afficherVille="";
    	var afficherVille1="";
    	var cp=document.getElementById(id).value;
    	var xhr=null; // Objet XMLHttpRequest
    	if (window.XMLHttpRequest){
    		xhr = new XMLHttpRequest();
    		}
    		else if (window.ActiveXObject){
    		xhr = new ActiveXObject("Microsoft.XMLHTTP");
     
    		}
    		else{
    		alert("Votre navigateur n'est pas compatible ajax");
    		}
    		if(xhr){
    		xhr.onreadystatechange = function(){
    			 if ((xhr.readyState == 4) && (xhr.status == 200)){
    			 document.getElementById("id_ville").innerHTML = xhr.responseText;
    			 //alert(xhr.responseText);
    			 }
    					 else if ((xhr.readyState == 4) && (xhr.status != 200)) {
    					 window.alert("Problème avec AJAX.");
    					 }
    		}
    		xhr.open("POST","/mutuelle/SrvCodePostaux?cp="+cp/*"http://localhost:9080/mutuelle/SrvCodePostaux?cp="+cp*/,true);
    		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    		xhr.send(cp);
    		}
    }
    Ma servlet :

    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
     
    public class SrvCodePostaux extends SrvServletStandard{
     
    	public void performTask(
    			HttpServletRequest request,
    			HttpServletResponse response)
    			throws Exception {
    		String cp = request.getParameter("cp");			
    		String filePath = "/CPVilles.txt";
    		try{
    			// Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
    			// try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
    			// est correctement instancié (évite les NullPointerException)
    			BufferedReader buff = new BufferedReader(new FileReader(filePath));
     
    			try {
    			String line;
    			String ville = null;
    			List listVille=new ArrayList();
    			// Lecture du fichier ligne par ligne. Cette boucle se termine
    			// quand la méthode retourne la valeur null.
    			while ((line = buff.readLine()) != null) {
    			String cp1=(String) line.substring(44, 49);
    			ville=line.substring(50, 83);
    			Pattern pattern = Pattern.compile(cp);
    			Matcher matcher = pattern.matcher(cp1);
     
    			if(matcher.find()){ // si la chaine a été trouvé
    				listVille.add(ville);
    			}
    			}
     
    			try {
    				//if(listVille!=null){
    				response.getWriter().println("<select name='Ville'");
    				for(int i=0;i<listVille.size();i++)	{
    					response.getWriter().println("<option>");
    					response.getWriter().println(listVille.get(i));
    					response.getWriter().println("</option>");
    				}
    				response.getWriter().println("</select>");
     
     
    				} catch (Exception e) {
    				  e.printStackTrace();
    				}
    			} finally {
    			// dans tous les cas, on ferme nos flux
    			buff.close();
    			}
    			} catch (Exception ioe) {
    			// erreur de fermeture des flux
    			System.out.println("Erreur --" + ioe.toString());
    			}
     
    		}
    }
    Ma jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input class="saisie" name="Code postal" type="text" size="5" maxlength="5" value="" id="cp" onkeyup="afficherVille('cp');"/>
    	<div id="id_ville">
    	</div>
    L'erreur avec ie c que lorsqu'il y a une seule ville comme résultat il me met la liste déroulante vide et lorsque'il y a plusieurs ville il m'enlève la 1ere.
    Sur firefox cela fonctionne correctement.

    Bon sinon ce code fonctionne plutot bien.

  13. #13
    Invité de passage
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Par défaut formatage hexaposte
    pour info, voici le formatage du fichier hexaposte :

    http://www.amabis.com/referentiels-p...-HEXAPOSTE.pdf

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

Discussions similaires

  1. [Web Service] Géolocalisation avec Code postaux
    Par cjacquel dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/02/2013, 20h31
  2. Base de données des codes postaux avec CEDEX
    Par damien27000 dans le forum Autres
    Réponses: 5
    Dernier message: 12/01/2012, 14h38
  3. Base de données avec la liste des voies des communes et codes postaux ?
    Par [ZiP] dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 26/08/2009, 15h44
  4. Réponses: 0
    Dernier message: 14/07/2009, 15h26
  5. [AJAX] faire apparaître du code HTML avec AJAX ?
    Par beegees dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 29/10/2008, 10h34

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