2016-05-23 6 views
0

Ich versuche zu zeigen, wenn ein Geschäft geöffnet oder geschlossen ist, basierend auf Öffnungs- und Schließzeiten in meinem db. Wenn es geöffnet ist, zeigen Sie die Öffnungs- und Schließzeiten für diesen Tag an, wenn es geschlossen ist, wird das Echo geschlossen. Mein Problem ist im Moment, dass meine Anfrage geschlossen wird, selbst wenn der Laden geöffnet ist (Versuch 1) oder gar nichts wiederholt (Versuch 2).Store öffnen und schließen Zeit, zeigt geschlossen, wenn geöffnet

Ein geschlossener Speicher in meiner Datenbank wird als 00:00 dargestellt. Irgendwelche Vorschläge oder Anleitungen würden sehr geschätzt werden, da ich mich selbst lehre und zum Stillstand gekommen bin.

DB

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 

Dies war mein erster Versuch

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++; 
} 

Mein zweiter Versuch

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++; 
     } 
    }  

Antwort

0

In Ihrem zweiten Versuch nur die offenen Geschäfte auswählen. Wenn der Shop geschlossen ist, gibt die Abfrage keine Zeilen zurück, und der Block while wird nicht einmal ausgeführt.

den folgenden Code verwenden, um zu sehen, ob ein Geschäft geöffnet oder geschlossen ist:

$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'; 
} 

(. Die Verwendung von prepared statements beachten Sie, dass eine mögliche SQL-Injection verhindern)

+0

Danke für Sie Zeit helfen und, aber das funktioniert auch nicht – Blue

+0

@Blue Könnten Sie genauer sein? – ShiraNai7

+0

Es sagt geschlossen, auch wenn das Restaurant geöffnet ist. – Blue

Verwandte Themen