Datum wordt onjuist weergegeven
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$datum="";
$d1=strtotime($Datum);
$d2=time();
$d3=floor($d2-$d1);
if($d3<20){
$datum="Net";
}else if($d3>=20&&$d3<60){
$datum="".$d3." seconden geleden";
}else if($d3>=60&&$d3<120){
$datum="".floor($d3/60)." minuut geleden";
}else if($d3>=120&&$d3<3600){
$datum="".floor($d3/60)." minuten geleden";
}else if($d3>=3600&&$d3<7200){ $datum="".floor($d3/3600)." uur geleden";
}else if($d3>=7200&&$d3<86400){ $datum="".floor($d3/3600)." uur geleden";
}else if($d3>=86400&&$d3<172800){
$datum="Gisteren";
}else if($d3>=172800&&$d3<259200){
$datum="Eergisteren";
}
?>
$datum="";
$d1=strtotime($Datum);
$d2=time();
$d3=floor($d2-$d1);
if($d3<20){
$datum="Net";
}else if($d3>=20&&$d3<60){
$datum="".$d3." seconden geleden";
}else if($d3>=60&&$d3<120){
$datum="".floor($d3/60)." minuut geleden";
}else if($d3>=120&&$d3<3600){
$datum="".floor($d3/60)." minuten geleden";
}else if($d3>=3600&&$d3<7200){ $datum="".floor($d3/3600)." uur geleden";
}else if($d3>=7200&&$d3<86400){ $datum="".floor($d3/3600)." uur geleden";
}else if($d3>=86400&&$d3<172800){
$datum="Gisteren";
}else if($d3>=172800&&$d3<259200){
$datum="Eergisteren";
}
?>
Dit is alleen het eerste gedeelte van het script, omdat de rest denk ik niet relevant is. Dat zijn, net als dit, alleen nog maar if-statements waarmee het aantal dagen en weken geleden wordt weergegeven.
Het probleem is dus concreet dat het aantal seconden of minuten geleden niet wordt weergegeven.
Ik hoop dat jullie me kunnen helpen. Alvast bedankt!
Toevoeging op 02/04/2012 02:28:51:
Excuus voor de 'bump', maar ik zie dat het scriptje niet helemaal goed is geplaatst. Een kleine update dus:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$datum="";
$d1=strtotime($Datum);
$d2=time();
$d3=floor($d2-$d1);
if($d3<20){
$datum="Net";
}else if($d3>=20&&$d3<60){
$datum="".$d3." seconden geleden";
}else if($d3>=60&&$d3<120){
$datum="".floor($d3/60)." minuut geleden";
}else if($d3>=120&&$d3<3600){
$datum="".floor($d3/60)." minuten geleden";
}else if($d3>=3600&&$d3<7200){
$datum="".floor($d3/3600)." uur geleden";
}else if($d3>=7200&&$d3<86400){
$datum="".floor($d3/3600)." uur geleden";
}else if($d3>=86400&&$d3<172800){
$datum="Gisteren";
}else if($d3>=172800&&$d3<259200){
$datum="Eergisteren";
}
?>
$datum="";
$d1=strtotime($Datum);
$d2=time();
$d3=floor($d2-$d1);
if($d3<20){
$datum="Net";
}else if($d3>=20&&$d3<60){
$datum="".$d3." seconden geleden";
}else if($d3>=60&&$d3<120){
$datum="".floor($d3/60)." minuut geleden";
}else if($d3>=120&&$d3<3600){
$datum="".floor($d3/60)." minuten geleden";
}else if($d3>=3600&&$d3<7200){
$datum="".floor($d3/3600)." uur geleden";
}else if($d3>=7200&&$d3<86400){
$datum="".floor($d3/3600)." uur geleden";
}else if($d3>=86400&&$d3<172800){
$datum="Gisteren";
}else if($d3>=172800&&$d3<259200){
$datum="Eergisteren";
}
?>
Misschien handig om te vermelden dat de datum met now() in de database wordt geplaatst, in een kolom met de eigenschap datetime en standaardwaarde 0000-00-00 00:00:00. Maar omdat het aantal uur geleden gewoon wordt weergegeven, kan het hier denk ik niet aan liggen.
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
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
<?php
function ago($date)
{
if(empty($date))
return "Geen tijd beschikbaar";
$periods = array("seconde", "minuut", "uur", "dag", "week", "maand", "jaar", "eeuw");
$periods_long = array('seconden', 'minuten', 'uur', 'dagen', 'weken', 'maanden', 'jaar', 'eeuwen');
$lengths = array("59","59","24","6","4.35","12","10");
$now = time();
$unix_date = strtotime($date);
if(empty($unix_date))
return 'Verkeerde datum';
if($now > $unix_date)
{
$difference = $now - $unix_date;
$tense = 'geleden';
}
else
{
$difference = $unix_date - $now;
$tense = "vanaf nu";
}
for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++)
$difference /= $lengths[$j];
$difference = round($difference);
if($difference != 1)
$periods[$j] = str_replace($periods[$j], $periods_long[$j], $periods[$j]);
return $difference . ' ' . $periods[$j] . ' ' . $tense;
}
?>
function ago($date)
{
if(empty($date))
return "Geen tijd beschikbaar";
$periods = array("seconde", "minuut", "uur", "dag", "week", "maand", "jaar", "eeuw");
$periods_long = array('seconden', 'minuten', 'uur', 'dagen', 'weken', 'maanden', 'jaar', 'eeuwen');
$lengths = array("59","59","24","6","4.35","12","10");
$now = time();
$unix_date = strtotime($date);
if(empty($unix_date))
return 'Verkeerde datum';
if($now > $unix_date)
{
$difference = $now - $unix_date;
$tense = 'geleden';
}
else
{
$difference = $unix_date - $now;
$tense = "vanaf nu";
}
for($j = 0; $difference >= $lengths[$j] && $j < count($lengths)-1; $j++)
$difference /= $lengths[$j];
$difference = round($difference);
if($difference != 1)
$periods[$j] = str_replace($periods[$j], $periods_long[$j], $periods[$j]);
return $difference . ' ' . $periods[$j] . ' ' . $tense;
}
?>
Ik heb je scriptje ingebouwd. Maar als ik 'n nieuwsbericht net heb geplaatst, ongeveer 3 minuten geleden, geeft-ie aan dat het '2 uur vanaf nu' is? Dus het werkt niet zoals 't moet werken...
Staat je server tijd goed? :p
Ja, ik heb voorheen ook geen problemen gehad met de datum en tijd. Dus daar kan 't ook niet aan liggen.
Zou het in het eerste code-voorbeeld niet liggen aan $datum en $Datum op regel 2 en 3?
Ik zal het scriptje eerst even ombouwen naar een functie, en dan $datum maar gewoon weglaten. Even kijken of dat werkt.
Nee, dat werkt ook niet!