Oups, mille pardon je me suis trompé de post... laisse c'est bon.
ERE
Version imprimable
Oups, mille pardon je me suis trompé de post... laisse c'est bon.
ERE
Pas de problème !
Je vais pas t'en vouloir en plus avec le mal que tu te donnes pour moi ! :P
Cela marche parfaitement chez moi :?
Ci-joint le zip du test mené. Tu peux l'exécuter sur ton server.
ERE
Punaise, ça marche en effet, quel tabanas je suis !!
Par contre, quand j'affiche en alerte la variable "$_POST['nom_contact']", ça me donne "document.getElementById("nom").value" au lieu de me donner la valeur, c'est pour ça que ça ne fonctionnait pas.
Comment faire pour transmettre la valeur ?
J'avais remplacé les doubles quotes qui entourent nom_contact par des simples quotes.
j'ai remis les doubles quotes, et ça me retourne bien une valeur, mais pas exactement ce que je souhaite.
Le problème vient de l'autocomplétion.
Si par exemple, pour un client dont le nom est "TERKI", si je tape juste "TE" et que je sélectionne son nom dans la liste, j'obtiens comme valeur du nom_contact dans l'alerte : "TE"
Et du coup il ne me trouve pas le prénom correspondant.
Par contre, si je tape le nom en entier, il me retourne bien son prénom, mais précédé du nom !! Comme ceci : "TERKIYannis"
[edit] Ca, ça vient juste du fait que j'avais laissé un echo du nom... Ne pas en tenir compte[/edit]
8O
Ce n'est pas possible. Tout simplement.
Renvoie le code complet que tu utilises maintenant, il doit y avoir une grosse bêtise.
ERE
Ca doit être sur le onchange qu'il faut jouer, ne pas changer tant qu'il n'a pas récupéré la variable du nom complète, mais comment ?
Page test_autocomplete2.php :
Page ajax_autocomplete2.php :Code:
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 <script type="text/javascript" src="../../scripts/prototype.js"></script> <script type="text/javascript" src="../../scripts/scriptaculous.js"></script> </head> <body> <form me=""> <fieldset> <legend>Champs liés</legend> <label>Nom contact</label> <input type="text" name="nom" id="nom" onchange='goPrenom()' /> <div id="auto_noms"></div> <script type="text/javascript"> new Ajax.Autocompleter ( 'nom', 'auto_noms', 'autocompleter_noms.php', {method: 'post', paramName: 'nom'} ); </script> <label>Prénom contact</label> <input type="text" name="prenom" id="prenom" /> <div id='auto_prenom'> <script type="text/javascript"> function goPrenom(){ new Ajax.Request('ajax_autocomplete2.php', { method: 'post', parameters: "nom_contact=" + document.getElementById("nom").value, onSuccess: function(transport) { alert(transport.responseText); document.getElementById("prenom").value=transport.responseText; } // onSuccess } // options ); // Ajax.Request } // function goPrenom </script> </div> </fieldset> </form> </body> </html>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php $nom_recupere = $_POST["nom_contact"]; if(isset($nom_recupere)) { include ('../fonction_connexion.php'); $res = mysql_query("SELECT * FROM t_gestion_contacts WHERE nom_contact = '$nom_recupere'"); while($row = mysql_fetch_assoc($res)) { //echo "<input type='text' value='".$row["prenom_contact"]."' />"; echo $row["prenom_contact"]; break; //peut pas avoir plusieurs prénoms sinon 1 N aberrant } } ?>
Non, car dans ce cas tu aurais une valeur vide pour ton "nom".
Mais c'est vrai que tu devras penser à ça aussi ;)
Chaque chose en son temps...
ERE
J'ai remplacé le "onchange" par un "onblur" et ça a l'air de fonctionner ! :P
Bon maintenant il me reste à faire la même chose avec l'adresse, le téléphone et l'email du client, mais ça devrait rouler !
En tout cas merci pour tout :ccool:
Le onblur est généré quand la zone perd le focus.
Le onchange est généré quand la zone perd le focus ET que son contenu a été modifié. Peut-être que quand tu testais les données avaient été déjà été remises par ton navigateur à partir du cache ?
Bon dev,
ERE
Merci encore.