Allez tiens je te donnes une partie de la solution, 3 fichiers:
un fichier page_saisie.html:
<html>
<head>
<!-- Script de liste deroulante avec appel par AJAX, (evite le rechargement de la page) -->
<script language="Javascript"type="text/JavaScript">
// Requette AJAX
function makeRequest(url,id_lire,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// lecture valeur saisie
obj=document.getElementById(id_lire);
data="val_saisie="+obj.value;
//envoie de la valeur au script php
http_request.send(data);
}
function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
obj = document.getElementById(id_ecrire);
//on ecrit la liste dans le div correspondant
obj.innerHTML = affich_list;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
</script>
</head>
<body>
<form name="test1" method="post" action="la_suite.php" >
<div id="id_recherche">Rechercher:<br>
<input type="texte" name="saisie_recherche" id="saisie_recherche" value="" />
<input type="button" name="rechercher" value="Rechercher" onClick="makeRequest('rep_PhpAjax.php','saisie_recherche','id_liste')"/>
<!-- on appelle la fonction Ajax en lui passant les arguments: script a appeler, où lire, où ecrire -->
</div>
<br><br>
<div id="id_liste">
<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
</div>
</form>
</body>
</html>
un petit fichier
config.php:
<?php
$host=
$Login=
etc...
?>
et un fichier
rep_PhpAjax.php:
<?php
// script PHP interrogation Base de donnees pour reponse a la requette AJAX
include ("config.php");//donnees de connexion host, login, password, nom de la table ($Table), nom du champ concerné ($champ)
//recup de la valeur passée lors de l'appel de ce script par Ajax:
$valeur_saisie=$_POST['val_saisie'];
// Connexion a la base de donnees
$AccesBase = mysql_connect($host,$Login,$Pass);
mysql_select_db($DB,$AccesBase);
//requette
$QuestionBase = "SELECT * FROM $Table WHERE ".$champ." = '".$valeur_saisie."' " ;
//si tu veux les noms qui commencent par la valeur saisie tu fais la requette:
//$QuestionBase = "SELECT * FROM $Table WHERE ".$champ." LIKE '".$valeur_saisie."%' " ;
$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());
// construction de la liste deroulante
$aff=="";
$aff=$aff."Resultat de la recherche:<br>
<select name='niv1' id='cont_liste' >
<option>-- Choisissez --</option>";
while ($row=mysql_fetch_assoc($result_recherche)){
$aff.="<option value=\"$row[ton champ]\">$row[ton champ]</option>"; //a adapter
}
$aff=$aff."</select><br><br>";
// envoi reponse Php a Ajax
echo $aff;
?>
Attention les erreurs éventuelles de ce dernier script ne s'affichent pas ! à cause de Ajax
pour le debugger, il te faut mettre une valeur provisoire pour $valeur_saisie à la place de $_POST....
et lancer le script directement dans ton navigateur