Fatal error: Call to a member function getEmail() on a non-object in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Coen Egberink

Coen Egberink

12/11/2010 02:13:53
Quote Anchor link
Hallo,

Ik krijg de volgende foutmelding; "Fatal error: Call to a member function getEmail() on a non-object in"

Als ik deze met commentaar uitzet krijg ik dezelfde fout voor homepage, de eerste gaan dus wel goed...

Ik heb alles wel 100 keer nageken en voor email en homepage heb ik precies hetzelfde, kom er zelf dus niet meer uit :S hoop dat iemand me hier verder kan helpen..

onderstaand de oproepcode en classe

Ze worden aangeroepen in het volgende stukje code:

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?php
------------------------------------------------------------------------------
for ($i=0; $i<$aantalBerichten; $i++)
{

    $bericht    =    $berichten[$i];

    $id        =    $bericht->getId();
    $naam        =    $bericht->getNaam();
    $datum        =    $bericht->getDatum();
    $tijd        =    $bericht->getTijd();
    $bericht    =    $bericht->getBericht();
    $email        =    $bericht->getEmail();
    $homepage    =    $bericht->getHomepage();
rest....

-------------------------------------------------------------------------------




De classe die hierbij hoort is;
-----------------------------------------------------------------------

class Bericht extends basic
{
    private $naam;
    private $datum;
    private $tijd;
    private $bericht;
    private $email;
    private    $homepage;

    function
getNaam()
    {

        return $this->naam;
    }

    function
getDatum()
    {

        return $this->datum;
    }
    
    function
getTijd()
    {

        return $this->tijd;
    }

    function
getBericht()
    {

        return $this->bericht;
    }

    function
getEmail()
    {

        return $this->email;
    }

    function
getHomepage()
    {

        return $this->homepage;
    }

    function
setNaam($naam)
    {

        $this->naam = $naam;
    }

    function
setDatum($datum)
    {

        $this->datum = $datum;
    }

    function
setTijd($tijd)
    {

        $this->tijd = $tijd;
    }

    function
setBericht($bericht)
    {

        $this->bericht = $bericht;
    }

    function
setEmail($email)
    {

        $this->email = $email;
    }

    function
setHomepage($homepage)
    {

        $this->homepage = $homepage;
    }

    function
select($id)
    {

        global $db;
        $query    =    "SELECT * FROM ".TABLE_GASTENBOEK." WHERE id=".$id;
        $result =    $db->query($query);

        if ($db->num_rows($result) == 1)
        {

            $row = $db->fetch_object($result);
            $this->id = $row->id;
            $this->naam = $row->naam;
            $this->datum = $row->datum;
            $this->tijd = $row->tijd;
            $this->bericht = $row->bericht;
            $this->email = $row->email;
            $this->homepage = $row->homepage;
            return true;
        }
else{
            return false;
        }
    }

?>

-----------------------------------------------------------------------------------

Let even op je code tags
Gewijzigd op 12/11/2010 10:43:37 door Justin S
 
PHP hulp

PHP hulp

19/04/2024 12:41:30
 
Justin S

Justin S

12/11/2010 10:44:49
Quote Anchor link
Vertaal de foutcode eens.

Call to a member function .. on a non object

Oftewel: je roept een functie aan op een object dat niet bestaat of geen object is.
 
Coen Egberink

Coen Egberink

12/11/2010 10:49:11
Quote Anchor link
Hoi Justin,

Ja zoiets dacht ik al, had google ook al bekeken...
Weet jij waar de fout zit dan?

Ik snap namelijk niet waarom hij bij de andere wel goed gaat en alleen bij email en homepage niet, terwijl deze op dezefde manier gemaakt zijn :S
Dat vind ik zo vaag....

Hoop dat jij mij de fout kunt vertellen..
Groetjes Coen
 
Justin S

Justin S

12/11/2010 10:57:06
Quote Anchor link
Ik denk dat het niet ligt aan de functie op zich, maar met wat je er vervolgens mee doet, echo je het resultaat o.i.d.?
 
Coen Egberink

Coen Egberink

12/11/2010 11:12:34
Quote Anchor link
Ja, dit zijn berichten voor een GB

dit is de rest van de code;

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
for ($i=0; $i<$aantalBerichten; $i++)
{
    $bericht    =    $berichten[$i];

    $id            =    $bericht->getId();
    $naam        =    $bericht->getNaam();
    $datum        =    $bericht->getDatum();
    $tijd        =    $bericht->getTijd();
    $bericht    =    $bericht->getBericht();
    $email        =    $bericht->getEmail();
    $homepage    =    $bericht->getHomepage();


    $gegevens    .=    "<div class=\"comment-post\" id=\"comment-".$id."\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t<div class=\"avatar\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t<img alt='' src='uploads/person.png' class='avatar avatar-64' height='64' width='64' />\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t</div>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t<div class=\"comment-area comment-area-right visitor\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t<div class=\"comment-area-top\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t<div class=\"comment-area-bottom\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t<p class=\"comment-postmeta\"><strong><cite>".$naam."</cite></strong> zei op ".$datum." om ".$tijd."</p>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t<div class=\"comment-text\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t\t".$bericht." ".$email." ".$homepage."\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"comment-remix-meta\">\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\" class=\"replyto\" onclick=\"replyto('".$id."','".$naam."'); return false;\">Antwoord</a>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t\t\t&nbsp;-&nbsp;\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#\" class=\"quote\" onclick=\"quote('".$id."','".$naam."','".$bericht."'); return false;\">Quote</a>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t\t</div>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t\t</div>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t\t</div>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t\t</div>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t\t</div>\n";
        $gegevens    .=    "\t\t\t\t\t\t\t</div>\n\n";
    
}

$html    =    str_replace("<!-- berichten -->", $gegevens, $html);
$html    =    str_replace("<!-- aantalBerichten -->", $aantalBerichten, $html);

echo $html;
Gewijzigd op 12/11/2010 11:14:07 door Coen Egberink
 
Toby hinloopen

toby hinloopen

16/11/2010 21:28:11
Quote Anchor link
sow dan, jij houdt van tabs in je HTML :P

Overigens is je code de droom voor XSS.

Hoe dan ook; de fout kan aan 2 dingen liggen:
- Je array is kleiner dan $aantalBerichten, waardoor $berichten[$i] niet bestaat en NULL teruggeeft.
- Je array bevat op $i geen object.

Het is dan ook handig als je laat zien hoe je aan de $berichten-array komt en hoe je aan $aantalBerichten komt.

Optioneel kan je dit bovenin je loop zetten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
for(...) {
  if(!array_key_exists($i, $berichten)
  || !
is_object($berichten[$i])
  || !(
$berichten[$i] instanceof Bericht)
    continue;
  // continue-keyword zorgt ervoor dat de for-loop
  //direct naar de volgende gaat zonder de code eronder uit te voeren.
  
  // rest van je $berichten[$i] code hier.

}
?>
Gewijzigd op 16/11/2010 21:29:08 door toby hinloopen
 
Pim -

Pim -

16/11/2010 22:13:06
Quote Anchor link
@Coen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function tab($n = 1, $char = "\t") {
    return str_repeat($char, $n);
}

?>

:D
 



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.