le_fleau Posté 11 Mai 2007 Posté 11 Mai 2007 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><?phpinclude("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
le_fleau Posté 12 Mai 2007 Auteur Posté 12 Mai 2007 (modifié) J'ai mis en ligne une page d'exemple : ici. La page ajax.php est aussi en ligne : ici. D'avance merci pour votre aide. Modifié 12 Mai 2007 par le_fleau
le_fleau Posté 12 Mai 2007 Auteur Posté 12 Mai 2007 Il fallait mettre la fonction xxx() dans le fichier index1.php et enlever le opener.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant