"} ou {"date": null}. Mêmes droits que la page du bateau : administrateur, ou accès actif à ce bateau. //************************************************************************************************************ // Réponse JSON : aucun avertissement PHP ne doit s'y écrire (il la rendrait illisible) - ils vont dans le journal. ini_set('display_errors', '0'); require_once("../config/config.php"); Init_session(basename(__FILE__)); header('Content-Type: application/json; charset=UTF-8'); header('Cache-Control: no-store'); if (empty($_SESSION['acces_valide'])) { http_response_code(401); echo '{}'; exit(); } $id_bateau = isset($_GET['id']) ? (int)$_GET['id'] : 0; $niveau_admin = NIVEAU_ACCES_MINI_ADMINISTRATEUR; $est_administrateur = ((int)$_SESSION['shipmember']['Niveau_acces'] >= $niveau_admin) ? 1 : 0; Ouverture_bdd(); $reponse = Requete_preparee_bdd("SELECT B.Date_derniere_maj FROM TB_Bateaux B WHERE B.Cle_primaire=? AND B.Validite=1 AND (? = 1 OR EXISTS (SELECT 1 FROM TB_Lien_bateau_shipmember L WHERE L.ID_Bateau=B.Cle_primaire AND L.ID_Shipmember=? AND L.Statut='actif' AND L.Fin_validite >= NOW()))", array(array('i', $id_bateau), array('i', $est_administrateur), array('i', $_SESSION['shipmember']['Cle_primaire'])), __FILE__, __LINE__); $donnees = Recherche_ligne_bdd($reponse, MYSQLI_ASSOC); Liberation_jeu_de_resultat_bdd($reponse); Fermeture_bdd(); if (!$donnees) { http_response_code(403); echo '{}'; exit(); } echo json_encode(array('date' => $donnees['Date_derniere_maj']), JSON_INVALID_UTF8_SUBSTITUTE);