Seite 1 von 2

Datenbank Abfrage von phpBB

Verfasst: 21.05.2009 14:54
von andybabe
Ich habe mich in meinem Thread zum Thema "Page und Forum verbinden" für die Methode Page in phpBB integrieren entschieden. Klappt wunderbar. Allerdings stellt sich mir die Frage, wie kann ich andere Tabellen mit hinzu nehmen. Also ich habe einmal die Standardtabellen und möchte gerne noch weitere dazu nehmen.

Theoretisch könnte ich ja eine neue Datenbank Verbindung in einer extra Datei machen, mit der ich dann auch arbeiten kann. Aber irgendwie ist das nicht so Sinnvoll, wenn phpBB sich eh schon mit der DB verbindet.

Hat vielleicht jemand ne Ahnung? Falls es jemanden interessiert, mit welchem Script ich arbeite:

http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten

Re: Datenbank Abfrage von phpBB

Verfasst: 23.05.2009 01:25
von andybabe
Weiß keiner, wie ich das machen kann?

Re: Datenbank Abfrage von phpBB

Verfasst: 23.05.2009 09:00
von mad-manne
Naja ... am einfachsten legst du die gewünschte(n) Tabelle(n) mit einem passenden Tool(z.B.: KB:phpmyadmin) an und machst sie deiner phpBB-Installation dann "bekannt", indem du sie in der Datei includes/constants.php im Abschnitt

Code: Alles auswählen

// Additional tables
einträgst ...

Also z.B.:

Code: Alles auswählen

define('CUSTOM_TABLE', $table_prefix . 'custom_table');
Dann kannst du auf deine Tabelle(n) in der gleichen Weise wie phpBB das mit den "eigenen" macht zugreifen, also z.B.:

Code: Alles auswählen

$sql = "SELECT field1, field2 FROM " . CUSTOM_TABLE . " ...
Gruss,
Manne.

P.S. Verschoben nach phpBB 3.0: Mod-Bastelstube

Re: Datenbank Abfrage von phpBB

Verfasst: 23.05.2009 09:32
von nickvergessen
Sofern keine Variablen in der SQL Abfrage direkt vorkommen, sollten die " mit einfachen ' ersetzt werden ;)

Code: Alles auswählen

$sql = 'SELECT field1, field2 FROM ' . CUSTOM_TABLE . ' ...
siehe auch http://area51.phpbb.com/docs/coding-guidelines.html#sql

Re: Datenbank Abfrage von phpBB

Verfasst: 24.05.2009 18:06
von andybabe
1. Danke, habe das Problem selbst lösen können. Hatte es nur vergessen zu sagen, sorry.

2. Ganz so Ahnungslos bin ich nicht, wenn es um PHP und MySQL geht ;) Deshalb wusste ich das mit sql schon. Ich hoffte da nur, einen kompletten Code zu erhalten, mit dem ich arbeiten kann, weil es irgendwie nicht klappen wollte. Aber nach dem ich etwas rum probiert habe, kam ich zu folgendem Ergebnis:

Code: Alles auswählen

		$sql = "SELECT
			*
		FROM
			".$v2."
		WHERE
			site = '".$_GET[$v1]."'";
		
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result)) {
			
			$inhalt = $row['inhalt'];
			$titel = $row['Titel'];
	
	}
	
$db->sql_freeresult($result);

Re: Datenbank Abfrage von phpBB

Verfasst: 24.05.2009 18:14
von Gumfuzi
Hallo,

"$_GET" direkt (ungeprüft) in eine SQL-Abfrage einzubauen ist gefählich.

Es gibt in phpBB3 eine Funktion request_var(), welche unbedingt verwendet werden sollte. Des weiteren solltest Du die so erhaltene Variable auf gültige Inhalte prüfen, um nicht dann eine Fehlermeldung zu erhalten, wenn ein falscher Inhalt übergeben wird.

Re: Datenbank Abfrage von phpBB

Verfasst: 25.05.2009 13:16
von andybabe
Alles klar. Dankeschön, werde es dann gleich so umbauen :grin:

Re: Datenbank Abfrage von phpBB

Verfasst: 25.05.2009 22:03
von Boecki91
Gumfuzi hat noch etwas wichtiges vergessen:

Code: Alles auswählen

$db->sql_escape($_eine_mit_request_var_geholte_variable);
Nur dann sind deine String-Variablen sicher.

Re: Datenbank Abfrage von phpBB

Verfasst: 26.05.2009 12:21
von andybabe
So, die $_GET Variable habe ich jetzt in request_var() eingebaut, also request_var($_GET[''}).

Mir stellt sich aber die Frage, wo ich das mit $db->sql_escape machen soll. Also wie ich das einbauen soll.

Re: Datenbank Abfrage von phpBB

Verfasst: 26.05.2009 12:37
von oxpus
Hallo,
andybabe hat geschrieben:So, die $_GET Variable habe ich jetzt in request_var() eingebaut, also request_var($_GET[''}).
So wäre das auch falsch.

Wenn dann schon so:

Code: Alles auswählen

$v = request_var('name_des_formularfeldes', '');
$db->sql_escape($v);