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 :
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,
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 :
// 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 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 : 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,