Bonjour,
J'ai actuellement un formulaire de recherche qui grâce à Ajax.Autocompleter propose une autocompletion (liste comportant des titres de livre et des contributeurs).
Le formulaire :
Le fichier 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 <div id="recherche"><!--// DEBUT #recherche1 <form action="traitement.php" method="get"id =""> <input type="hidden" name="id" value=""/> <input type="hidden" name="type_search" value=""/> <label for="nom">RECHERCHER</label> <input type="text" class="search-input" id="departement" name="clesearch" value="<?php if(isset($_GET['clesearch'])) echo $_GET['clesearch']; ?>"/> <div id="departement_propositions" class="autocomplete"></div> <input class="btn_search" type="submit" name="Submit" value=""> </form> <script type="text/javascript"> init(); </script> </div><!--// end #recherche1 //
Le script serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Event.observe(document, "dom:loaded", function() { if($("recherche")) { new Ajax.Autocompleter("departement", // id du champ de formulaire "departement_propositions", // id de l'élément utilisé pour les propositions "scripts/autoc/autocompleter-exemple-1-serveur.php", // URL du script côté serveur { paramName: 'clesearch', // Nom du paramètre reçu par le script serveur method:'get', minChars: 1 // Nombre de caractères minimum avant que des appels serveur ne soient effectués }); } });
Le champ "res" correspond au titre d'un livre ou au contributeur d'un livre (item qui s'affiche dans la liste des propositions). Le champ " id "correspond à l'id du titre ou du contributeur. Le champ "type_search" correspond au type de recherche déclenchée une fois que l'utilisateur à cliqué sur l'une des propositions et soumis le formulaire.
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 <?php if(isset($_GET['clesearch'])) { // requête $sql = "SELECT titre AS res, id_titre AS id, type_s AS type_search FROM livre WHERE titre LIKE '%".mysql_real_escape_string($_GET['clesearch'])."%' union ALL SELECT concat(nom_contributeur,', ',prenom_contributeur) AS res,id_contributeur AS id, type_s AS type_search FROM contributeurs WHERE nom_contributeur LIKE '%".mysql_real_escape_string($_GET['clesearch'])."%'OR prenom_contributeur LIKE '%".mysql_real_escape_string($_GET['clesearch'])."%'"; $req = mysql_query($sql); $i = 0; echo '<ul>'; while($autoCompletion = mysql_fetch_assoc($req)){ echo ' <li >'.$autoCompletion['res'].' <span class="informal"style="display:none>'.$autoCompletion['id'].'</span> <span class="informal"style="display:none>'.$autoCompletion['type_search'].'</span>' </li>'; if (++$i >= 10){ die('<li>...</li></ul>');} } echo '</ul>'; die(); } ?>
Ces 2 champs me sont utiles en php pour construire la requête déclenchée une fois le formulaire soumis. Je souhaiterais récupérer la valeur de ces 2 champs et la rapatrier dans les 2 "input hidden" de mon formulaire :
<input type="hidden" name="id" value=""/>
<input type="hidden" name="type_search" value=""/>
En regardant la doc de scriptaculous, j'ai vu que l'option parameters pouvait correspondre à ma problématique : "A text string containing extra query parameters to be passed to the server-side resource".
Ou peut-être faut-il passer par l'option afterUpdateElement faisant appel à une fonction getSelectionId. Mais je suis vraiment débutant : je ne sais pas du tout comment m'y prendre pour arriver au résultat souhaité...Pouvez-vous m'aider ? Merci.
Partager