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,