Smarty - Array angeblich leer

Dieses Thema im Forum "Webdesign" wurde erstellt von jpfote, 18. November 2010.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. jpfote

    jpfote Erfahrener Benutzer

    Registriert seit:
    25. Juni 2005
    Beiträge:
    967
    Hallo zusammen,

    ich hänge hier irgendwie seit 3 Stunden fest und weis nicht mehr weiter. Das selbe Codefragment funktioniert in einem anderen Skript einwandfrei. Selber Server, alles gleich.

    Code:
    		$tabelle = array();
    		while ($row = mysql_fetch_assoc($result))
    		{ 
    			array_push($tabelle, array(
    			'var1' => $row['spalte1'],
    			'var2' => $row['spalte2']
             ));
    		}
    		
    		$tpl->assign('tabelle', $tabelle); // LOOP
    		
    		$smarty->display('anzeige.tpl');
    
    Ich habe aus einer Datenbank ein paar Werte ausgelesen und möchte diese jetzt in Form einer Tabelle ausgeben. Ich nutze die Smarty-Template-Engine. Die MySQL-Abfrage funktioniert und das Ergebnis enthällt die Daten. Auch das Array "$tabelle" enthält die Daten (geprüft mit "print_r($tabelle);").

    Sobald ich dieses Array Array dann dem Tempplate zuweise
    Code:
    $tpl->assign('tabelle', $tabelle); // LOOP
    , kommt ein Fatal Error
    Code:
    Fatal error: Call to a member function assign() on a non-object in /pfad/zur/datei on line 33
    .

    Wenn ich die Zuweisung auskommentiere, wird das Skript ausgeführt, jedoch ohne die Datenzuweisung ;). Ich habe genau das selbe Verfahren bereits in einer Hand voll anderer Skripte die einen Ordner weiter liegen und dort funktioniert es einwandfrei.

    Sieht hier vielleicht jemand einen Fehler? Ich hab mittlerweile nur noch Gummibärchen im Kopf :). Achja, ich habs auch schon mit
    versucht. Das bringt auch nix.

    Grüße Jens
     
  2. Tom-i

    Tom-i Eingetragener Provider

    Registriert seit:
    7. Oktober 2004
    Beiträge:
    1.760
    Ort:
    Menden
    Firmenname:
    Serverman
    Anbieterprofil:
    Klick
    AW: Smarty - Array angeblich leer

    nimm mal append und nicht assign.
     
  3. jpfote

    jpfote Erfahrener Benutzer

    Registriert seit:
    25. Juni 2005
    Beiträge:
    967
    AW: Smarty - Array angeblich leer

    Hi Tom,

    danke für den Tipp. Leider hat es mit
    Code:
    	$tpl->append('tabelle', $tabelle);
    auch nicht funktioniert. Ich find's sehr seltsam. Der Fehler besagt ja, dass das Array leer wäre (was es aber nicht ist).

    Trotzdem vielen Dank für den Tip!

    Grüße Jens
     
  4. antondollmaier

    antondollmaier Eingetragener Provider

    Registriert seit:
    19. April 2004
    Beiträge:
    902
    Firmenname:
    ADIT Systems
    Anbieterprofil:
    Klick
    AW: Smarty - Array angeblich leer

    Du willst die Methode "assign" des Objektes "$tpl" aufrufen - welches aber kein Objekt ist.

    Schau mal mit "var_dump($tpl);", was das überhaupt ist (besser als print_r, weil hier noch die Datentypen aufgeführt werden!).
     
  5. jpfote

    jpfote Erfahrener Benutzer

    Registriert seit:
    25. Juni 2005
    Beiträge:
    967
    AW: Smarty - Array angeblich leer

    Hi Anton,

    danke für den Tip.

    Im Array "$tabelle" befinden sich nur Strings. Wenn ich den var_dump vor die Problemzeile setze, ist das Resultat "NULL". Danach geht's nicht, weil die Skriptausführung durch den Fatal-Error abgebrochen wird.

    Grüße Jens
     
  6. antondollmaier

    antondollmaier Eingetragener Provider

    Registriert seit:
    19. April 2004
    Beiträge:
    902
    Firmenname:
    ADIT Systems
    Anbieterprofil:
    Klick
    AW: Smarty - Array angeblich leer

    Der Fehler tritt auch nicht bei $tabelle auf, sondern bei "$tpl".

    Du hast also zum Zeitpunkt der Zeile 33 in $tpl kein Smarty-Klassen-Objekt, sondern NULL. Der Aufruf von "assign()" des Objektes NULL muss also fehlschlagen.

    Schau den Code nochmal durch, ob $tpl überhaupt initialisiert wird. "print_debug_backtrace()" sollte da weiter hilfreich sein.
     
  7. Tom-i

    Tom-i Eingetragener Provider

    Registriert seit:
    7. Oktober 2004
    Beiträge:
    1.760
    Ort:
    Menden
    Firmenname:
    Serverman
    Anbieterprofil:
    Klick
    AW: Smarty - Array angeblich leer

    not needed any more..
     
    Zuletzt bearbeitet: 18. November 2010
  8. jpfote

    jpfote Erfahrener Benutzer

    Registriert seit:
    25. Juni 2005
    Beiträge:
    967
    AW: Smarty - Array angeblich leer

    Hi Tom und Anton,

    vielen Dank für Eure Hilfe. Ich konnte das Problem nun lösen und der Fehler war so extrem sinnlos...

    In meiner inc-Datei wird eine Klasse "smarty" und nicht "tpl" initialisiert ;). Dieser Code funktioniert jetzt:
    Code:
    $tabelle = array();
    while ($row = mysql_fetch_assoc($result))
    { 
    			array_push($tabelle, array(
    			'var1' => $row['spalte1'],
    			'var2' => $row['spalte2'],
    ));}
    $smarty->assign('tabelle', $tabelle); // LOOP
    
    		$smarty->display('anzeige.tpl');
    
    Danke Euch beiden auf jeden Fall nochmal!

    Grüße Jens
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen