2012-06-19 31 views
0

我試圖做一個代碼,將顯示兩個不同的圖像取決於時間是什麼時間以及它是哪一天。根據時間顯示不同的圖像

我希望它在7點25分〜12點40分和13點30分〜14點10分之間的星期一至星期五之間顯示「開放」圖像。在週末和其他時間,它應該顯示圖像「關閉」。

這是我一直在努力工作的代碼。

<?php 
date_default_timezone_set('Europe/Copenhagen'); 

$h = date('Gi'); //G (timer) = 0 til 23 og i (minutter) = 00 til 59 

$d = date('N'); //1 (for mandag) til 7 (for søndag) 


// MANDAG 
if ($d = '1' && $h >= 745 && $h < 1240) $img = 'images/open.png'; 
if ($d = '1' && $h >= 1330 && $h < 1410) $img = 'images/open_red.png'; 

// TIRSDAG 
if ($d = '2' && $h >= 745 && $h < 1240) $img = 'images/open.png'; 
if ($d = '2' && $h >= 1330 && $h < 1410) $img = 'images/open_red.png'; 

// ONSDAG 
if ($d = '3' && $h >= 745 && $h < 1240) $img = 'images/open.png'; 
if ($d = '3' && $h >= 1330 && $h < 1410) $img = 'images/open_red.png'; 

// TORSDAG 
if ($d = 4 && $h >= 745 && $h < 1240) $img = 'images/open.png'; 
if ($d = 4 && $h >= 1330 && $h < 1410) $img = 'images/open_red.png'; 

// FREDAG 
if ($d = 5 && $h >= 745 && $h < 1240) $img = 'images/open.png'; 

// LØRDAG 


// SØNDAG 


else $img = 'images/closed.png'; 
?> 

<img src="<?php echo $img; ?>"> 

出於某種原因,它忽略了天變,只是打印出的最後一項,即是「星期五」(星期五)。

+3

的比較操作是''==。 '='是作業 – knittl

+0

如果您想將其用作模板,請先關閉圖像,而不要使用else。使用'=='來比較幾天,併爲每個if使用大括號'{}'。 –

回答

0

如果會跌成若干不同if分支,但要覆蓋$img每個連續的時間。

您的主要問題是您沒有將$d與事物進行比較,而是每次都指定$d值。爲了便於比較,您需要雙等號:==,如if ($d == 5 && ...

另外,您可能會考慮使用if,else if,else而不是if語句的數量。現在,如果第一個if語句是「正確的」語句,那麼$img仍將設置爲closed.png,因爲它沒有最後一個if語句。

如果您正確使用了if,else if,else梯形圖,則不會發生這種情況(並且您的腳本運行速度會更快)。


TLDR:這應該工作:

$h = date('Gi'); //G (timer) = 0 til 23 og i (minutter) = 00 til 59 

$d = date('N'); //1 (for mandag) til 7 (for søndag) 


// MANDAG 
if ($d == 1 && $h >= 745 && $h < 1240){ $img = 'images/open.png'; } 
elseif ($d == 1 && $h >= 1330 && $h < 1410){ $img = 'images/open_red.png'; } 

// TIRSDAG 
elseif ($d == 2 && $h >= 745 && $h < 1240){ $img = 'images/open.png'; } 
elseif ($d == 2 && $h >= 1330 && $h < 1410){ $img = 'images/open_red.png'; } 

// ONSDAG 
elseif ($d == 3 && $h >= 745 && $h < 1240){ $img = 'images/open.png'; } 
elseif ($d == 3 && $h >= 1330 && $h < 1410){ $img = 'images/open_red.png'; } 

// TORSDAG 
elseif ($d == 4 && $h >= 745 && $h < 1240){ $img = 'images/open.png'; } 
elseif ($d == 4 && $h >= 1330 && $h < 1410){ $img = 'images/open_red.png'; } 

// FREDAG 
elseif ($d == 5 && $h >= 745 && $h < 1240){ $img = 'images/open.png'; } 

// LØRDAG 


// SØNDAG 


else{ $img = 'images/closed.png'; } 
?> 

<img src="<?php echo $img; ?>"> 
+0

感謝您的幫助:) – NizeGuy

1

一個根本的缺陷是,你應該使用==(即測試如果兩個值相等),而不是=(即分配的值)。但是大部分代碼都很麻煩,整個例程可以用更緊湊的方式編寫。剛剛嘗試:

$h = date('Gi'); 
$d = date('N'); 

$img = "images/closed.png"; 

if (($d >= 1 && $d <= 6) && ($h >= 745 && $h < 1240)) $img = "images/open.png"; 
elseif (($d >= 1 && $d <= 5) && ($h >= 1330 && $h < 1410)) $img = "images/open_red.png"; 

這是所有:)

+0

這並沒有考慮'closed.png' ... – jedwards

+1

@jedwards我的不好,編輯:) – Cranio

+0

我將添加各種不同的時間和日子,其中不同的商店開放。這就是爲什麼我每天都有一個模板。 – NizeGuy

0

您使用=其分配,什麼時候應該使用哪個==比較。

您的else也附加到最後的if,因此您只會在星期五看到「開放」圖片。使用大括號可以讓if/elseif/else結構更清晰。

更好的方法是默認情況下將其設爲「關閉」,然後使用if/else結構(帶大括號,總是帶大括號!)像下面這樣:

$h = date('Gi'); //G (timer) = 0 til 23 og i (minutter) = 00 til 59 

$d = date('N'); //1 (for mandag) til 7 (for søndag) 

$img = 'images/closed.png'; // By default the image is "closed" 

if ($d < 6) // If Monday to Friday 
{ 
    if ($h >= 745 and $h < 1240) // If early 
    { 
     $img = 'images/open.png'; // then it's open 
    } 
    elseif ($h >= 1330 and $h < 1410 and $day != 5) // If late, and NOT Friday 
    { 
     $img = 'images/open_red.png'; // then it's red open 
    } 
} 

?> 

<img src="<?php echo $img; ?>"> 
0

我會去的東西周圍的臺詞:

list($day_of_week, $hour_minute) = explode(' ', date('N Gi')); 

switch($day_of_week) { 
    case '7': 
    case '6': 
     # weekend days, always closed: 
     $image = 'closed.png'; 
    break; 
    default: 
     # weekdays, so check the time instead: 
     if (((int)$hour_minute >= 745 && (int)$hour_minute <= 1240) || ((int)$hour_minute >= 1330 && (int)$hour_minute <= 1410)) { 
      $image = 'open.png'; 
     } else { 
      $image = 'closed.png'; 
     } 
    break; 
} 

漂亮的直線前進和簡單的讀恕我直言