Bonjour,
J'ai un souci avec mon code et je n'arrive pas à comprendre la logique. Peut-être c'est le choix qu'il ne fallait pas faire...
En effet, j'ai un input (champ) datepicker et un liste déroulante dans mon formulaire. J'ai aussi 2 tables dans ma BD : materiels et demande_materiels. Les 2 tables sont liées par une clé étrangère : materiel_id dans la table demande_materiels. J'aimerais quand que je choisie une date dans le champ datepicker, de récupérer dans ma liste déroulante les matériels disponibles à cette date. C-à-d que les matériels disponibles sont ceux qui n'existe pas dans la table demande_materiels. Je compare la date choisie dans le champ datepicker avec l'intervalle de temps : date_debut_demande et date_fin_demande de la table demande_materiels. Si la date choisie existe dans cet intervalle de temps, elle n'est pas disponible. Ci-dessous un exemple de code :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // formulaire html <form> <input type="text" name="datePick" class="datepicker" id="datePick"> <select name="materiel[]" id="materiel"> <option value="">- - - Choisissez votre matériel - - -</option> </select> </form>
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 // code js $(document).ready(function() { var = $datePick = $('#datePick'); var = $materiel = $('#materiel'); $.ajax({ url: 'action.php', data: 'done', dataType: 'json', success: function(json) { $datePick.each(json, function() { $(this).val(); }); } }); $datePick.on('change', function() { var val = $(this).val(); if(val != '') { $materiel.empty(); $.ajax({ url: 'action.php', data: 'date_d='+ val, dataType: 'json', success: function(json) { $.each(json, function(index, value) { $materiel.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); } else { $materiel .empty(); $materiel .append('<option value="">- - - Sélectionnez votre matériel - - -</option>'); } }); });
Code php : 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 // code php : action.php if(isset($_GET['done']) || isset($_GET['date_d'])) { // connexion db require_once('db.php'); $json = array(); if (isset($_GET['date_d'])) { $sql = ' SELECT * FROM materiels m LEFT JOIN demande_materiels dm ON dm.materiel_id = m.materiel_id WHERE dm.demande_materiel_id = '.$_GET['date_d'].' '; $req = $db->prepare($sql); $req->execute() or die(print_r($req->errorInfo())); // Création de la liste foreach ($req->fetchAll() as $data){ $json[$data["materiel_id"]][] = utf8_encode($data["materiel_nom"]); } } // envoi du résultat au success echo json_encode($json); }
Voilà en gros ce que j'ai fait et ça ne fonctionne pas. J'aimerais de l'aide si quelqu'un a déjà rencontré ce problème. Merci par avance !
Cdlt,
Partager