Ergebnis 1 bis 5 von 5

Thema: Mit Contao auf externe Datenbanken zugreifen

  1. #1
    MB1
    Gast

    Frage Mit Contao auf externe Datenbanken zugreifen

    Hallo zusammen,

    ich habe schon viel recherchiert, bin aber leider bisher nicht weiter gekommen. Ich möchte in Contao auf verschiedene externe Datenbanken zugreifen, diese lesen und bearbeiten.
    Im Sinne von

    HTML-Code:
     $user = '{{user::username}}';
    
     if($user == "A"){ # verbinde mit Datenbank A # } 
     if($user == "B"){ # verbinde mit Datenbank B # }
    Ist dies überhaupt möglich? Ich habe mir schon die parameters.yml und die config.yml angeschaut.

    Über extern eingebundene PHP-Datei bin ich schon fast am Ziel, aber: Fehlermeldung ist "Syntax error or access violation: 1227 Access denied; you need (at least one of) the SUPER privilege(s) for this operation"

    Wir kann ich diese Privilegien bekommen? Ich nutze Version 4.13.2

    Grüße und Danke
    Geändert von MB1 (12.04.2022 um 16:53 Uhr)

  2. #2
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.844

    Standard

    Ich hole mir die DB-Parameter aus System -> Einstellungen, wo ich sie zuvor eingetragen habe (dca/tl_settings.php)
    PHP-Code:
    // Datenbank-Objekt anlegen
    $objDSOLDB = \Database::getInstance(array
    (
        
    'dbHost'     => $GLOBALS['TL_CONFIG']['dsolnews_host'],
        
    'dbUser'     => $GLOBALS['TL_CONFIG']['dsolnews_user'],
        
    'dbPass'     => $GLOBALS['TL_CONFIG']['dsolnews_pass'],
        
    'dbDatabase' => $GLOBALS['TL_CONFIG']['dsolnews_db']
    ));

    // ... und abfragen
    $objDSOL $objDSOLDB->prepare("SELECT * FROM dsb_content")
                         ->
    execute(); 
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  3. #3
    MB1
    Gast

    Standard

    Hallo Frank,
    herzlichen Dank für deine Antwort. Es hat geklappt, du hast mir sehr geholfen.

    Für alle, die das auch interessiert, hier meine Lösung: Ich habe in der system->config->localconfig.php die entsprechenden Zeilen hinzugefügt:

    HTML-Code:
    $GLOBALS['TL_CONFIG']['dsolnews_user'] = "USER";
    (..etc)

    und konnte dann über eine eingebundene .php auf die Datenbank zugreifen.
    Viele Grüße

  4. #4
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.844

    Standard

    Der Variablenname dsolnews_user sollte natürlich geändert werden, also den eigenen Bedürfnissen angepaßt werden. Sonst kollidiert Deine Variable irgendwann mit meiner, wenn ich Deine Erweiterung installiere - oder umgekehrt.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    3.060

    Standard

    Zitat Zitat von MB1 Beitrag anzeigen
    Ich habe mir schon die parameters.yml und die config.yml angeschaut.
    Die config.yml wäre die Möglichkeit, weitere Datenbankverbindungen zu konfigurieren. Bsp.:

    PHP-Code:
    doctrine:
        
    dbal:
            
    default_connection: default
            
    connections:
                default:
                    
    driverpdo_mysql
                    host
    '%database_host%'
                    
    port'%database_port%'
                    
    dbname'%database_name%'
                    
    user'%database_user%'
                    
    password'%database_password%'
                    
    charsetutf8mb4
                foo
    :
                   
    # Konfiguration analog obigem 'default'-Eintrag mit entweder 
                   # direkt angegebenen Daten oder eigenen Parametern, die dann in der parameters.yml gesetzt werden 
    Zugriff auf die "\Doctrine\DBAL\Connection" bekommst Du dann mit

    PHP-Code:
    $connection = \Contao\System::getContainer()->get('doctrine.dbal.foo_connection'); 
    Zur Verwendung der $connection siehe die Doctrine Seiten: https://www.doctrine-project.org/pro...d-manipulation

    Und: Cache neu aufbauen nach Änderungen an den Konfigurationsdateien nicht vergessen!

    Edit: Beispiel korrigiert.
    Geändert von fiedsch (20.04.2022 um 13:47 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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