Souci pour imputer les valeurs de résultats de recherche dans deux champs input

Résolu
mountainmagazin Messages postés 6 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 29 décembre 2008 - 5 nov. 2008 à 16:13
mountainmagazin Messages postés 6 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 29 décembre 2008 - 5 nov. 2008 à 20:11
Salut à tous,

J'ai vraiment besoin d'un coup de main parce que je me prends la tête sur une fonction depuis de longues heures, que c'est surement tout con, et que je ne trouve pas la réponse qui est probablement sous mon nez.

Vous pouvez tester mon script à cette adresse :
-https://www.guide-camping-france.fr/espace-pro/index.php

Passez l'alerte du certificat, c'est normal, je dev sur un serveur en HTTPS et je n'ai pas encore pris le certificat.

En fait, le script comme vous pouvez le voir récupère le nom des villes via ajax, avec la recherche effectuée à partir des codes postaux saisis.
Tout fonctionne parfaitement, sauf un petit souci : si vous tapez un code postal partiel, une liste de ville s'affiche.
- Lorsque vous choisissez un code postal en cliquant dessus, il file dans le input du code postal
- Lorsque vous choisissez une ville en cliquant dessus, elle file dans le input de la ville

L'affichage des résultats est géré, sa disparition au click aussi, et la fonction de tri des résultats également.

Je n'arrive par contre pas à faire en sorte que lorsqu'on clique sur un résultat, que ce soit une ville ou un code postal, on remplisse et mette à jour les 2 champs input, avec le code postal dans le champ du code et la ville dans le champ de la ville.
Je sais pas si je suis clair ???

En fait, il est problématique de ne pas pouvoir ajouter les deux en même temps, parce que si un internaute choisi sa ville dans les résultats après avoir tapé un code postal partiel, le champ code postal n'est pas mis à jour (il reste partiel), et il aura une erreur de format de code postal lors de la validation du formulaire.

Les résultats, après l'envoi en ajax,  se présentent dans mon code sous la forme suivante :
<?php
$this -> sResult .= '

'.$cp.'

' . ucwords ( $aTmpVilles[$clef] ) . '

';
?>

on a un div, sans lequel se trouvent 2 span, avec respectivement l'affichage des code postaux dans le premier, et des villes dans le second (je précise que ce code se trouve dans une boucle foreach)
onclick="document.getElementById(\'code_postal\').value = this.innerHTML; me renvoi bien la valeur du code postal dans l'input code_postal lorsque l'on clique dessus

onclick="document.getElementById(\'ville\').value = this.innerHTML; me renvoi bien la valeur de la ville dans l'input ville lorsque l'on clique dessus

Je voudrais tout simplement renvoyer les deux dans leurs input respectifs lorsque l'on clique sur l'un ou l'autre, tout simplement, ce que je n'arrive pas à faire...

Si vous avez une soluce, je suis preneur...
Merci de votre aide.
A voir également:

5 réponses

mountainmagazin Messages postés 6 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 29 décembre 2008
5 nov. 2008 à 18:18
Je viens de trouver en fait.

J'ai répondu avec chrome avant, désolé, il supporte pas l'éditeur lol

En fait, il suffit de créer un tableau sur l'ID des balises span :: codepost['.$iCpt.']

   foreach ($aTmpCP as $clef => $cp) {    $sColor ($iCpt%2 0)?'background-color: #cccccc;':'background-color: #ffffff;';
    $this -> sResult .= '

'.$cp.'

' . ucwords ( $aTmpVilles[$clef] ) . '

';
    $iCpt ++;
   }

Ensuite, on récupère la valeur en fonction de cet ID unique incrémenté à chaque boucle.

Merci bcp de ton aide, je faisais une erreur quelque part que je n'arrivais plus à voir.
Cordialement.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 nov. 2008 à 16:21
bonjour,
loin d'avoir tout compris....

onclick="document.getElementById('code_postal').value = this.innerHTML;
            document.getElementById('ville').value=document.getElementById('vil').innerHTML;"
           

onclick="document.getElementById('ville').value = this.innerHTML;
            document.getElementById('code_postal').value=document.getElementById('codepost').innerHTML;"

ça suffit pas ?

Cordialement

          Bul [mon Site] [M'écrire]         
0
mountainmagazin Messages postés 6 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 29 décembre 2008
5 nov. 2008 à 18:03
Salut,

tu as très bien compris, je te remercie.

J'avais essayé cette méthode sans succès, j'avais du faire une faute de frappe parce que ça fonctionne.

Toutefois, il y a un souci, parce que dans la liste des résultats, lorsque l'on clique sur une ville, on a la bonne ville, si on clique sur le code postal, on a le bon code postal, on a bien une double saisie du résultat dans les 2 champs, mais il y a une erreur sur la deuxième valeur.

Faites un essai :
https://www.guide-camping-france.fr/espace-pro/index.php

Si vous tapez dans le champ code postal 015, vous obtenez la liste des villes à partir des codes postaux qui commencent pas ces trois chiffres.

Dans la liste des résultats, si vous cliquez sur la septième réponse (Armix, la première ville qui a un code postal différent de la première réponse), alors vous voyez que le code postal inséré est celui de la première ligne de réponse, et qu'il ne correspond pas à la ville sélectionnées.

L'inverse est vrai aussi. Si vous cliquez sur un code postal différent de la première réponse, la ville insérée dans le champ ville est la première réponse.

Est ce que c'est plus clair ?

onclick="document.getElementById('code_postal').value = this.innerHTML; récupère et insère bien le bon code postal SI ET SEULEMENT SI on clique sur un code postal

En revanche

document.getElementById('ville').value=document.getElementById('vil').innerHTML; ne récupère pas la bonne ville, mais la première de la liste

Et inversement si on clique sur une ville.

Or pour que le script fonctionne parfaitement et qu'il n'y ai pas d'erreurs, il faut que les deux correspondent, forcément.

C'est important d'utiliser ce genre de script, parce que ça permet d'enregistrer dans la BDD des noms de villes formatés, sans accents et sans fautes de frappe pour pouvoir ensuite effectuer facilement des recherches.

Merci du coup de main.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 nov. 2008 à 18:47
ah ben oui... un id doit être unique dans une page
je n'avais pas saisi qu'il pouvait y en avoir plusieurs
          Bul [mon Site] [M'écrire]         
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mountainmagazin Messages postés 6 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 29 décembre 2008
5 nov. 2008 à 20:11
Merci bien de ton aide en tout cas, ça m'a aidé, parce que j'avais essayé ce que tu m'as dit, avec une erreur sans m'en rendre compte, et du coup j'avais laissé tombé.

+A+
0
Rejoignez-nous