Bonjour,
Ne parvenant pas à me débrouiller avec les requêtes ajax, j’ai essayé de suivre des tutos utilisant la librairie prototype.
Ce que je veux, c’est faire 2 listes liées dynamiquement.
Donc un premier select, qui amène à faire une requete ajax, qui amène sur un fichier php utilisant la valeur du 1er select, et renvoie une valeur à mettre dans le 2nd select.
Voilà ce que ça donne:
gambetta.cahors.free.fr…
C’est à dire pas grand chose!
J’ai l’impression qu’il y a 2 soucis:
- le premier: la valeur choisie dans mon premier select n’est pas transmise dans le fichier .php
- le second: le résultat n’est pas transmis dans le 2nd select.
J’ai fait un paquet des qq fichiers de mon prog:
gambetta.cahors.free.fr…
En voici qq extraits:
Le form dans le fichier principal index.php
<form method = "post" name = "socle" action="socle.php">
<p align = "center">
<select name="tb1" id="tb1" size=1 onchange='requete_ajax();'>
<?php
for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,$table1_champ1);
echo '<option>'.$i.'</option>';
}
?>
</select>
<select name="eleve" id="emplacement" size=1> </select>
</p>
<p> </p>
<p align="center"><input TYPE="submit" VALUE="Envoyer" ></p>
</form>
Ma fonction requete_ajax:
function requete_ajax() {
var url = 'remplir2ndselect.php';
var parametres = 'tb1';//Les paramètres que lon va fournir (par GET ou POST voir plus bas)
var myAjax = new Ajax.Updater( //Création dune requête Ajax toute faite !)
'emplacement', //Le nom du div qui va recevoir les infos de la page php lancée
url, //url de la page lancée
{
method: 'get', //Méthode pour les paramètres (GET ou POST)
parameters: parametres //Paramètres rentrés plus haut
}
);
} //Cest tout !
Et le fichier php pour remplir le 2nd select:
<?php
header('Content-type:text/html;charset=ISO-8859-1');
include ('connexion.php');
$table1='classe';
$table2='socle';
$table1_champ1='classe';
$table2_champ1='classe';
$table2_champ2='eleve';
$choix1=$_GET['tb1'];
$rch="WHERE $table2_champ1 ='" .$choix1. "'";
$res=mysql_query("SELECT * FROM $table2 ".$rch);
$max=@mysql_num_rows($res);
$t="";
for ($nb=0;$nb<$max;$nb++)
{ $i=mysql_result($res,$nb,"$table2_champ2");
$t.="\t".$i;
}
echo $t;
echo 'bonjour';
?>
Help
Edité le 23/12/2009 à 20:58