fout in de mktime()
in het volgende script zit een fout in de mktime()
weet iemand hier een oplossing voor?
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
51
52
53
54
55
56
57
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
51
52
53
54
55
56
57
<?
error_reporting(E_ALL);
session_start();
include("config.php");
if(isset($_GET['act']))
{
if($_GET['act'] == "view")
{
echo "<h1>Profiel weergeven</h1>";
if(isset($_GET['user_id']))
{
$query = mysql_query("SELECT *,UNIX_TIMESTAMP(user_regdate) AS user_regdate FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'");
$result = mysql_result(mysql_query("SELECT COUNT(1) FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'"),0);
if(empty($result))
{
echo "<script>alert('User with this ID doesn\'t exist.'); history.go(-1);</script>";
}
else
{
while($row = mysql_fetch_assoc($query))
{
$public_profile = $row['user_public'];
if(empty($public_profile))
{
if(isset($_SESSION['user_id']))
{
$show_profile = 1;
}
else
{
$show_profile = 0;
}
}
else
{
$show_profile = 1;
}
if(!empty($row['user_geboorte']))
{
$geb = explode("-",$row['user_geboorte']);
$seconden = time() - mktime(0,0,0,$geb[1],$geb[0],$geb[2]);
$jaren = floor($seconden/60/60/24/365.25);
$geboorte = $jaren;
}
else {$geboorte = 'Onbekend';}
if($row['user_geslacht'] == '1') {$geslacht = 'Man';}
elseif($row['user_geslacht'] == '2') {$geslacht = 'Vrouw';}
else {$geslacht = 'Onbekend';}
?>
error_reporting(E_ALL);
session_start();
include("config.php");
if(isset($_GET['act']))
{
if($_GET['act'] == "view")
{
echo "<h1>Profiel weergeven</h1>";
if(isset($_GET['user_id']))
{
$query = mysql_query("SELECT *,UNIX_TIMESTAMP(user_regdate) AS user_regdate FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'");
$result = mysql_result(mysql_query("SELECT COUNT(1) FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'"),0);
if(empty($result))
{
echo "<script>alert('User with this ID doesn\'t exist.'); history.go(-1);</script>";
}
else
{
while($row = mysql_fetch_assoc($query))
{
$public_profile = $row['user_public'];
if(empty($public_profile))
{
if(isset($_SESSION['user_id']))
{
$show_profile = 1;
}
else
{
$show_profile = 0;
}
}
else
{
$show_profile = 1;
}
if(!empty($row['user_geboorte']))
{
$geb = explode("-",$row['user_geboorte']);
$seconden = time() - mktime(0,0,0,$geb[1],$geb[0],$geb[2]);
$jaren = floor($seconden/60/60/24/365.25);
$geboorte = $jaren;
}
else {$geboorte = 'Onbekend';}
if($row['user_geslacht'] == '1') {$geslacht = 'Man';}
elseif($row['user_geslacht'] == '2') {$geslacht = 'Vrouw';}
else {$geslacht = 'Onbekend';}
?>
de fout is:
Warning: mktime() expects parameter 4 to be long, string given in /storage/mijndomein/users/058605/public/sites/login.chat2you.eu/profile.php on line 48
groetjes wesley
Gewijzigd op 01/01/1970 01:00:00 door Stephan Sterrenberg
Wat je zou kunnen proberen in te vullen:
Verder is het natuurlijk totaal overbodig om hier bijna 550 regels code neer te knallen terwijl je probleem zich op 1 enkele regel bevindt. Geef relevante code, dus een paar regels voor en na de foutmelding...
Code (php)
1
2
3
4
2
3
4
<?
$query = mysql_query("SELECT *,UNIX_TIMESTAMP(user_regdate) AS user_regdate FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'");
$result = mysql_result(mysql_query("SELECT COUNT(1) FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'"),0);
?>
$query = mysql_query("SELECT *,UNIX_TIMESTAMP(user_regdate) AS user_regdate FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'");
$result = mysql_result(mysql_query("SELECT COUNT(1) FROM tbl_users WHERE user_id = '" . $_GET['user_id'] . "'"),0);
?>
$query is een resultset met data uit de tabel tbl_users en $result is een resultset uit exact dezelfde tabel? Wat is daar de (on-)zin van? $query slaat natuurlijk nergens op, daar hoort een query in te staan en geen resultset...
Die 2e query gooi je weg, die heb je echt niet nodig om te kijken of de eerste query is gelukt.
echo $geb[1] . $geb[0] . $geb[2];
Doe die echo eens. Volgens mij staat het niet in de juiste volgorde.
Bij mktime() staat dat de volgorde: Uur - Minuut - Seconde - Maand - Dag - Jaar moet zijn.
Er zullen best veel mensen zijn die zich in die Maand vergissen, omdat dit niet logisch is... (vind ik tenminste)
Das de amerikaanse standaard.. dus raar is het niet, hoogstens voor ons ongebruikelijk :) Goed lezen in de manual kan het al verhelpen..
Als daar een fatsoenlijk DATE of DATETIME veld wordt gebruikt in de database dan zit het jaar bijvoorbeeld niet in $geb[2] maar in $geb[0] en dan is dit dus ook niet goed: mktime(0,0,0,$geb[1],$geb[0],$geb[2]);