Avatar billede phill94 Nybegynder
26. maj 2010 - 15:48 Der er 9 kommentarer og
1 løsning

Fatal error: Call to a member function

Hej eksperter.

Jeg ved godt at dette spørgsmål er blevet oprettet et par gange, men da de andre spørgsmål ikke hjælper og forfatterene programmere anerledes end jeg, vælger jeg at oprette et nyt.
---------

Som sagt har jeg en

Fatal error: Call to a member function query() on a non-object in /home/www/mitdomæne/forums.php on line 703

som jeg ikke lige ved hvordan jeg skal løse..


Koden:

forums.php

function deletopic()
{
//Linje 703 nedenunder//
$q=$db->query("SELECT * FROM forum_topics WHERE ft_id={$_GET['topic']}");
$topic=$db->fetch_row($q);
$db->query("DELETE FROM forum_topics WHERE ft_id={$_GET['topic']}");
$db->query("DELETE FROM forum_posts WHERE fp_topic_id={$_GET['topic']}");
print "Sletter indlæg... Success<br />";
recache_forum($topic['ft_forum_id']);
stafflog_tilfoj("Slettede indlæg {$topic['ft_name']}");

}



På forhånd, tak.
Avatar billede arne_v Ekspert
26. maj 2010 - 15:57 #1
$db indeholder ikke en valid connection, saa fokuser paa hvor den burde faa en vaerdi!
Avatar billede phill94 Nybegynder
26. maj 2010 - 16:19 #2
Det er kun denne ene linje der ikke virker med $db
Det ville have været lettere hvis jeg på en måde kunne vise hele koden, men 714 linjer er for meget at skrive ind her.
Avatar billede arne_v Ekspert
26. maj 2010 - 16:30 #3
Der hvor det virker maa du have en valid $db.
Avatar billede arne_v Ekspert
26. maj 2010 - 16:31 #4
Mangler der evt. en:

global $db;

??
Avatar billede jesperhgh Nybegynder
26. maj 2010 - 16:33 #5
Kunne det være at variablen $db er global og (mærkeligt nok) ikke lokal ?

Hvis du vil bruge en global variabel i en funktion, så skal du:

i funktionen definere denne som global.

altså i dit tilfælde:

function deletopic()
{
    global $db; // så ved din lokale funktion, at $db findes i forvejen
    ...
    ....

}
Avatar billede phill94 Nybegynder
26. maj 2010 - 17:08 #6
Jo da, selvfølgelig.
...

function deletopic()
{
global $db;
$q=$db->query("SELECT * FROM forum_topics WHERE ft_id={$_GET['topic']}");
$topic=$db->fetch_row($q);
$db->query("DELETE FROM forum_topics WHERE ft_id={$_GET['topic']}");
$db->query("DELETE FROM forum_posts WHERE fp_topic_id={$_GET['topic']}");
print "Sletter indlæg... Success<br />";
recache_forum($topic['ft_forum_id']);
stafflog_tilfoj("Slettede indlæg {$topic['ft_name']}");

}


Det virker korrekt nu. Mange tak Jesper og Arne.
Hvad skulle jeg dog gøre uden nogle eksperter som kan åbne mine øjne for mig...
Smider i begge et svar, så skal I få jeres point.
Avatar billede arne_v Ekspert
26. maj 2010 - 17:13 #7
svar
Avatar billede arne_v Ekspert
26. maj 2010 - 17:13 #8
global er ioevrigt ikke en saerlig paen loesning - ved lejlighed boer logikken not tunes lidt
Avatar billede jesperhgh Nybegynder
26. maj 2010 - 17:42 #9
Osse her var arne her først, så giv ham.
Avatar billede phill94 Nybegynder
26. maj 2010 - 20:04 #10
Jamen du hjalp også.
Er du sikker?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester