/

Filtres de plage de dates

Onglets de filtre de plage de dates cumulative construits avec where_raw(), ainsi que les préréglages rapides de plage de dates de la barre de recherche pour les colonnes date/datetime.

Onglets de plage cumulative avec where_raw()

Aucun des habituels regroupements de dates relatives - « cette semaine », « ce mois-ci », « les 6 derniers mois » - n'a la forme « champ OP valeur » que where() peut exprimer ; CURDATE(), INTERVAL et YEARWEEK() sont des fonctions MySQL, pas des littéraux liables. where_raw($condition, $tab = null) est l'outil adapté ici - chaque onglet est sa propre condition SQL brute signée indépendamment.

$xcrud->where_raw('DATE(paymentDate) = CURDATE()', 'Today');
$xcrud->where_raw('DATE(paymentDate) = CURDATE() - INTERVAL 1 DAY', 'Yesterday');
$xcrud->where_raw('YEARWEEK(paymentDate, 1) = YEARWEEK(CURDATE(), 1)', 'This Week');
$xcrud->where_raw(
    'YEAR(paymentDate) = YEAR(CURDATE()) AND MONTH(paymentDate) = MONTH(CURDATE())',
    'This Month'
);
$xcrud->where_raw('paymentDate >= CURDATE() - INTERVAL 6 MONTH', 'Last 6 Months');

Ces plages sont délibérément imbriquées/cumulatives, et non une partition stricte et mutuellement exclusive - « This Week » est un sous-ensemble de « This Month », lui-même un sous-ensemble de « Last 6 Months », de la même façon qu'un filtre « 7 derniers jours / 30 derniers jours / 6 derniers mois » fonctionne habituellement ailleurs. Une partition stricte semble plus propre mais présente un cas limite réel : en début de mois calendaire, « ce mois-ci mais pas dans les deux dernières semaines calendaires » peut être une plage carrément vide. Des plages imbriquées évitent cela et correspondent à ce qu'un visiteur attend réellement en cliquant sur « This Month » - tout ce qui vient de ce mois-ci, pas tout ce qui vient de ce mois-ci sauf ce qui est plus récent.

Paramètres

ParamètreTypePar défautDescription
$conditionstring-Condition SQL brute, insérée telle quelle (entre parenthèses). SQL de confiance, écrit par le développeur uniquement - ne jamais le construire à partir d'une entrée de requête.
$tabstring|nullnullLibellé de l'onglet. À omettre pour un filtre de base permanent au lieu d'un onglet permutable.

Les préréglages rapides de plage de dates de la barre de recherche

Indépendamment des onglets de filtre, la barre de recherche simple dispose de sa propre commodité côté JS pour les colonnes date/datetime. Ouvrez le panneau « Colonnes (n) » à côté de la simple boîte de recherche - le même panneau utilisé pour choisir les colonnes couvertes par la recherche simple - et chaque case à cocher d'une colonne date/datetime possède un mini panneau de plage rapide en dessous : une liste déroulante de préréglages (N'importe quand / Aujourd'hui / Hier / Cette semaine / Ce mois-ci / Cette année / Plage personnalisée) plus une paire de dates de/à modifiable, préremplie selon le préréglage choisi mais toujours ajustable ensuite pour un réglage fin.

C'est une pure commodité côté client pour remplir rapidement une plage de dates - aucun appel PHP n'est nécessaire pour l'activer, chaque colonne date/datetime l'obtient automatiquement. Elle est suivie séparément des propres lignes de condition du panneau Recherche avancée, mais les deux sont combinées dans la même requête de filtre au rechargement de la grille, de sorte qu'une plage de dates rapide et une condition avancée peuvent être actives simultanément.