Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/02/2011, 23h27   #1
Invité de passage
 
Inscription : octobre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 9
Points : 0
Points : 0
Par défaut Récupérer l'id d'un texte autocomplété (avec scriptaculous)

Hello,

Mon problème a déjà du être traité mais je suis un peu nouveau sur le forum et je n'arrive pas à faire une recherche uniquement sur un forum (dans la recherche avancée, il y a à peu près 300 forums et je ne trouve pas le forum Ajax )

Voilà :
J'ai une zone de texte sur laquelle j'ai monté une autocomplétion avec scriptaculous (j'ai entendu parlé de JQuery mais je ne vois pas bien les avantages et les inconvénients de ces 2 techniques). Tout marche bien si ce n'est que quand on sélectionne un item dans la liste des propositions de l'autocomlpétion, c'est le libellé de l'item qu'on récupère et non son ID. Or c'est bien l'id que je souhaiterai récupérer car j'ai un risque de doublons sur le libellé...

J'ai trouvé un tuto (qui m'a permi de faire mon autocomplétion "simple") mais je ne comprends pas la partie "récupération de l'id"). C'est la fonction "ac_return" (voir partie 7 du tuto) qui est censé effectuer cette récupération mais je ne comprends rien à ce que fait cette fonction :
- pourquoi une expression régulière? (n'est-il pas plus simple de récupérer la sous-chaîne entre le début du div et la chaîne "idcache")
- pourquoi lors de l'appel de la fonction ac_return (voir partie 4 du tuto) il n'y a pas de valeur passée en paramètre alors que la fonction est censée en attendre 2 ?

Pouvez-vous m'éclairer de vos lumières ?

Si vous n'avez pas envie de vous prendre la tête avec ce tuto, je suis preneur d'un autre tuto bien évidemment
John-Deluxe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 11h22   #2
Invité de passage
 
Inscription : octobre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 9
Points : 0
Points : 0
En fait on peut peut-être se débrouiller sans le tuto... Voici le formulaire :
Code html :
1
2
3
4
5
<form action='traitement.php' method="post">
<input type="text" size="30" name="saisieRue" id="saisieRue" />
<div id="saisieRue_update"></div>
<input type='submit' name='valid' value='Ok'/>
</form>
L'appel de la fonction autocompleter :
Code :
1
2
3
4
5
6
7
8
9
<script type='text/javascript'>
new Ajax.Autocompleter (
'saisieRue', 
'saisieRue_update',
'autoCompRue.php',
{method: 'post', 
paramName: 'saisieRue', 
parameters: 'ville=2'});
</script>
et le code php qui remplit le div avec les proposition de l'autocomplétion :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$req = "SELECT codeRV, nomRV 
	FROM secto_rueville 
	WHERE villeRV = '".$_POST['ville']."'
	AND nomRV LIKE '%".$_POST['saisieRue']."%'
	ORDER BY nomRV";
$res=mysql_query($req) or die("query");
if ($_POST['saisieRue'] != "") {
  echo '<ul>';
  for ($i=0; $i<mysql_num_rows($res); $i++){
    echo '<li>
      <a href="#" onclick="return false">
        <span class="informal" style="display:none">'.mysql_result($res,$i,0).' - </span>'
        .htmlentities(mysql_result($res,$i,1)).'
      </a>
    </li>';
    if ($i >= 10) die('<li>...</li></ul>');
  }
  echo '</ul>';
}
Le span me permet de faire figurer l'id au côté de la porposition qui lui correspond mais sans qu'il apparaisse dans la liste des proposition. Maintenant j'aimerais bien le récupérer pour le passer lors de la validation du formulaire mais je ne sais pas comment faire
John-Deluxe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 22h47   #3
Invité de passage
 
Inscription : octobre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 9
Points : 0
Points : 0
Bon bah j'ai résolu moi-même mon pb. Il suffit de mettre une fonction à exécuter en retour :
Code :
1
2
3
4
5
6
7
new Ajax.Autocompleter ('saisieRue', 
'saisieRue_update',
'autoCompRue.php',
{method: 'post', 
paramName: 'saisieRue', 
parameters: 'ville=2',
afterUpdateElement: getSelectionId});
, un champ caché dans le formulaire :
Code html :
<input type="hidden" name="rue_id" value=""/>
et de remplir ce champ caché avec la fonction en retour :
Code :
1
2
3
function getSelectionId(text, li) {
document.forms[0].rue_id.value = li.id;
}
John-Deluxe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h28.


 
 
 
 
Partenaires

Hébergement Web