hallo,
ich möchte neben meiner datenbank mit den contenido tabellen noch weitere datenbanken einbinden (z.b. für einen shop).
wie mache ich das am elegantesten? eine weitere config datei erstellen und im entsprechenden module per include aufrufen?
gruss, V.
mehrere datenbanken in 4.6.15 einbinden
mehrere datenbanken in 4.6.15 einbinden
Si non confectus, non reficiat. (Motto der Vetinaris)
Solange etwas nicht kaputt ist, repariere es nicht.
oder:
Lass die Dinge einfach laufen, die meisten Probleme erledigen sich eh von selbst.
Solange etwas nicht kaputt ist, repariere es nicht.
oder:
Lass die Dinge einfach laufen, die meisten Probleme erledigen sich eh von selbst.
Hallo,
ich weiss zwar nicht, ob das die eleganteste Lösung ist, aber ich habe mir wie folgt geholfen.
Ich musste mich für ein Projekt mit einer Datenbank des xtCommerce - Shops verbinden. Ich habe mir dazu analog der Klasse DB_Contenido die folgende von der DB_SQL abgeleitete Klasse gebaut (datei xtc_db.php):
Außerdem habe ich eine passende config - Datei gechrieben, die (unter anderem) die Login - Parameter aufnimmt.
Wichtig: Man darf nicht mit den gleichen Zugangsdaten wie für die Contenido - DB - Anmeldung arbeiten, weil sich sonst die Datenbanken 'vermischen'. Also unbedingt für die zweite Datenbank einen eigenen Benutzernamen autorisieren, sonst müßte man noch in der DB_SQL() - Klasse herumbauen. (Diese Erkenntnis hat mich 21456 graue Haare gekostet )
Verwenden kann man das dann genauso wie die DB_Contenido:
Mit den Pfadangaben bin ich mir noch nicht so recht sicher, ich habe meine eigenen Erweiterungen alle in einem eigenen Unterordner, ich muss das aber dann bei Umzügen o.ä. immer manuell anpassen.
Besser wäre die ganze Mimik wahrscheinlich in contenido\classes oder so aufgehoben, wo man es per cinclude() 'relativ' einbinden kann. Die Zugangsdaten ($xtc_host usw.) könnte man wahrscheinlich auch sauber in einer config.local.php unterbringen. Bitte mal probieren.
Ich denke, wenigstens das Prinzip wird deutlich.
Grüße
Tino
[/code]
ich weiss zwar nicht, ob das die eleganteste Lösung ist, aber ich habe mir wie folgt geholfen.
Ich musste mich für ein Projekt mit einer Datenbank des xtCommerce - Shops verbinden. Ich habe mir dazu analog der Klasse DB_Contenido die folgende von der DB_SQL abgeleitete Klasse gebaut (datei xtc_db.php):
Code: Alles auswählen
<?php
/*
* Access to XTC - DB (catalog)
*
*
*/
// this is a COPY of DB_Contenido (see local.php)
//require_once('db_mysql.inc');
cInclude("conlib", "db_mysql.inc");
class DB_XTC extends DB_Sql {
var $Host;
var $Database;
var $User;
var $Password;
var $Halt_On_Error = "report";
//Konstruktor
function DB_XTC($Host = "", $Database = "", $User = "", $Password = "")
{
global $xtc_host, $xtc_database, $xtc_user, $xtc_password;
if ($Database)
{
$this->Database = $Database;
} else {
$this->Database = $xtc_database;
}
if ($Host)
{
$this->Host = $Host;
} else {
$this->Host = $xtc_host;
}
if ($User)
{
$this->User = $User;
} else {
$this->User = $xtc_user;
}
if ($Password)
{
$this->Password = $Password;
} else {
$this->Password = $xtc_password;
}
}
function haltmsg($msg) {
error_log($msg);
}
}
?>
Code: Alles auswählen
<?php
/**********************************
* Connection Contenido / xtCommerce
* global config
* Tino Fäustel
* 13.02.2007
**********************************/
global $xtcfg;
/* ---------------------*/
/* Database - Settings */
/* ---------------------*/
/* ATTENTION ! these settings must be different to */
/* the Contenido - login ! Otherwise you get a uncalculated merging */
/* of the db - sessions ; see php manual mysql_connect (,,,[new Connection]) */
$xtc_host = '*****';
$xtc_user = '****';
$xtc_password = '*****';
// weiteres .....
?>
Verwenden kann man das dann genauso wie die DB_Contenido:
Code: Alles auswählen
include({pfad}xtc_config.php);
include({pfad}xtc_db.php);
$xtcdb = new db_xtc;
$xtcdb->query(...)
usw.
Besser wäre die ganze Mimik wahrscheinlich in contenido\classes oder so aufgehoben, wo man es per cinclude() 'relativ' einbinden kann. Die Zugangsdaten ($xtc_host usw.) könnte man wahrscheinlich auch sauber in einer config.local.php unterbringen. Bitte mal probieren.
Ich denke, wenigstens das Prinzip wird deutlich.
Grüße
Tino
[/code]
Für die Freizeit : www.hobbybrauer.de