Call to a member function on a non-object

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
AlexK2307
Mitglied
Beiträge: 11
Registriert: 25.05.2005 17:09
Kontaktdaten:

Call to a member function on a non-object

Beitrag von AlexK2307 »

Hallo,

ich hab ein Problem, wenn ich posts absende (edit, post etc.). Normalerweise kommt da ja "HIER klicken um Deine Nachricht anzuzeigen" (sinngemäß). Bei mir kommt der Fehler
<b>Fatal error</b>: Call to a member function on a non-object in <b>/daten/www/inf/extra/lastwars_ticker.php</b> on line <b>76</b>
Zeile 76ff. aus lastwars_ticker.php hat geschrieben: $result = $vwardb->query_first("
SELECT COUNT(warid) AS numwars
FROM vwar".$n."
WHERE status='1'
AND dateline <= '$dateline'
");
Problem dürfte wohl sein, daß er das Objekt $vwardb nicht kennt. Ok, ich hab null Peilung, was die Sache mit den Objekten betrifft (sonst wär ich ja auch nicht hier :D ). Aber ich häng jetzt total und kann mir leider auch nicht mehr weiter helfen. Daher die Bitte um Hilfe :oops:

Das Problem existiert auch nur in der function prepare_post, wenn ich das soweit richtig verstanden habe. Bei viewtopic.php, posting.php etc. klappt alles. Nur diese "Quittierungsseite" mag nicht. Durch die automatische Weiterleitung funktioniert aber trotzalledem alles. Es ist aber ein Schönheitsfehler, den ich endlich weghaben will. :x

Wer will kann sich das gerne unter "http://infclan.net" ansehen. Ich habe dort ein vwar mit einem phpbb verschmolzen. Ich hoffe, ich werde dafür nicht in Ungnade fallen. Im Prinzip ist es ja auch nichts anderes als die Integration von phpbb in php-nuke. ;)

Ich bin für jede Hilfe dankbar!

Gruß

Alex
Benutzeravatar
kellanved
Mitglied
Beiträge: 570
Registriert: 05.02.2005 15:15
Wohnort: Berlin

Beitrag von kellanved »

Was ist den das für eine Mod? Diese Variable (die ganze Datenbanktabelle) gibt es in einem normalen phpBB nicht.
AlexK2307
Mitglied
Beiträge: 11
Registriert: 25.05.2005 17:09
Kontaktdaten:

Beitrag von AlexK2307 »

Das ist ein vwar-Objekt. vwar ist ein php/MySQL Projekt für online Clans. Siehe auch auf der vwar-Homepage (vwar . de).
Gruß

Alex
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

was willst du denn erreichen?
ist die Seite in ein phpBB integriert?

dann veruschs mal so:

Code: Alles auswählen

$sql = "SELECT COUNT(warid) AS numwars 
FROM vwar".$n." 
WHERE status='1' 
AND dateline <= '$dateline'":

$result = $db->sql_query($sql);
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Die Fehlermeldung besagt:
das versucht wird auf eine Klassenmethode zuzugreifen über eine Variable in welcher kein Objekt instanziert worden ist.

Folglich ist das Objekt aus Gründen die sich meiner Kenntnis entziehen nicht initialisiert worden.

Bei PHPBB wird $db im header initialisiert. $vwardb weiss meine Glaskugel leider nicht auch wenn ich noch so daran rüttele.....

Frage ist was kann $vwardb besser als $db und ob es sinnvoll ist diese zu vermischen.....
AlexK2307
Mitglied
Beiträge: 11
Registriert: 25.05.2005 17:09
Kontaktdaten:

Beitrag von AlexK2307 »

:) Ok, ich habs wohl zu ungenau erklärt, aber daran soll es bitte sehr nicht scheitern.

Ich versuch es mal mit einem Bild:

[ externes Bild ]

$db gehört zu phpBB (von mir im Bild als Bereich 1 gekennzeichnet). Wie gewohnt. Nicht verändert.

$vwardb gehört zum vwar Teil, den ich mit (2) gekennzeichnet habe. Beide Teile zusammen ergeben die gesamte Homepage.

Sowohl vwar als auch phpBB haben von mir den gleichen Header bekommen. Das funktioniert auch bei allen vwar-Seiten und bei fast allen Bestandteilen von phpBB.

Leider scheint es bei phpBB Seiten zu geben, die nicht aus den zugrundegelegten php-Seiten im Hauptordner (bei mir ist das /forum/) gebaut werden. Eine solche Seite wäre z.B. die erweiterte Smiley-Box. Dort habe ich meinen Header (mehr oder weniger erfolgreich) bereits herausnehmen können. Denn alle diese Seiten (z.B. Smiley-Box, Quittung für post/edit, Benutzernamen-finden-Box), die nicht so aufgebaut werden, wie die Hauptseiten (posting.php, viewtopic.php, viewforum.php, search.php, etc.) scheitern am $vwardb-Objekt, das jedoch für die linke Menüleiste notwendig wäre.

Vermutlich habe ich das System dieser Seiten noch nicht verstanden, aber momentan denke ich, daß die bei mir fehlerhaft angezeigten Seiten aus functions gebaut werden. So z.B. function prepare_post. Diese Funktion baut - wenn ich das richtig verstanden habe - die Quittungsseite (HIER klicken um Ihre Nachricht anzuzeigen) auf. Beim Seitenaufbau ist das vermeintliche Objekt $vwardb allerdings "NULL", woraus dann der Fehler resultiert.

Diese Funktion wird aus posting.php aufgerufen, wo gleich am Anfang auch die vwar-Funktionen (korrekt) eingelesen werden. Korrekt deshalb, weil ich ja das Forum ganz ohne Fehlermeldung bearbeiten kann und die links stehenden Menüs mit integrierten vwar-Objekten funktionieren. Sobald aber eine Seite aus einer function gebaut wird, ist das $vwardb-Objekt "vergessen". :?

Ich denke, daß das nicht ohne ist und ich kann jeden verstehen, der keine Lust hat, in der Freizeit sich mit so einem "Blödsinn" zu beschäftigen. Deshalb Dank von ganzem Herzen an die, die sich mit mir abmühen. :grin:
Gruß

Alex
AlexK2307
Mitglied
Beiträge: 11
Registriert: 25.05.2005 17:09
Kontaktdaten:

Beitrag von AlexK2307 »

Leider immer noch keine Lösung. :(
Gruß

Alex
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

was bringt dir denn $vwardb, was dir $db nicht bringt?
du willst doch nur eine simple Abfrage machen, da macht es m.E. keinen Unterschied, welche DB-Klasse verwendet wird, sie muss nur richtig verwendet werden.

mfg Johny
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
AlexK2307
Mitglied
Beiträge: 11
Registriert: 25.05.2005 17:09
Kontaktdaten:

Beitrag von AlexK2307 »

kratzer54847 hat geschrieben:was bringt dir denn $vwardb, was dir $db nicht bringt?
du willst doch nur eine simple Abfrage machen, da macht es m.E. keinen Unterschied, welche DB-Klasse verwendet wird, sie muss nur richtig verwendet werden.
$db ist ein phpBB-Objekt
$vwardb ist ein vwar-Objekt

Auszug aus einer vwar-includes-Datei:

Code: Alles auswählen

class vwardb {

        var $link_id    = 0;
        var $query_id   = 0;
        var $record     = array();

        var $errdesc    = "";
        var $errno      = 0;
        var $show_error = 1;

        var $server     = "";
        var $user       = "";
        var $password   = "";
        var $database   = "";

        function vwardb($server,$user,$password,$database)
        {
                $this->server   = $server;
                $this->user     = $user;
                $this->password = $password;
                $this->database = $database;
                $this->connect();
        }

 function gettables()
 {
        global $n;

        return array(
        "vwar".$n,
        "vwar".$n."_accessgroup",

[....]
Ich habe ja nicht viel Ahnung von Klassen, aber ich denke $vwardb und $db sind sehr unterschiedlich. Sollte es wirklich gut sein, das eine gegen das andere auszutauschen? Bei anderen Seiten klappt die Verwendung beider Objekte im übrigen einwandfrei. Ich habe anscheinend nur Probleme, das Objekt bei manchen Seiten zu erstellen. Daher kann es nicht ausgelesen werden.

Ich kann gerne eine Testumgebung erstellen und den Zugang per PM rausgeben.
Gruß

Alex
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

die Grundfunktion beider Objekte liegt doch im Auslesen und Verarbeiten von Daten aus einer Datenbank. Daher sollte man es austauschen können.
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Antworten

Zurück zu „Coding & Technik“