Bonjour,
Plusieurs questions :
- Pourquoi avoir séparé date et heure ? Un timestamp aurait été tout aussi approprié.
- Quand tu dis "toutes les connexion dépassant cette heure de fin doivent être désactivé sauf celle en cours", comment sais-tu que celle en cours ne dépasse pas le temps limite ? La session peut avoir été initialisée longtemps auparavant et être encore active ou inactive. Comment le savoir ? Tu devrais avoir un champ du type : activity avec un timestamp.
Sinon pour ta requête : tu peux le faire directement via les fonctions de MySql, pas besoin de cuisine en local :
$sql = "UPDATE panel SET active='off_line' WHERE nick_handle='$nick_handle' AND client='$client' AND TIME_TO_SEC(`heure`) < (TIME_TO_SEC(NOW()) - 20*60)";
Avec ton approche (séparer date et heure), ça va être mariole si les connexions démarrent la veille genre 23h55 et tu contrôles à 00h10 par exemple... Pour ce cas de figure, il est plus simple de reconstituer un timestamp (qui aurait dû être présent dès le début, mais bon):
$sql = "UPDATE panel SET active='off_line' WHERE nick_handle='$nick_handle' AND client='$client' AND TIMESTAMPDIFF(MINUTE, DATE_ADD(`date`, INTERVAL `heure` HOUR_SECOND), NOW()) > 20";
Sauf boulette de ma part
Partager