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 :
Le fichier ajax.php, que j'inclue là ou devrait apparaitre le <select> des projets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Et enfin, le fichier findProjets.php, que je demande de lire via le Javascript, dans la fonction findProjets() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>'; ?>
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); ?>
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à).
Partager