<?php
date_default_timezone_set('Europe/Amsterdam');
$datefrom = "27-02-2019";
$dateto = "06-03-2019";

if(date("d-m-Y") >= $datefrom && $dateto > date("d-m-Y") || $datefrom == "" && $dateto == ""){
			echo '<div class="active">Actief</div>';
		}elseif (date("d-m-Y") < $datefrom){
			echo '<div class="scheduled">Gepland</div>';
		}else{
			echo '<div class="not-active">Niet actief</div>';
		}
?>


bovenstaande code geeft telkens niet actief weer, de datums geef ik in zoals ik nu de variabelen heb gevuld dd-mm-yyyy

Wie o wie kan mij helpen met dit probleem?
Ik zou het converteren naar een timestamp met strtotime(). Dan kan kan je er makkelijker mee rekenen en vergelijken.

Nu sta je strings te vergelijken, en dat levert niet het gewenste resultaat op ;-)
Bedoel je zo Ariën?

<?php
$datefrom = strtotime("01-03-2019");
$dateto = strtotime("06-03-2019");

if(strtotime(date("d-m-Y")) >= $datefrom && $dateto > strtotime(date("d-m-Y")) || $datefrom == "" && $dateto == ""){
			echo '<div class="active">Actief</div>';
		}elseif (strtotime(date("d-m-Y")) < $datefrom){
			echo '<div class="scheduled">Gepland</div>';
		}else{
			echo '<div class="not-active">Niet actief</div>';
		}
?>
Ziet er goed uit, op het eerste gezocht.
Test maar uit ;-) Dan weet je het zeker.
Om datums als string te kunnen vergelijken moeten deze van het format Y-m-d zijn, niet d-m-Y.

Je vergelijkt namelijk strings, PHP weet niet dat de string '01-03-2019' een datum is.

Het klopt dat in je oorspronkelijke codefragment '27-02-2019' na '06-03-2019' komt omdat 2 (van 27) lexicografisch (textueel) volgt op 0 (van 06).

Als je de formattering Y-m-d gebruikt dan werkt het zoals je zou verwachten omdat '2019-03-06' textueel gerangschikt is na '2019-02-27' immers:
2019 en 2019 zijn equivalent
03 volgt op 02, en daarmee valt de tweede datum na de eerste in de sortering.

Ook loont het misschien moeite om de huidige datum op te slaan in een aparte variabele ($now) en het if-statement in een logische volgorde te zetten qua tijdslijn, dus zoiets:
<?php
if ($before <= $now && $now < $after) {
    // this is happening now
} else {
    // ...
}
?>

Dat leest allemaal een stuk prettiger.

Reageren