Laat zien tussen data error
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?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>';
}
?>
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?
Nu sta je strings te vergelijken, en dat levert niet het gewenste resultaat op ;-)
Gewijzigd op 28/02/2019 16:21:39 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?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>';
}
?>
$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>';
}
?>
Test maar uit ;-) Dan weet je het zeker.
Gewijzigd op 28/02/2019 16:33:01 door - Ariën -
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:
Code (php)
Dat leest allemaal een stuk prettiger.
Gewijzigd op 28/02/2019 17:05:42 door Thomas van den Heuvel