[AJAX] <select> Client et <select> Projets lié
Bonsoir,
je souhaiterai réaliser un petit outil fonctionnel sur une interface d'administration, et je me suis dit, plutot que d'envoyer le formulaire, fais le en AJAX.
Ce que je souhaite faire : Sur une page pour ajouter un screenshot, je dois d'abord choisir le client auquel est lié ce screenshot, puis je dois choisir le projet auquel est lié ce screenshot. Et lorsque je choisis un client dans mon premier <select> (crée via une boucle qui liste ma bdd), je voudrai que le <select> des projets se remplisse tout seul avec la liste des projets, en n'y écrivant que les projets lié au client choisi avant.
Donc voilà, je suis allé voir quelques tutos, histoire de choper des morceaux de script, et de comprendre un peu en les bidouillant :
Le formulaire d'ajout de screenshot :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <form action="screenshots_add.php" name="ajout" method="post" enctype="multipart/form-data">
<table width="100%" cellspacing="0" cellpadding="10" class="niv2">
<tr>
<td>Client :</td>
<td>
<select name="client_id" onChange="findProjets(this.value)">
<option value="">Choisir le client</option>
<?php
$sql = "SELECT client_id, client_entreprise
FROM CLIENTS
ORDER BY client_id";
$query = mysql_query($sql);
while($result = mysql_fetch_array($query))
{
echo '<option value="'.$result['client_id'].'">'.$result['client_entreprise'].'</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td width="10%">Nom du projet :</td>
<td>
<?php
include 'ajax.php';
?>
</td>
</tr>
<tr>
<td>Screenshot :</td>
<td><input type="file" name="screenshot" size="30" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" value="Envoyer" style="width:100px;" /></td>
</tr>
</table>
</form> |
Le fichier ajax.php, que j'inclue là ou devrait apparaitre le <select> des projets :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <script type="text/javascript">
function writediv(texte)
{
document.getElementById('pseudobox').innerHTML = texte;
}
function findProjets(id_client)
{
if(id_client != '')
{
if(texte = file('http://127.0.0.1/Projects/Web%20Spoken/site/admin/find_projets.php?client_id='+id_client))
writediv('ça marche');
}
}
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>
<?php
echo '<select name="projet_id">';
while($result = mysql_fetch_assoc($query))
{
echo '<option value="'.$result['client_id'].'">'.$result['client_entreprise'].'</option>';
}
echo '</select>';
echo '<div id="pseudobox"></div>';
?> |
Et enfin, le fichier findProjets.php, que je demande de lire via le Javascript, dans la fonction findProjets() :
Code:
1 2 3 4 5 6 7 8 9
| <?php
include 'header.php';
// ON CHERCHE LES PROJETS DE CE CLIENT
$sql = "SELECT projet_id, projet_nom
FROM projets
WHERE projet_client_id = '".$_GET['client_id']."'"
$query = mysql_query($sql);
?> |
Résultat : Une fois que je selectionne un client, le <div> avec écrit 'ça marche' apparait. Mais le <select> des projets ne se rempli pas.
Qu'est ce qui ne va pas dans mes scripts ?
(pour info, j'ai bien des clients et des projets liés à ces clients dans ma table, le problème ne vient pas de là).