Souci pour imputer les valeurs de résultats de recherche dans deux champs input [Résolu]

Signaler
Messages postés
6
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
29 décembre 2008
-
Messages postés
6
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
29 décembre 2008
-
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.

5 réponses

Messages postés
6
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
29 décembre 2008

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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]         
Messages postés
6
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
29 décembre 2008

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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
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]         
Messages postés
6
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
29 décembre 2008

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+