in php een vergelijking uitvoeren
wie kan me helpen?
wat is de bedoeling van de test.
de daten en de tijd worden binnen gehaald.
nu moet het elke dag om 20 uur tot 4 uur s'nachts waar zijn alleen zondags avond en maandag nacht niet.
wat had ik bedacht.
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
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
$tijd = date("H:i:s");
$datum = date("d.m.y");
$dag = date("D");
if (($tijd > "20:00:00" || $tijd < "04:00:00" ) xor (($tijd > "20:00:00" and $dag == "Sun" ) or ($tijd < "04:00:00" and $dag == "Mon" ))) {
$test = "waar";
}else{
$test = "nietwaar";
}
?>
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
$tijd = date("H:i:s");
$datum = date("d.m.y");
$dag = date("D");
if (($tijd > "20:00:00" || $tijd < "04:00:00" ) xor (($tijd > "20:00:00" and $dag == "Sun" ) or ($tijd < "04:00:00" and $dag == "Mon" ))) {
$test = "waar";
}else{
$test = "nietwaar";
}
?>
ik weet even niet waar ik de fout in ga.
ik hoop dat jullie me kunnen helpen
alvast bedankt
Toevoeging op 25/03/2012 21:00:55:
ik weet het niet meer
het lijkt nu wel goed te gaan.
Gewijzigd op 25/03/2012 21:01:13 door Ronald E
Mooi dat het werkt, maar zoveel and's en or's en ook nog een xor in 1 regel is altijd een slecht idee. In een geval als dit kun je beter met geneste if's werken, dat debugt een stuk makkelijker.
Offtopic: Jan Koehoorn is weer terug? Welkom :-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
$tijd = date("H:i:s");
$datum = date("d.m.y");
$dag = date("D");
switch ($dag) {
case '0':
# code...
echo "het is zondag";
break;
case '1':
# code...
echo "het is maandag";
break;
case '2':
# code...
echo "het is dinsdag";
break;
case '3':
# code...
echo "het is woensdag";
break;
case '4':
# code...
echo "het is donderdag";
break;
case '5':
# code...
echo "het is vrijdag";
break;
case '6':
# code...
echo "het is zaterdag";
break;
default:
# code....
echo "hier is de dag";
break;
}
?>
date_default_timezone_set('Europe/Amsterdam');
setlocale(LC_ALL, 'nl_NL');
$tijd = date("H:i:s");
$datum = date("d.m.y");
$dag = date("D");
switch ($dag) {
case '0':
# code...
echo "het is zondag";
break;
case '1':
# code...
echo "het is maandag";
break;
case '2':
# code...
echo "het is dinsdag";
break;
case '3':
# code...
echo "het is woensdag";
break;
case '4':
# code...
echo "het is donderdag";
break;
case '5':
# code...
echo "het is vrijdag";
break;
case '6':
# code...
echo "het is zaterdag";
break;
default:
# code....
echo "hier is de dag";
break;
}
?>
ik heb het niet getest maar het zou al een aardig opzetje moeten zijn met wat je wilt volgens mij.
Gewijzigd op 25/03/2012 23:00:08 door Reshad F
Reshadd farid op 25/03/2012 22:56:13:
hmm ik denk dat je code een stuk korter/makkelijker kan
Ik geloof niet dat jouw code korter is.
Reshadd farid op 25/03/2012 22:56:13:
zoals jan al zegt er klopt niks van je Or en And
Dat zei Jan niet. Hij raadt het niet aan omdat er makkelijk fouten gemaakt kunnen worden. Verder werkt die ene if() regel perfect.
@santhe maar een switch is dat niet makkelijker in zown geval?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$someVar = 'hello';
switch($someVar)
{
case 'foo' :
echo '$SomeVar is foo';
break;
case 'bar' :
echo '$SomeVar is bar';
break;
case 'lorem' :
echo '$SomeVar is lorem';
break;
case 'ipsum' :
echo '$SomeVar is ipsum';
break;
case 'hello' :
echo '$SomeVar is hello';
break;
default :
echo '$SomeVar is '.$someVar;
break;
}
?>
$someVar = 'hello';
switch($someVar)
{
case 'foo' :
echo '$SomeVar is foo';
break;
case 'bar' :
echo '$SomeVar is bar';
break;
case 'lorem' :
echo '$SomeVar is lorem';
break;
case 'ipsum' :
echo '$SomeVar is ipsum';
break;
case 'hello' :
echo '$SomeVar is hello';
break;
default :
echo '$SomeVar is '.$someVar;
break;
}
?>
Je wilt alleen maar weten of $someVar gelijk is aan hello:
Gewijzigd op 25/03/2012 23:22:28 door Wouter J
Reshadd farid op 25/03/2012 23:17:40:
@santhe maar een switch is dat niet makkelijker in zown geval?
Het is overzichtelijker.
Maar deze if() is gewoon goed. Alleen denk ik dat niet iedereen snapt wat daar nou precies gebeurt en in dat geval zou ik ook zeggen: Gebruik een switch() of iets dergelijks.
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
# Als date('N') nummer tussen 1 en 7 niet gelijk is aan 1 = Maandag of 7 = Zondag en
# date('G') moet groter zijn dan 20 of kleiner dan 4:
if((!in_array(date('N'), array('1', '7'))) && ((date('G') > 20) || (date('G') < 4))) {
echo 'Het is nu: '.date('Y-m-d H:i:s').'.';
}
else {
echo 'Gelieve de site nu niet te bezoeken. :-)';
}
?>
# Als date('N') nummer tussen 1 en 7 niet gelijk is aan 1 = Maandag of 7 = Zondag en
# date('G') moet groter zijn dan 20 of kleiner dan 4:
if((!in_array(date('N'), array('1', '7'))) && ((date('G') > 20) || (date('G') < 4))) {
echo 'Het is nu: '.date('Y-m-d H:i:s').'.';
}
else {
echo 'Gelieve de site nu niet te bezoeken. :-)';
}
?>
alleen zie ik nog niet hoe hij werkt voor zondag nacht dus van 0:00 tot 04:00 dan moet het waar zijn want deze dag hoort nog bij de zaterdag (en is nog waar). en de maandag nacht 0:00 tot 04:00 want hoort bij de zondag (en is niet waar)