Daten von Externer Datenbank

Hi,

mit Bezug auf: http://forum.oxid-esales.com/showthread.php?p=147791#post147791
Frage ich nochmal im Entwickler Forum.

Ich will Daten von anderen Datenbank laden(die Datenbank liegt auf dem selben mySql Server wie die Oxid DB). Damit ich möglichst bei der selben Oxid Syntax bleibe, und nichts neues basteln muss, hätte ich gern die Datenbank Parameter beim Object erzeugen ($db = oxDb::getDb()) angegeben.

Leider läßt sich oxDb.php nicht überladen, laut der Doku im Wiki.

Also war mein nächster Gedanke, einfach mit der “Brechstange” ranzugehen, sich oxDb.php zu kopieren ins eigene Modul und dabzuändern.
Alle:
$_oDB wurden $_wDB
$oDB wurden $wDB

Der class name wurde auf “waDb” geändert und dementsprechend alle aufrufe in der Datei.
Ansonsten wurde nur die Funktion getDb wurde geändert um die neuen Datenbank parameter übergeben zu können.

Im Shop habe ich ein paar test Sql querys getätigt mit meinem neuen Datenbank Connection Object. und das Ergebniss in eine Datei schreiben lassen. Die SQL Queries funktionieren auch, leider bekomme ich folgenden Fehler:


PHP Notice:  Trying to get property of non-object in /srv/www/htdocs/application/components/oxcmp_shop.php on line 50

Wenn ich keine Datenbank Parameter beim Object aufruf angebe so das meine waDb Klasse sich wie oxDb verhält ist der Fehler weg.
Habe die Datei mal angehängt.

Hat jemand eine Ahnung wo mein Fehler liegt? Oder habe ich vielleicht sogar die Falsche herangehensweise, und das ganze läßt sich nciht so einfach lösen?

Also nach eineigen rumprobieren bin ich dazu übergegangen mir den Verbindugnsaufbau selber zu schreiben (also adodb.inc.php included) und dann folgendes gemacht:


$db = NewADOConnection('mysql');
$db->Connect($mysqlhost, $mysqluser, $mysqlpwd, $mysqldb);

Mit dem Ausgang das ich den selben Fehler geworfen bekomme:


PHP Notice:  Trying to get property of non-object in /srv/www/htdocs/application/components/oxcmp_shop.php on line 50

Kann es sein das ich mit der 2. Verbindung zu einer anderen Datenbank, die Verbindung zur Oxid Datenbank kappe?

Probier mal PConnect oder NConnect.

Sehr geil! Sowohl PConnect als auch NConnect hat funktioniert.
Mit meiner 1. und 2. Methode.

Eine Frage habe ich jetzt dennoch:


$myConfig = oxRegistry::getConfig();
$sIncPath = $myConfig->getConfigParam( 'sShopDir' );
require_once($sIncPath . '/modules/wa_tecdoc/wadb.php');


require_once(getShopBasePath() . 'modules/wa_tecdoc/wadb.php');

Die Obere von den beiden include Methoden scheint nur sporadisch zu funktionieren in meiner config_inc.php (und selbst wenn Sie mal funktioniert schreibt er mir als Fehler:
PHP Fatal error: Class ‘oxRegistry’ not found in…)

Die untere Methode Funktioniert gar nicht.
Ich steh gerade auf dem Schlauch wo der Fehler ist. (Zumal ich die obere Methode in meinen anderen Dateien ohne Probleme benutze)

Dann habe ich mir angeschaut wie es das PayPal modul macht. Also meine config_inc.php mit in die Metadata unter Files aufgenommen (geschaut das mein Modul noch aktiv ist) und die getShopBasePath() Methode benutzt.
Welcheaber immernoch nicht funktioniert und folgenden Fehler ausspuckt:
PHP Fatal error: Call to undefined function getShopBasePath()…

[B]NACHTRAG: Das Problem mit dem include hat sich in Luft aufgelöst, nachdem ein Problem an anderer Stelle behoben habe.[/B]

Nochmals Danke leofonic!