false, 'message' => 'Méthode non autorisée.', ], JSON_UNESCAPED_UNICODE); exit; } require_post_csrf(); $client_id = (int) ($_SESSION['reference_id'] ?? 0); $praticien_id = (int) ($_POST['praticien_id'] ?? 0); if ($client_id <= 0) { echo json_encode([ 'ok' => false, 'message' => $translations['erreur_generique'] ?? 'Erreur.', ], JSON_UNESCAPED_UNICODE); exit; } if ($praticien_id <= 0) { echo json_encode([ 'ok' => false, 'message' => $translations['praticien_id_invalide'] ?? 'ID praticien invalide.', ], JSON_UNESCAPED_UNICODE); exit; } try { // Vérifie que le praticien existe $exists = $pdo->prepare("SELECT id FROM praticien WHERE id = ? LIMIT 1"); $exists->execute([$praticien_id]); if (! $exists->fetchColumn()) { echo json_encode([ 'ok' => false, 'message' => $translations['praticien_id_invalide'] ?? 'ID praticien invalide.', ], JSON_UNESCAPED_UNICODE); exit; } // Évite les doublons $check = $pdo->prepare(" SELECT 1 FROM praticien_client WHERE client_id = ? AND praticien_id = ? LIMIT 1 "); $check->execute([$client_id, $praticien_id]); if ($check->fetchColumn()) { echo json_encode([ 'ok' => true, 'already_exists' => true, 'message' => $translations['praticien_deja_ajoute'] ?? 'Déjà ajouté aux favoris.', ], JSON_UNESCAPED_UNICODE); exit; } $stmt = $pdo->prepare(" INSERT INTO praticien_client (client_id, praticien_id) VALUES (?, ?) "); $stmt->execute([$client_id, $praticien_id]); echo json_encode([ 'ok' => true, 'already_exists' => false, 'message' => $translations['praticien_ajoute_favoris'] ?? 'Praticien ajouté aux favoris.', ], JSON_UNESCAPED_UNICODE); exit; } catch (Throwable $e) { error_log('ajouter_favorit.php: ' . $e->getMessage()); echo json_encode([ 'ok' => false, 'message' => $translations['erreur_generique'] ?? 'Erreur serveur.', ], JSON_UNESCAPED_UNICODE); exit; }