Ergebnis 1 bis 6 von 6

Thema: Zweite, externe Datenbank mit Lesezugriff einbinden

  1. #1
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard Zweite, externe Datenbank mit Lesezugriff einbinden

    Ein fröhliches Hallo in die Runde/ Community :-)

    Ich möchte gerne folgendes Problem lösen. Ich brauche Lesezugriff auf eine zweite externe Datenbank, die auf einem fremden Server liegt. Die erforderlichen Daten für eine Verbindung liegen mir vor, nur fehlt mir das Wissen, um diese in Contao einzubinden. Ich verwende für mein Projekt die Contao-Version 3.0.3 und ich habe auch schon eine Menge zu meinem Anliegen hier gefunden. Mein Ziel ist es Daten im Frontend auszugeben und ich kann die Daten nicht in die bestehende Datenbank integrieren.
    Mit der Erweiterung OtherDatabase kann ich nichts anfangen, da diese nicht für die Version 3 ausgelegt ist. Dabei bin ich mir aber auch nicht ganz sicher. Darüber hinaus habe ich in einem anderen Thread gelesen, dass in Contao 3 die Möglichkeit zum Einbinden einer zweiten Datenbank gewährleistet ist und auch leichter umzusetzen ist.

    Mit der Modulentwicklung habe ich mich ebenfalls befasst und das tolle Tutorial hier durchstöbert. Eventuell ist es in meinem Fall besser ein Modul zu entwicklen. Das kann ich leider noch nicht genau absehen, da ich nicht weiß, wie ich die Datenbank einbinden könnte.

    Bin für jeden Hinweis sehr dankbar.

    Gruß,
    Georg

  2. #2
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    $objDB Database::getInstance(array(
                
    'dbHost'     => 'localhost',
                
    'dbUser'     => 'someuser',
                
    'dbPass'     => 'somepass',
                
    'dbDatabase' => 'otherdb',
    ));

    $objFoo $objDB->prepare('SELECT .....')->execute(); 
    Das sollte dir helfen.

    Gruss
    Chris
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  3. #3
    Contao-Nutzer
    Registriert seit
    29.03.2012.
    Beiträge
    60

    Standard

    Hi Chris, danke für deine Hilfe, genau das habe ich gesucht. Aus irgendeinem Grund, musste ich noch einen "\" hinzufügen...

    PHP-Code:
    objDB = \Database::getInstance(array( 
                
    'dbHost'     => 'localhost'
                
    'dbUser'     => 'someuser'
                
    'dbPass'     => 'somepass'
                
    'dbDatabase' => 'otherdb'
    )); 

    $objFoo $objDB->prepare('SELECT .....')->execute(); 
    Danke!

  4. #4
    Contao Core-Team
    Association Vorstand
    Avatar von andreas.schempp
    Registriert seit
    15.06.2009.
    Ort
    Lyss
    Beiträge
    5.613
    Partner-ID
    8667
    Contao-Projekt unterstützen

    Support Contao

    Standard Zweite, externe Datenbank mit Lesezugriff einbinden

    Sehr cool, da hat sich mein Pull Request ja gelohnt
    terminal42 gmbh
    Wir sind Contao Premium-Partner! Für Modulwünsche oder Programmierungen kannst du uns gerne kontaktieren.
    Hilfe für Isotope eCommerce kann man auch kaufen: Isotope Circle

  5. #5
    Contao-Fan Avatar von bekanntmacher
    Registriert seit
    13.08.2009.
    Ort
    St. Gallen, Schweiz
    Beiträge
    354
    Partner-ID
    6419

    Standard

    Ich habe Probleme eine zweite DB-Verbindung aufzubauen.

    In möchte dies in einem Backend-Modul tun. So habe ich es gemacht:

    PHP-Code:
    class CSListProducts extends \BackendModule
    {


        protected 
    $strTemplate 'be_cs';

        protected 
    $dbHost 'localhost';
        protected 
    $dbUser 'root';
        protected 
    $dbPass 'root';
        protected 
    $dbDatabase 'cs';


        protected function 
    compile()
        {

            
    $objCsDB = \Database::getInstance(array(
                
    'dbHost'     => $this->dbHost,
                
    'dbUser'     => $this->dbUser,
                
    'dbPass'     => $this->dbPass,
                
    'dbDatabase' => $this->dbDatabase,
            ));
         }


    Dieser Code wirft mir aber eine Exception. Table 'cs.tl_theme' doesn't exist… Es scheint als überschreibe ich das Contao DB Objekt was mir aber überhaupt nicht einleuchtet.

    Besten Dank für die Hilfe und Gruss

  6. #6
    Contao-Fan Avatar von bekanntmacher
    Registriert seit
    13.08.2009.
    Ort
    St. Gallen, Schweiz
    Beiträge
    354
    Partner-ID
    6419

    Standard

    PHP-Code:
    class CSListProducts extends \BackendModule 



        protected 
    $strTemplate 'be_cs'

        protected 
    $dbHost 'localhost'
        protected 
    $dbUser 'root'
        protected 
    $dbPass 'root'
        protected 
    $dbDatabase 'cs'


        protected function 
    compile() 
        { 

            
    $objCsDB = \Database::getInstance(array( 
                
    'dbHost'     => $this->dbHost
                
    'dbUser'     => $this->dbUser
                
    'dbPass'     => $this->dbPass
                
    'dbDatabase' => $this->dbDatabase
            )); 
            


        
            
    $objMyDB->setDatabase('contaoDB');
          

         } 



Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •