2010-09-09 7 views
1

Si j'utilise le code PHP comme:PHP sélectionner l'heure actuelle dans la cellule

for ($i = 1; $i <= 24; $i++) 
{ 
$timetable=strftime("%X", mktime(0, 0, $hour[$i], $month, $day, $year)); 
} 

pour obtenir le calendrier pour le jour en cours qui ressemble à:

time | 
---------- 
05:09:23 | 
---------- 
07:23:18 | 
---------- 
11:55:41 | 
---------- 
14:01:32 | 
---------- 

Je veux mettre en évidence la cellule où le temps imprimé comprennent l'heure actuelle (si l'heure actuelle est 9:23:00, la cellule en surbrillance sera celle avec l'heure imprimée 07:23:18 et si l'heure actuelle est 13:59:06, la cellule en surbrillance sera 11:55:41)

Comment puis-je faire cela?

Répondre

2

Utilisez cette option pour le faire:

$thisID = 0; 
for ($i = 1; $i <= 24; $i++) 
{ 
    $tt = mktime(0, 0, $hour[$i], $month, $day, $year); 
    $timetable = strftime("%X", $tt); 

    if($thisID == 0 && (time() - $tt) >= 0) 
     $thisID = $i; 
} 

maintenant $thisID vous donne la ligne nécessaire. Utilisez-le pour mettre la ligne en surbrillance.

+0

merci mais j'obtiens cette erreur "Erreur fatale: le nom de la fonction doit être une chaîne" dans la ligne où "if ($ time() - $ tt> = 0)". Quel peut être le problème? – Sergio

+0

comme résultat, je reçois toujours 1 :( – Sergio

+0

J'ai mis à jour le code quelques minutes plus tard, je l'ai posté. Avez-vous essayé le nouveau code. – shamittomar

0

Il existe une fonction date_diff() que vous pouvez utiliser pour déterminer laquelle est la plus proche. link date_diff Ou, si cette information provient de la base de données, vous pouvez utiliser les fonctions de gestion de la date et de l'heure de votre base de données pour renvoyer le décalage horaire entre Now() et la date retirée en tant que colonne.

0

La meilleure façon de faire à mon avis est de stocker les heures dans les timestamp unix ou secondes à partir de minuit. De cette façon, vous avez un moyen solide de trier vos données.

Pour obtenir l'enregistrement le plus proche, vous devrez effectuer 2 requêtes.

Select time from times where time > $value order by time desc limit 1 
Select time from times where time < $value order by time asc limit 1 

Maintenant, comparez ces 2 résultats à $ value et retournez le plus proche.

Bien que cette méthode nécessite 2 requêtes et utilise une instruction supérieure/inférieure à, je pense que ist est plus rapide que la récupération de toutes les données.

Espérons que cela aide!

Questions connexes