Seite 1 von 1

Call to a member function assign_var() on a non-object

Verfasst: 22.01.2005 20:01
von Einste1n
weiss einer was diese Fehlermeldung heißt ?

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

Ich programmiere gerade mit einen Kollegen einen kleinen mod, während er die Funktionen schreibt, versuche ich das ganze ins phpbb2 templetsystem zu setzen.

Bisher klappte das auch ganz gut, nur jetzt wird von der datenbank.php eine funktion.inc includet und in dieser hab ich

Code: Alles auswählen

print "Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!";
mit

Code: Alles auswählen

$template->assign_var('EINGABE', 'Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!');
ausgetauscht.
Allerdings kommt dabei diese Meldung

Fatal error: Call to a member function assign_var() on a non-object in C:\Programme\Webserver\xampp\htdocs\funktionen.inc on line 78

in der datenbank.php wird das templet natürlich voher geladen
mit

Code: Alles auswählen

$template->set_filenames(array( 
    'meine_seite' => 'datenbank.tpl', 
));
alle templets funktionieren, nur wenn in der funktion.inc diese bedingung aufgerufen wird, dann kommt diese meldung ... hat einer ne idee, wo der denkfehler liegt oder zumindest was diese fehlermeldung bedeutet ?
Das würde mich vieleicht etwas weiter bringen, weil im moment lerne ich gerade erst mit php umzugehen :)

Verfasst: 22.01.2005 20:15
von Mario Siebert
So muss es ausschauen:

Code: Alles auswählen

$template->assign_vars(array(
'EINGABE' => 'Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!')
);
Grüße Mario

Verfasst: 22.01.2005 20:27
von Einste1n
klappt leider nicht, kommt immer noch die gleiche meldung :(

Fatal error: Call to a member function assign_vars() on a non-object in C:\Programme\Webserver\xampp\htdocs\funktionen.inc on line 78

Verfasst: 22.01.2005 23:33
von Einste1n
also irgendwie kapiere ich nix mehr!
ich hab jetzt einfach mal was geschrieben, wo eine Template-Datei geladen wird, dann eine php datei includet wo eine einfache zuweisung gemacht wird und dann wirds ausgegeben. funktioniert tadellos ... viel anders ist es in unseren mod auch net, und trotzdem kommt in unserem mod so eine dumme Fehlermeldung :(

hier nochmal ne genauere beschreibung des probs, vieleicht erkennt das problem ja jemand

datenbank.php

Code: Alles auswählen

<?php 
//Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 


//Session auslesen und Benutzer-Informationen laden 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest 
$page_title = 'OgameDB'; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 



// TPL Laden

$template->set_filenames(array( 
    'meine_seite' => 'datenbank.tpl', 
));

include("funktionen.inc");
switch ($_GET['action']) {
    case "textfeld":
$template->assign_var('EINGABE', '<div align=center><form action="?action=einlesen" method="POST"><textarea name="text" cols="100" rows="20"></textarea>
               <br><input type="submit" value="einlesen"></div></form>');
        break;
    case "einlesen":
        check_kind_of_text($_POST['text']);
        break;
    default:
$template->assign_var('EINGABE', '<a href="?action=textfeld">Spionagebericht einlesen</a>');
$template->assign_var('FLOTTE', '<a href="fleet.php">Fleettimer starten</a>');
}
$template->pparse('meine_seite');

//Footer - nur dann weglassen, wenn du auch den Header weglässt 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
wie man sieht wird eine funktionen.inc includet und diese macht an dieser stelle probs

funktionen.php

Code: Alles auswählen

    if ($planeten = mysql_fetch_array($query)) {
        $spioergebnisse['planet_id'] = $planeten['id'];
    } else {
$template->assign_var('EINGABE', 'Dieser Planet existiert noch nicht in unserer Datenbank! Du musst zuerst die Galaxieansicht einlesen!');
    }
Es kommt diese Fehlermeldung wenn das else ausgelöst wird

Fatal error: Call to a member function assign_var() on a non-object in C:\Programme\Webserver\xampp\htdocs\funktionen.inc on line 78

ich sitze da schon seit Stunden dran und kann mir einfach nicht erklären wie das zustande kommt. Hat einer ne Idee ?

Verfasst: 29.01.2005 21:47
von unTouched
also erstmal wenns
funktionen.php
heisst wieso includest dus dann mit
funktionen.inc?

ansonsten ist der fehler wohl das du immer
$template->assign_vars(array('EINGABE' => '...
verwenden solltest anstatt
$template->assign_vars(array('EINGABE' ,... << FALSCH

Pete®

ach ja der fehler bedeutet das $template kein objekt ist -> funktionen...... enthällt funktionen ala
function xyz()
{
} ... ?

wenn ja musst du am anfang solcher funktionen
function xyz()
{
global $template;
}

machen (sowie noch paar anderer sachen die du aus dem globalen bereich verwendest...

hoffe das hilft dir weiter