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
Wie gesagt die Darstellung funktioniert bereits. Hier ein auszug aus der class.tx_extdata_pi1.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:
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:
$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é