Daten aus externer DB im Forum anzeigen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
eXestend
Mitglied
Beiträge: 170
Registriert: 04.04.2008 17:47

Daten aus externer DB im Forum anzeigen

Beitrag von eXestend »

Hey Leute, ich habe mal wieder ne Frage, Ich hoffe es nervt nicht ;)

Viele fragen ja, wie sie in Ihre Seite Daten vom phpbb intigrieren, aber interessant wäre auch der andere Weg. also wie bekomme ich Daten einer anderern DB ins Forum, sodass diese überall im phpbb3 verfügbar sind.

LG
Verschoben von phpBB 3.0: Administration und Benutzung nach phpBB 3.0: Mod-Bastelstube am 28.11.2012 13:01 durch Metzle

Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Re: Daten aus externer DB im Forum anzeigen

Beitrag von mad-manne »

Verstehe ich das richtig ... es geht nicht um das Konvertieren eines anderen Forensystems nach phpBB sondern um die Integration anderer Informationen(welche?) in ein bestehendes phpBB-Forum ??

Falls das zutrifft solltest du mehr Infos liefern, damit wir dir weiterhelfen können :roll:
Siehe dazu evtl. auch KB:programmierfragen

Mir fallen dazu schonmal folgende Fragen ein:
  • Sollen bei (bestimmten) Themen / Beiträgen zusätzliche Infos aus zusätzlichen Tabellen ausgelesen und angezeigt werden?
  • Sollen zusätzlichen Infos in den Benutzerprofilen angezeigt werden?
  • Sollen "eigene" Seiten entstehen, auf denen diese zusätzlichen Infos angezeigt werden?
  • Sollen die Informationen nur bestimmten Benutzern / Gruppen angezeigt werden ?
Du siehst ... Fragen über Fragen :D

Gruss,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
eXestend
Mitglied
Beiträge: 170
Registriert: 04.04.2008 17:47

Re: Daten aus externer DB im Forum anzeigen

Beitrag von eXestend »

Ich habe eine Template-Datei angelegt bzw. eine Seite, eine lang und eine Template file, also ne eigene Seite

Da sollen ausgaben einer Datenbank, die auf dem gleichen Server liegt.

Also Datenbank A hat Informationen wie:
Schuhgröße -------------------------- > 100
Haarfarbe --------------------------- > Blau-Grün
Lieblingsessen ---------------------- > Backstein
Gold --------------------------------- > 100.000.000.000.000

Dann gibt es eben Objekte wie: Schuhschrank, Wohnung und Auto

etc.

Diese Informationen möchte ich im PHPbb 3.0.11 auslesen und ausgeben.

Die Daten der Datenbank A sollen überall im phpBB erreichbar sein. z.B. Soll die Schuhgröße immer unter dem Avatar stehen,also bei jedem Beitrag etc.

Lieblingsessen, soll immer in die Signatur.

Die Objekte sind ja voll mit Attributen und Eigenschaften. Also der Schuhschrank hat derzeit 154.486.245 Schuhe.
Der Link zum Schuhschrank soll in die Header File als Link, aber die Daten sollen in einer Templatedatei im Forum ausgegeben werden.

Klicke ich also auf der Webseite "Dubioses", welche zur Datenbank A gehört auf einen Link, öffnet sich dieser normal.

Diese Inhalte möchte ich in Templatedateien im PHPbb ausgeben lassen.

Ich möchte es ja soweit es geht auch allein versuchen, wobei mir durchaus bewusst ist, das dies keine kleine Sache ist, die man mal eben machen. Nur der anfang, also die Verbindung von Datenbank A im phpbb 3 aufzubauen ist erstmal wichtig, das ich überhaupt erstmal schauen kann in wie fern es für mich realisierbar ist.

Ich hoffe, das war halbwegs vernünftig erklärt :p

LG
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Daten aus externer DB im Forum anzeigen

Beitrag von Miriam »

Wieso erstellst Du nicht die weiteren Tabellen anstatt in einer anderen Datenbank in der von phpBB3? Dann folgst Du der Terminologie des phpBB3 und deklarierst die Tabellen in der includes/constants.php und gut is'.
Du kannst dann immer noch mit anderen Scripten auf diese DB zugreifen und Daten ändern / anpassen.

Ansonsten brauchst Du zwei Datenbankverbindungen. Sind die Datenbanken wenigstens auf dem gleichen Server?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
eXestend
Mitglied
Beiträge: 170
Registriert: 04.04.2008 17:47

Re: Daten aus externer DB im Forum anzeigen

Beitrag von eXestend »

Ja, die Datenbanken sind auf dem gleichen Server. Es geht ja nicht um feste Werte, die ich ins phpBB intigrieren möchte. Die Datenbank A ist eigenständig und die Werte werden verändert. Die 2. Datenbank ist ein Browsergame, weswegen ich halt nicht die Tabellen übernehmen kann, da es 1. hunderte sind und 2. ja bedeuten würde das das Spiel neu geschrieben werden müsste.

Ich will halt "nur" :D mir im laufe der Entwicklung des Boards die nötigen Informationen intigrieren die ich brauche :)

Der Plan: Das Spiel, zumindest Ausgaben in das forum intigrieren und das Forum ins Spiel intigrieren, da man dann für das Posten oder Aktiv sein z.B. ingame automatisiert Boni erhalten kann etc.

Dazu ist aber helt die 2 Wege Verbindung nötig. Von DB A zu DB B und von DB B zu DB A


LG

ps: Die Boardzeit stimmt nicht so recht, oder ?

Bei euch ist es 19:20 statt 18:20

LG
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Daten aus externer DB im Forum anzeigen

Beitrag von Miriam »

Du kannst doch aber die Tabellen in ein und derselben DB haben. Das sollte kein Problem sein.
Dann hast Du die Problematik der zwei Verbindungen schon erschlagen.

Du nennst die von phpBB3 mit Präfix dann eben phpbb_ und die des Spiels game_ dann gibst Du noch ein zweites Präfix in der config.php an. Meinetwegen so:

Code: Alles auswählen

$table_prefix = 'phpbb_';
$table_prefix_game = 'game_'; 
Oder lasse es frei, wenn diese kein Präfix haben.

Dann definierst Du die Tabellen in der includes/constants.php und zwar hier:

Code: Alles auswählen

// Additional tables   
Und danch geht es bspw. so weiter:

Code: Alles auswählen

define('GAME_INVENTORY_TABLE',        $table_prefix_game . 'inventory'); 
Nun kannst Du die Daten so ohne weiteres auslesen und die Tabellen für Abfragen mittels JOIN verbinden und alles in das phpBB3-User-Objekt rein stopfen. (Vorausgesetzt, Du hast genug Speicher zugeordnet bekommen.)

Mache also ein Backup Deiner phpBB3 Datenbank und spiele dieses in die Game-DB ein; passe die Daten in der config.php des phpBB3 an... fertig.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
eXestend
Mitglied
Beiträge: 170
Registriert: 04.04.2008 17:47

Re: Daten aus externer DB im Forum anzeigen

Beitrag von eXestend »

Cool, ich schau mal ob es geht bzw. das den Spielbetrieb nicht gefährden würde.

Interessant wäre ja dabei, wie ich mit dem Join die Verbindung aufbaue. Gibt da da im Wiki eine Beispielverbindung ?

ps:
Wenn es nicht klappt, auch wegen der anderen Admins, muss ich leider trotzdem nochmal auf die 2. Verbindung zurück greifen.

LG
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Daten aus externer DB im Forum anzeigen

Beitrag von Miriam »

Das klappt...

Join zwischen Tabellen sollte wenn phpBB3 konform in dieser Art aufgebaut werden:

Code: Alles auswählen

$sql_array = array(
    'SELECT'    => 'f.*, ft.mark_time',

    'FROM'      => array(
        FORUMS_WATCH_TABLE  => 'fw',
        FORUMS_TABLE        => 'f'
    ),

    'LEFT_JOIN' => array(
        array(
            'FROM'  => array(FORUMS_TRACK_TABLE => 'ft'),
            'ON'    => 'ft.user_id = ' . $user->data['user_id'] . ' AND ft.forum_id = f.forum_id'
        )
    ),

    'WHERE'     => 'fw.user_id = ' . $user->data['user_id'] . '
        AND f.forum_id = fw.forum_id',

    'ORDER_BY'  => 'left_id'
);

$sql = $db->sql_build_query('SELECT', $sql_array);

// now run the query...
$result = $db->sql_query($sql);
Siehe hier: Klick
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Daten aus externer DB im Forum anzeigen

Beitrag von BNa »

eXestend hat geschrieben:ps: Die Boardzeit stimmt nicht so recht, oder ?

Bei euch ist es 19:20 statt 18:20
Deine Userzeit stimmt nicht > UCP > Sommerzeit > Nein
eXestend
Mitglied
Beiträge: 170
Registriert: 04.04.2008 17:47

Re: Daten aus externer DB im Forum anzeigen

Beitrag von eXestend »

Also es geht leider nicht anders, es muss so funktionieren, das eine Verbindung zu dieser DB aufgebaut werden muss. Extern.

Das Problem von oben besteht also noch. Es muss eine Verbindung zu einer anderen DB aufgebaut werden, die auf dem gleichen Server liegt um die Daten da dem gesamten Forum zur Verfügung zu stellen.

Wäre es in dieser Art möglich, das ins phpbb3 zu integrieren:

Code: Alles auswählen

$db = mysql_connect('localhost', 'user', 'password'); 
mysql_select_db('my_database', $db); 
mysql_query('SELECT * FROM `table`', $db); 
mysql_close($db); 
Es ist ja an und für sich kein direkter externe Zugriff auf die DB. Sie liegt ja auf dem gleichen Server. statt die db "Forum" soll halt noch die DB "Spiel" angesprochen werden.

Aber es klingt wohl wieder leichter wie es am Ende ist ;) ^^
Ich hoffe da hat jemand noch etwas im Petto.
LG

Habe Folgende Prinzipielle Verbindung aufgebaut, indem ich im Forenordner eine entsprechende File angelegt habe:

Code: Alles auswählen

<?php 
error_reporting(E_ALL);

define ( 'MYSQL_HOST',      'localhost' );
define ( 'MYSQL_BENUTZER',  'BENUTZER' );
define ( 'MYSQL_KENNWORT',  'KENNWORT' );
define ( 'MYSQL_DATENBANK_A', 'dba_name' );
define ( 'MYSQL_DATENBANK_B', 'dbb_name' );
 
$db_link = mysql_connect (MYSQL_HOST, 
                          MYSQL_BENUTZER, 
                          MYSQL_KENNWORT);
 
if ( $db_link )
{
    echo 'Verbindung erfolgreich: ';
    echo $db_link;
}
else
{
    die('keine Verbindung möglich: ' . mysql_error());
}


// ######################################################################### //
//                                    DB 1                                     //
// ######################################################################### //
$db_sel = mysql_select_db( MYSQL_DATENBANK_A )
   or die("Auswahl der Datenbank fehlgeschlagen");
 
$sql = "SELECT * FROM phpbb_users";
 
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}
 
echo '<table border="1">';
echo "<tr>";
echo "<td>Benutzer-ID_phpbb</td>";
echo "<tr>";
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['user_id'] . "</td>";
  echo "</tr>";
}
echo "</table>";
 
mysql_free_result( $db_erg );

// ######################################################################### //
//                                    DB 2                                     //
// ######################################################################### //
$db_sel = mysql_select_db( MYSQL_DATENBANK_B )
   or die("Auswahl der Datenbank fehlgeschlagen");
 
$sql = "SELECT * FROM users";
 
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}
 
echo '<table border="1">';
echo "<tr>";
echo "<td>Benutzer-ID_gigra</td>";
echo "<tr>";
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['id'] . "</td>";
  echo "</tr>";
}
echo "</table>";
 
mysql_free_result( $db_erg );



// ######################################################################### //
//                                Close SQL                                     //
// ######################################################################### //
mysql_close($db_link );

?>
Das müsste ja jetzt in das PHPBB mit intigriert werden, das man überall darauf zugreifen kann oder ?

Und: Wie könnte ich in diesemfall z.B. in der functions.php die entsprechende db ansprechen ?

Wäre schön, wenn ihr mir ein Beispiel geben könntet, wie ich z.B. in einer eigenen Templatefile (also lala.php, lala.html, lala_lang.php - das Template ist schon da) eine Verbindung auf zu bauen und denn aus der 2. Datenbank alle User aus zu lesen, die daten liegen in db_b, USERS


LG
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“