fout in de mktime()

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stephan Sterrenberg

Stephan Sterrenberg

25/07/2007 18:21:00
Quote Anchor link
hey allemaal

in het volgende script zit een fout in de mktime()
weet iemand hier een oplossing voor?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?

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
 
PHP hulp

PHP hulp

25/04/2024 19:31:40
 
Joren de Wit

Joren de Wit

25/07/2007 18:25:00
Quote Anchor link
De juiste parameters meegeven? De foutmelding zegt dat de 4e parameter van de mktime op regel 48 een string is terwijl dat het niet mag zijn...

Wat je zou kunnen proberen in te vullen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
(int)$geb[1]
?>


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...
 
Frank -

Frank -

25/07/2007 18:36:00
Quote Anchor link
Lees ik dit goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 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.
 
- SanThe -

- SanThe -

25/07/2007 18:50:00
Quote Anchor link
mktime(0,0,0,$geb[1],$geb[0],$geb[2]);

echo $geb[1] . $geb[0] . $geb[2];
Doe die echo eens. Volgens mij staat het niet in de juiste volgorde.
 
Mark L

Mark L

25/07/2007 19:38:00
Quote Anchor link
Toevoeging op SanThe:

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)
 
Wout van der Burg

Wout van der Burg

25/07/2007 20:47:00
Quote Anchor link
Das de amerikaanse standaard.. dus raar is het niet, hoogstens voor ons ongebruikelijk :) Goed lezen in de manual kan het al verhelpen..
 
- SanThe -

- SanThe -

25/07/2007 21:29:00
Quote Anchor link
Wat ik dus bedoel te zeggen is dit: $geb = explode("-",$row['user_geboorte']);

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]);
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.