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

JavaScript Discussion :

Le code postal met à jour la liste des villes (Ajax/PHP)


Sujet :

JavaScript

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Je n'ai rien modifié au code javascript par rapport à la version que nous avons résolue vendredi.

    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
     
    <script type='text/javascript'>
     
    function getXhr(){
    var xhr = null; 
    if(window.XMLHttpRequest) // Firefox et autres
       xhr = new XMLHttpRequest(); 
    else if(window.ActiveXObject){ // Internet Explorer 
       try {
       xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    else { // XMLHttpRequest non supporté par le navigateur 
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    xhr = false; 
    } 
    return xhr;
    }
     
    function go(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
                // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    	if(xhr.readyState == 4 && xhr.status == 200){
    	leselect = xhr.responseText;
    	// On se sert de innerHTML pour rajouter les options a la liste
    	document.getElementById('div_ville').innerHTML = leselect;
    	}
    }
     
    // Ici on va voir comment faire du post
    xhr.open("POST","v_inc/ajaxVilles.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    // ici, le code postal
    sel = document.getElementById('codePostal');
    varCodePostal = document.forms['a'].elements['codePostal'].value;	
    xhr.send("codePostal="+varCodePostal);
    }
    </script>
    J'aimerais juste comprendre pourquoi ce code fonctionne :
    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
    code postal.php
    <form name="a">
    <fieldset style="width: 500px">
    <legend>Liste liées</legend>
    <label>Code Postal</label>
    <input type="text" name="codePostal" id="codePostal" onChange="go()"/>
    <label>Ville</label>
    <div id="div_ville" style="display:inline">
    <select name="ville" id="ville">
    <option value="-1">Saisissez le code postal</option>
    </select>
    <input type="text" name="verif" id="verif" value="Vérif"/>
    </div>
    </fieldset>
    </form>
    
    ajaxVilles.php
    <?php
    echo '<select name="ville">';
    if(isset($_POST["codePostal"])){
      mysql_connect("localhost","root","");
      mysql_select_db("joserfages");
      $res = mysql_query("SELECT * FROM sg_ville WHERE codePostal=".$_POST["codePostal"]." ORDER BY ville");
      echo '<option value="-1">Choisissez la ville</option>';
      while($row = mysql_fetch_assoc($res)){
         echo '<option value="'.$row["idVille"].'">'.$row["ville"].'</option>';
      }
    }
    echo '</select>';
    echo '<input type="text" name="verif" value="'. mysql_num_rows($res) .'"/>';
    ?>
    et ne fonctionne plus si j'enlève la ligne en vert.
    En principe, tout ce qui est entre les balises de div_ville devrait être remplacé par le contenu de ajaxVilles.php non ?
    Peu importe si le ce dernier contenu ne contient pas les mêmes éléments de formulaires non ?

    Ce serait déjà une première étape ! Après je dois rajouter un test dans ajaxVilles (voir post plus haut).

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Hello,

    C'est à n'y rien comprendre, je viens de faire le test avec mon formulaire chronoforms (qui utilise le même ajaxVilles.php) et ça fonctionne.
    Mon codePostal.php doit avoir un bug...
    Peut-être une erreurs sur les id comme tu le suggères !

  3. #23
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    tu n'aurais pas un nom de ville avec apostrophe ou un truc du genre ...
    tu peux recupérer le code html généré avec ffx après l'ajax ?

    ça ressemble à une histoire de balises mal formée ...
    à mon avis du au contenu des options ou des values ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 196
    Par défaut
    Je ne sais pas, j'ai pas cherché plus loin, l'essentiel c'est que ça marche dans Joomla/Chronoforms !

    Je suis passée au niveau suivant maintenant, je galère un peu mais je vais me triturer les méninges un peu plus avant de demander de l'aide maintenant que j'ai à peu près compris comment ça fonctionne !
    Cette fois-ci je veux envoyer 3 valeurs le nom, prénom et la date de naissance d'un étudiant pour vérifier s'il n'existe pas déjà avant de l'inscrire.
    Et s'il existe (ou s'il y en a plusieurs avec les mêmes données, ça peut arriver) laisser le choix à l'utilisateur (selectionner un des existants ou inscrire un nouveau)...
    Ca va être un peu plus coton !!
    ++ et encore merci

  5. #25
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Par défaut
    LadyArwen merci pour ton script, j'en ai cherché un pendant longtemps, et le tien correspond exactement à ce que je voulais faire.

    J'ai réussi à le faire fonctionner en local, et comme toi je veux l'intégrer à ChronoForms. Peux-tu m'indiquer la marche à suivre ?

    J'ai bien mis le formulaire dans la case "Form HTML"
    J'ai également mis le javascript dans la case "Form JavaScript"

    J'ai vérifié le lien vers le fichier ajaxVilles.php

    Je ne vois pas pourquoi ça ne marche pas. Quand j'affiche le code source de ma page, le javascript apparaît bien dans le <head>.
    Quand je remplis le champ "code postal", la liste déroulante reste sur "Saisissez le code postal"...

    Est-ce que j'ai oublié quelque chose ?
    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Mettre à jour la liste des items de combobox
    Par sagesse2 dans le forum VB.NET
    Réponses: 8
    Dernier message: 05/01/2015, 09h56
  2. Mettre a jour la liste des modules innexistant.
    Par yoanneox dans le forum Odoo (ex-OpenERP)
    Réponses: 6
    Dernier message: 08/02/2014, 10h43
  3. Réponses: 2
    Dernier message: 08/01/2013, 14h08
  4. Liste des villes et codes postaux
    Par CynO dans le forum Services
    Réponses: 11
    Dernier message: 27/09/2007, 01h07
  5. Mettre à jour la liste des packages
    Par roi_soleil dans le forum Mandriva / Mageia
    Réponses: 13
    Dernier message: 11/08/2006, 08h51

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