Aller au contenu

Ajax et suggestions de saisie


le_fleau

Sujets conseillés

Bonjour,

Je travaille sur la création d'un formulaire d'envois de messages privés sur mon site. Je suis en train d'essayer de créer une sorte de saisie semi automatique pour le pseudo afin qu'à partir des premières lettres tapées, des suggestions de pseudos soient faites à partir de la base de données. Je m'appuie pour cela sur le tuto : suivant.

J'ai deux problèmes. Déjà il arrive que le script fasse planter Firefox, et il ne fonctionne pas sous Internet Explorer (en tous cas, la partie où la base de données et interrogée ne renvoit pas de résultat). Je pense que l'erreur vient de l'imbrication des fonctions writediv et file dans le fichier index1.html.

Ensuite, je voudrais qu'en cliquant sur un élément de la liste contenue dans la page ajax.php, la valeur sélectionnée soit récupérée dans le champs <input name="destinataire" id="destinataire" />. C'est dans ce but que j'ai programmé la fonction javascript xxx() dans le fichier ajax.html, mais elle ne fonctionne pas.

Voici donc le code de la page principale (qui contient le formulaire) que l'on va appeller index1.php :

<html><head></head>
<body>
<script type="text/javascript">
function writediv(texte)
{
document.getElementById('pseudobox').innerHTML = texte;
}

function verifPseudo(pseudo)
{
if(pseudo != '')
{
if(pseudo.length<3)
writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
else if(pseudo.length>30)
writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
else
writediv(file('ajax.php?destinataire='+escape(pseudo)))
}

}

function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
</script>

<form method="post" action="page2.php">
<input type="text" id="destinataire" name="destinataire" /><div id="pseudobox"></div>
</form>
</html>

Voici ensuite le code de la page ajax.php qui est appellée dans index1.php

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<script language="JavaScript" type="text/javascript">
function xxx(newtext) {
opener.document.getElementById('destinataire').value = newtext;
}

</script>
</head>
<body>
<?php
include("config.php");
_AT_mysql_connect($hostname,$user,$pass) or die("Impossible de se connecter");
_AT_mysql_select_db("$database") or die("Impossible de se connecter");
$sql = "SELECT pseudo FROM table_membres WHERE pseudo LIKE '%".$_GET['destinataire']."%'";
$result = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$i = 0;
echo '<ul>';
while ($row = mysql_fetch_array($result))
{
$i++;
echo '<li><a href="#" onclick="xxx('.$row['pseudo'].')">'.$row['pseudo'].'</a></li>';
}
if($i==0) echo '<li>Il n\'y a pas aucun membre pseudo</li>';
echo '</ul>';
mysql_close();
?>
</body>
</html>

D'avance merci pour votre aide ;)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...