---
title: "Extension: Typo3-DB und Fremdtabelle nutzen"
url: "https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Datenbank","Frage","TCA"]
created: "2006-08-25"
last_reply: "2006-09-11"
replies: 4
solved: false
page: 1
pages: 1
lang: "de"
---

# Extension: Typo3-DB und Fremdtabelle nutzen

Extensions › Entwicklung · 4 Antworten · gestartet 2006-08-25

## Eröffnungsbeitrag

**crimson** · 2006-08-25 · [Beitrag #1](https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen/1)

Hallo zusammen,

ich habe die Suchfunktion benutzt und verschiedene Threads zum Thema der Nutzung Typo3fremder-Datenbanken und -Tabellen gefunden. Leider hilft mir keiner dieser Threads weiter, genauso wenig wie die Dokumentationen zu dem Thema. #angry#  Deswegen dieser Thread:
Achtung das könnte etwas länger werden...

Ich möchte Daten einer externe Datenbank in Typo3 editieren und auch darstellen. Dazu habe ich adodb, datasource und Database Abstraction Layer installiert. Darstellen kann ich die Daten mittlerweile auch aber bei editieren haperts.

So stelle ich mir das Modell vor:
[Bild: nunet.de/…/datamodell.gif](http://www.nunet.de/site2005/img/t3netetxtdatathread/datamodell.gif)

Wie gesagt die Darstellung funktioniert bereits. Hier ein auszug aus der class.tx_extdata_pi1.php:

```php
	$this->conf=$conf;		// Setting the TypoScript passed to this function in $this->conf
	$this->pi_setPiVarDefaults();
	$this->pi_loadLL();		// Loading the LOCAL_LANG values
		
	global $TYPO3_DB;

	$res = $TYPO3_DB->exec_SELECTquery(
	'*',
	'Filme',
	'id < \'150\''
	);
		  
	$this->internal['currentTable'] = 'Filme';
	$fullTable='';	// Clear var;
			
	// Adds the whole list table
	$fullTable.=$this->pi_list_makelist($res);
	
	// Adds the result browser:
	$fullTable.=$this->pi_list_browseresults();
	
	// Returns the content from the plugin.
	return $fullTable;
```

...den Rest kennt Ihr ja.

Das Formular zur Editierung habe ich auch im BackEnd fertig.
ext_tables.php:

```php
if (!defined ('TYPO3_MODE')) 	die ('Access denied.');

t3lib_div::loadTCA('tt_content');
$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key';

t3lib_extMgm::addPlugin(array('LLL:EXT:extdata/locallang_db.xml:tt_content.list_type_pi1', $_EXTKEY.'_pi1'),'list_type');

if (TYPO3_MODE=="BE")	$TBE_MODULES_EXT["xMOD_db_new_content_el"]["addElClasses"]["tx_extdata_pi1_wizicon"] = t3lib_extMgm::extPath($_EXTKEY).'pi1/class.tx_extdata_pi1_wizicon.php';

t3lib_extMgm::addToInsertRecords("Filme");

$TCA["Filme"] = Array (
	"ctrl" => Array (
	'title' => 'LLL:EXT:extdata/locallang_db.xml:Filme',		
	'label' => 'uid',	
	'tstamp' => 'tstamp',
	'crdate' => 'crdate',
	'cruser_id' => 'cruser_id',
	"default_sortby" => "ORDER BY titel",	
	"dynamicConfigFile" => t3lib_extMgm::extPath($_EXTKEY)."tca.php",
	"iconfile" => t3lib_extMgm::extRelPath($_EXTKEY)."icon_tx_extdata_test.gif",
	),
	"feInterface" => Array (
	"fe_admin_fieldList" => "ID,titel,edi",
	)
);
```

und natürlich tca.php:

```php
$TCA["Filme"] = Array (
"ctrl" => $TCA["Filme"]["ctrl"],
"interface" => Array (
	"showRecordFieldList" => "ID,titel,edi"
),
"feInterface" => $TCA["Filme"]["feInterface"],
"columns" => Array (
	"ID" => Array (		
		"exclude" => 1,		
		"label" => "LLL:EXT:extdata/locallang_db.xml:Filme.ID",		
		"config" => Array (
			"type" => "input",	
			"size" => "30",	
			"eval" => "trim",
		)
	),
	"titel" => Array (		
		"exclude" => 1,		
		"label" => "LLL:EXT:extdata/locallang_db.xml:Filme.titel",		
		"config" => Array (
			"type" => "input",	
			"size" => "30",	
			"eval" => "trim",
		)
	),
	"edi" => Array (		
		"exclude" => 1,		
		"label" => "LLL:EXT:extdata/locallang_db.xml:Filme.edi",		
		"config" => Array (
			"type" => "input",	
			"size" => "30",	
			"eval" => "trim",
		)
	),
),
"types" => Array (
	"0" => Array("showitem" => "ID;;;;,titel,edi")
),
"palettes" => Array (
	"1" => Array("showitem" => "")
)
);
```

Leider bekomme ich beim speichern immer folgende Fehlermeldung:

> |Table 'externeDB.pages' doesn't exist|
> |Table 'externeDB.pages' doesn't exist|

Ich nehme also an, dass er versucht in der pages-Tabelle, das last_update-Feld o.ä. für für den Systemfolder (pid = 3) zu editieren. Kann ich das ausschalten oder wie kann ich Ihm sagen, das die Tabelle pages nicht in der DB "externeDB" zu finden ist (wie kommt der da überhaupt drauf?)? Wenn ich die Tabelle pages in die externeDB dubliziere kommen zwar keine Fehlermeldungen mehr, es wird aber auch nicht in die Tabellen geschrieben.

Habe ich einen Grundsätzlichen Fehler in meinen Überlegungen oder in meinen Scripten? Ich hoffe Ihr könnt mir helfen, denn ich bin mit meinem Latein am Ende.

Viele Grüße aus Köln
der André

## Antworten

### [#2](https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen/2) · crimson · 2006-09-01

Hallo zusammen,

danke für die rege Beteiligung   ;)

Ich hab das Ganze nun fast fertig. Einziges Problem: T3 sucht beim editieren in der externen Tabelle zwei interne Tabellen (pages und sys_refindex) in meiner Externen DB...

[Hier](http://www.typo3forum.net/forum/extension-modifizieren-oder-neu-erstellen/16564-fremddatenbank-nutzen.html) habe ich das Ganze dokumentiert bzw. diskutuert.

Viele Grüße
der André

### [#3](https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen/3) · crimson · 2006-09-08

So ich hab's geschafft. Ich kann dazu nur sagen: "Wer lesen kann ist klar im Vorteil".

Folgender Codeschnipsel war nicht nur überflüssig, sondern hat das Ganze korrumpiert:

```php
$TYPO3_CONF_VARS['EXTCONF']['dbal']['handlerCfg'] = array (
         '_DEFAULT' => array (
             'type' => 'adodb',
             'config' => array(
                 'driver' => 'mysql',
             )
         )
     );
```

Dieser Schnipsel macht die default Datenbankverbindung zu einer adodb Verbindung. Was ja nu in meinem Fall überhaupt nicht nötig bzw. gar nicht gewünscht war. (Für die die lesen können, steht das aber auch in der Doku zu dbal... )

Außerdem ist es überhaupt nicht nötig "datasource" zu installieren. "ADOdb" und "dbal" sind vollkommen ausreichend. Das Mapping habe ich auch wieder rausgenommen, da ich die Felder in der externen DB unbenennen kann. Da ich keine Ahnung habe, wie stark die Performance unter dem Mapping leidet, hab ich es lieber wieder raus genommen.

Viel Spaß beim experimentieren

### [#4](https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen/4) · steffenk · 2006-09-11

Hi crimson,

die hohe Beteiligung ist wohl auf den Umstand zurückzuführen, das kaum einer diese Anforderung *im Moment* hat. Da das aber schnell passieren kann, verpflanze ich Deinen Thread in die HowTos - Dank für die Auflösung ;)

Ich habe den Titel so abgeändert, das man schneller versteht worum es geht.

### [#5](https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen/5) · crimson · 2006-09-11

Hallo Steffen,

alles klar, ich hoffe die nach mir folgenden brauchen nun nicht mehr so lange für diese Geschichte #angry# . Schön wären sicherlich noch einige Performancetests mit und ohne Mapping aber dafür fehlt mir gerade die Zeit. Eine Liste der DBAL-Kompatiblen Extensions wäre natürlich auch toll. Gerade für größere Sites wie mein Cineplex.de ist es sicher interessant mal ein wenig mit Oracle zu experimentieren, denn ich denke irgendwann stößt MYSQL halt doch an seine Grenzen. Alles in allem ein tolles und machtiges Werkzeug, das den Enterprise Charakter von Typo3 noch mal deutlich hervor hebt.

Viele Grüße
der André

---

Quelle: „Extension: Typo3-DB und Fremdtabelle nutzen“, typo3.net, https://www.typo3.net/d/48799-extension-typo3-db-und-fremdtabelle-nutzen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
