Daten aus externe Datenbank abfragen

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
8_of_20
Mitglied
Beiträge: 12
Registriert: 12.09.2009 22:35

Daten aus externe Datenbank abfragen

Beitrag von 8_of_20 »

OK nachdem ich jetzt seit gut einer Woche an dem Problem tüftle und nicht weiter komme hoffe ich hier einen kleinen Stoß in die richtige Richtung zu bekommen.
Eins jedoch vorweg, ich bin nur ein Hobby Programmierer welcher sich seine Kenntnisse selber beigebracht hat.

Ich möchte Daten aus einer externen Datenbank abfragen und diese in einer Tabelle auf der Startseite des Forums anzeigen. In der 3.0. Version hatte ich dies gelöst, indem ich am Ende der common.php eine Verbindung zu dieser Datenbank aufgebaut, die Daten abgefragt und verarbeitet habe. In der 3.1. wollte ich es jetzt eigentlich genauso machen nur eben als Extension und dachte eigentlich, da ich nicht in die Funktionen des Forums eingreife, wird es bestimmt kein großes Problem...
Ich habe mir die ein oder andere Extension angeschaut und (deutsche) Anleitungen für Extension gelesen.

Ich habe eine composer.json und ext.php erstellt, diese erklären sich eigentlich von selber daher dürfte das Problem nicht hier liegen. Auch den html-Teil einbinden war kein Problem.

Der Fehler dürfte in der event/listener.php liegen. Ich vermute ich muss bei Constructor noch etwas hinzufügen, den ganz ehrlich habe ich keine Ahnung was die einzelnen Teile bewirken/für was sie gut sind.
Mein bisheriger Code

Code: Alles auswählen

<?php

namespace eight\termine\event;

/**
* @ignore
*/
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
* Event listener
*/
class listener implements EventSubscriberInterface
{
    static public function getSubscribedEvents()
    {
        return array(
            'core.common'            => 'load_termine',
        );
    }


    /* @var \phpbb\template\template */
    protected $template;

    /* @var \phpbb\controller\helper */
    protected $helper;

    /**
    * Constructor
    *
    * @param \phpbb\controller\helper    $helper        Controller helper object
    * @param \phpbb\template            $template    Template object
    */
    public function __construct(\phpbb\template\template $template, \phpbb\controller\helper $helper)
    {
        $this->helper = $helper;
        $this->template = $template;
    }


    public function load_termine($event)
    {

$db2 = @mysql_pconnect("...") or
die("Verbindung zur Datenbank ist fehlgeschlagen");
mysql_select_db("Datenbank",$db2);

$query = "select date_unix,Info1,Info2 from Termine order by date_unix LIMIT 0,4";
$result = mysql_query($query);

      while ($row = mysql_fetch_array($result))
      {
            $template->assign_block_vars('termine', array(
        'DATE'        => date("d.m.Y",$row['date_unix']),
        'TIME'        => date("H:i",$row['date_unix']),
        'INFO1'        => utf8_encode($row['Info1']),
        'INFO2'        => utf8_encode($row['Info2'])
          ));

      }
// Get unit data end

mysql_close($db2);
    }
} 
Meine config/services.yml:

Code: Alles auswählen

services:
    eight.termine.listener:
        class: eight\termine\event\listener
        arguments:
            - @template
            - @controller.helper
        tags:
            - { name: event.listener }
Das ganze erzeugt allerdings nur folgende Fehlermeldung:
Fatal error: Call to a member function assign_block_vars() on a non-object in pfad/zum/Forum/ext/eight/termine/event/listener.php on line 62
Ich hoffe es ist wirklich nur eine Kleinigkeit. Denn wenn nicht und mein Ansatz unter Umständen komplett falsch ist, werde ich mich die nächste Zeit wohl oft melden.

Ich habe leider keine Extension gefunden, welche etwas ähnliches macht, also Daten aus einer andreren Datenbank abfragen. Wer so eine kennt, kann sie mir gerne nennen, damit ich etwas als "Schablone" habe um zukünftige Probleme zu vermeiden/selber zu lösen.

Ich sage schon einmal Danke.
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Daten aus externe Datenbank abfragen

Beitrag von tas2580 »

Der Fehler liegt bei

Code: Alles auswählen

 $template->assign_block_vars('termine', array( 
In der Methode ist die Template Klasse nicht bekannt, du hast sie zwar richtig im Construktor eingefügt aber dann musst du innerhalb der Methoden mit $this->template darauf zugreifen.

Code: Alles auswählen

 $this->template->assign_block_vars('termine', array( 
Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Antworten

Zurück zu „Extension Bastelstube“