22 Mai 2012, 09:15:08 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Prestashop Modul mit anderer Datenbank verbinden  (Gelesen 5406 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Whiteflash
Newbie
*
Beiträge: 3



« am: 27 Mai 2011, 14:41:17 »

Hallo Leute!

Ich bin gerade dabei, mir mit Hilfe eines Tuts aus'm Netz ein Modul zu erstellen. Hat auch geklappt, ich kann das Modul installieren, im BackOffice Texte eingeben, etc. Nun würde ich aber gerne Informationen aus einer externen Datenbank in einem Modul darstellen.
Bislang habe ich herausgefunden, dass in der Datei "Db.php" eine Klasse DbCore (oder ähnlich) existiert, in der ich auch schon mal meine Datenbank als Slave eingetragen habe.

Was ich aber leider gar nicht nachvollziehen kann ist, mit welchem Aufruf aus meinem Modul ich einen Wechsel der Datenbank (also verwendung des Slave) erreichen kann Huch

Hat mir da jemand einen Hinweis? Gibt's dafür evtl auch ein Tut?

Liebe Grüße,

Basti
facebook-like.png Gespeichert
Whiteflash
Newbie
*
Beiträge: 3



« Antworten #1 am: 03 Juni 2011, 15:12:31 »

Hallo an alle!

Konnte mein Problem lösen!  Grinsend

Falls es jemand hilft:

1) in der Datei ...\classes\db.php
Code:
protected static $_servers = array(
array('server' => _DB_SERVER_, 'user' => _DB_USER_, 'password' => _DB_PASSWD_, 'database' => _DB_NAME_), /* MySQL Master server */
/* EDIT: Hier die Slave-Server eintragen:*/
array('server' => _DB_SERVER_, 'user' => 'Uxxxxx', 'password' => 'xxx', 'database' => 'DBxxxxx'),
/*array('server' => '192.168.0.3', 'user' => 'myuser', 'password' => 'mypassword', 'database' => 'mydatabase'),
*/
);

2) in der gleichen Datei die Funktion anpassen
Code:
public static function getInstance($master = 1)
{
                /* Funktion gibt eine Instanz einer DB-Connection zurück */

                if ($master == 0)
                        $idServer = 0;
                elseif ($master > 1)
                        $idServer = $master - 1;
                elseif ($master OR ($nServers = sizeof(self::$_servers)) == 1)
$idServer = 0;
else
$idServer = ($nServers > 2 AND ($id = ++self::$_idServer % (int)$nServers) !== 0) ? $id : 1;
               
if(!isset(self::$_instance[$idServer]))
                        /* hier wird die DB-Connection neu gesetzt, wenn die Instanz keine solche repräsentiert */
self::$_instance[(int)($idServer)] = new MySQL(self::$_servers[(int)($idServer)]['server'], self::$_servers[(int)($idServer)]['user'], self::$_servers[(int)($idServer)]['password'], self::$_servers[(int)($idServer)]['database']);

return self::$_instance[(int)($idServer)];
}

Zur Verwendung der Slave-DB dann den Aufruf ' ...= Db::getInstance(2)' verwenden - das war's schon.

So long, schöne Grüße,

Basti
facebook-like.png Gespeichert
Tags: database  datenbank  Modul  db.php 
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  


Powered by SMF 1.1.16 | SMF © 2006, Simple Machines | Impressum | Datenschutz
Seite erstellt in 0.045 Sekunden mit 20 Zugriffen.