2016-05-23 19 views
0

店舗が開かれているか閉店しているかを、dbの開閉時間に基づいて表示しようとしています。開いている場合は、その日の開閉時間を表示し、閉じている場合はエコーを閉じます。現時点で私の問題は、ショップが開いている(試行1)予定があっても、何もエコーしていない(試行2)場合でも、クエリが閉じているということです。店舗の開店時間と閉店時間が開いているときに閉じて表示

私のDBのクローズドストアは00:00と表されます。 私は自分自身を教えているし、静かに来ているので、任意の提案や指導は非常に高く評価されるだろう。

CREATE TABLE `Opening_hrs` (
`OH_ID` bigint(255) NOT NULL AUTO_INCREMENT, 
`Restaurant_ID` bigint(255) NOT NULL, 
`Day_of_week` int(11) NOT NULL, 
`Open_time` time NOT NULL, 
`Closing_time` time NOT NULL, 
PRIMARY KEY (`OH_ID`), 
KEY `Restaurant_ID` (`Restaurant_ID`) 
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 

DBはこれがあなたの第二の試みで

date_default_timezone_set("Europe/London"); 
    $output_ohr = ''; 

    $ohrs = mysqli_query($dbc, "SELECT * FROM Opening_hrs 
WHERE Restaurant_ID='$rest_id' AND Day_of_week = DATE_FORMAT(NOW(), '%w') 
AND CURTIME() BETWEEN Open_time AND Closing_time"); 

echo var_dump($ohrs); 

$count_ohrs = mysqli_num_rows($ohrs); 
if ($count_ohrs === 0) { 
    $output_ohr = '<b> Closed</b>'; 
} else { 
    $i = 1; 
}while ($row_ohr = mysqli_fetch_array($ohrs)) { 
    $o_time = $row_ohr['Open_time']; 
    $c_time = $row_ohr['Closing_time']; 



    $output_ohr = $output_ohr . '<p>Open</p>' . 
      '<p>' .$o_time. ' - ' .$c_time. '</p>' 
    ; 
    $i++; 
} 

私の第二の試み

date_default_timezone_set("Europe/London"); 

    $closed= strtotime("00:00am today GMT"); 
    $output_ohr = ''; 

    $ohrs = mysqli_query($dbc, "SELECT * FROM Opening_hrs 
WHERE Restaurant_ID='$rest_id' AND Day_of_week = DATE_FORMAT(NOW(), '%w') 
AND CURTIME() BETWEEN Open_time AND Closing_time"); 

    echo var_dump($ohrs); 

    $i = 1; 
    while ($row_ohr = mysqli_fetch_array($ohrs)) { 
    $o_time = $row_ohr['Open_time']; 
    $c_time = $row_ohr['Closing_time']; 

    if($o_time === $closed){ 
    $output_ohr = '<p>closed</p>'; 
    }else{ 

    $output_ohr = $output_ohr . '<p>Open</p>' . 
      '<p>' .$o_time. ' - ' .$c_time. '</p>' 
    ; 
    $i++; 
     } 
    }  

答えて

0

あなたが唯一のオープンのお店を選択している私の最初の試みでした。ショップが閉鎖されている場合、照会は行を戻さないので、whileブロックは一度も実行されません。

店が開いているか閉じているかどうかを確認するために、次のコードを使用します

$stmt = mysqli_prepare($dbc, "SELECT COUNT(*) FROM Opening_hrs 
WHERE Restaurant_ID=? AND Day_of_week = DATE_FORMAT(NOW(), '%w') 
AND CURTIME() BETWEEN Open_time AND Closing_time"); 

$stmt->bind_param('i', $rest_id); 
$stmt->execute(); 
$stmt->bind_result($result); 
$stmt->fetch(); 

if ($result) { 
    echo 'Open'; 
} else { 
    echo 'Closed'; 
} 

(。可能なSQLインジェクションを防ぐprepared statementsの使用を注意してください)

+0

はあなたのためにありがとう助けと時間、しかしそれはどちらもうまくいきません – Blue

+0

@Blueもっと具体的になりますか? – ShiraNai7

+0

レストランが開いていても閉じています。 – Blue