Champs multiples avec l'autocomplete de Scriptaculous ?

Eléphanteau du PHP | 31 Messages

22 mai 2009, 10:05

Bonjour,

Je cherche un moyen d'utiliser l'autocompleter de Scriptaculous sur plusieurs champs d'un même formulaire.

Le script se présentant comme ça :
<script type="text/javascript">
new Ajax.Autocompleter (
  'champ_base',
  'id_champ',
  'nom_du_fichier.php',
  {method: 'post', paramName: 'champ_base'}
);
</script>
Ma question est la suivante : est-on obligé de créer un nouveau fichier pour chaque champ de saisie ? (ce qui est un peu fastidieux) ou bien y a-t-il un moyen d'utiliser un seul même 'nom_du_fichier.php' ?

Merci par avance.

Mammouth du PHP | 1339 Messages

24 mai 2009, 23:56

'nom_du_fichier.php?champ=ton_champ'

Ca devrait marcfher
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 31 Messages

25 mai 2009, 08:41

[Edit du 25/05]

J'ai finalement réussi à bidouiller une solution qui marche. Je la donne ici à l'intention de ceux qui auraient rencontré le même problème.

Voici les fonctions javascript :
<script type="text/javascript">
function autocompleteMe(table,champ)
{	
	new Ajax.Autocompleter (
	   champ,
	  'choix_'+champ,
	  'choix_form.php',
	  {method: 'post', parameters: 'table='+table+'&champ='+champ, paramName: champ}
	);
}
function autocompleteAll(event)
{
	autocompleteMe('livres','titre');
	autocompleteMe('livres','auteur');

}
$(document).observe('dom:loaded',autocompleteAll);

</script>
et le fichier unique choix_form.php appelé par la fonction javascript :
<?php

$connexion = mysql_connect("localhost","root","");
mysql_select_db('piratage',$connexion);

$table = $_POST['table'];
$champ = $_POST['champ'];
$content = $_POST[$champ];

$query = mysql_query("SELECT $champ FROM $table") or die(mysql_error());
$p=array();
while ($result = mysql_fetch_assoc($query)) $p[] = $result[$champ];

$i=0;
if ($content != "") {
  echo '<ul>';
  foreach($p as $item) {
    if (substr(strtolower($item),0,strlen($content)) == strtolower(stripslashes($content))) {
      echo '<li><a href="#" onclick="return false">'.htmlentities($item).'</a></li>';
      if (++$i >= 10) die('<li>...</li></ul>');
    }
  }
  echo '</ul>';
}
		
?>