Ajax.Autocompleter : récupérer valeurs et les rapatrier vers

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajax.Autocompleter : récupérer valeurs et les rapatrier vers

Re: Ajax.Autocompleter : récupérer valeurs et les rapatrier vers

par Nours312 » 04 juil. 2011, 23:13

Hum... j'espère me tromper ....
Gagner ! :D

donc pour ce qui est de ton soucy l'objet Autoccompleter est une extention de Ajax.Base() donc téhoriquement en y passant

Code : Tout sélectionner

parameters : {var1 : $F('idChamps1'), var2 : $F('idChamps2') }
ça devrait faire l'affaire.

Cela dit, il me semble me souvenir que la déclaration se faisait bien en amont !.. (donc si tu modifie les valeurs de tes inputs, ça ne marcheras pas comme ça ;)

Re: Ajax.Autocompleter : récupérer valeurs et les rapatrier vers

par AB » 04 juil. 2011, 16:04

Hum... j'espère me tromper mais tu as peu de chances de réponses ici. Depuis le temps que je lis ce forum, la dernière fois que j'ai vu un topic concernant l'utilisation de scriptaculous remonte à très longtemps.
Côté javascript, le framework fréquemment utilisé par une grande majorité des membres de ce forum est plutôt jquery. L'intérêt de ce framework est qu'il dispose d'une grande communauté d'utilisateurs. Je m'étonne d'ailleurs qu'en tant que débutant tu ne l'ai pas choisi car c'est de loin celui dont les forum et la doc sont les plus fournis.

Je disais ça juste en passant, je ne critique en aucun cas la qualité technique des autres framework, mais si tu es débutant et que tu n'as pas encore trop investi de temps dans scriptaculous, il serait peut-être encore temps de changer, ne serait-ce que pour avoir plus de réponses en cas de besoin... :wink:

Ajax.Autocompleter : récupérer valeurs et les rapatrier vers

par almoha » 03 juil. 2011, 18:41

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 :
<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 fichier JS :

Code : Tout sélectionner

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 script serveur :
<?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();
	}
?>

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.
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.