Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Mit Contao auf externe Datenbanken zugreifen

  1. #1
    Contao-Nutzer
    Registriert seit
    12.04.2022.
    Beiträge
    2

    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 15:53 Uhr)

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

    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
    Contao-Nutzer
    Registriert seit
    12.04.2022.
    Beiträge
    2

    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.794

    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
    2.942

    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 12: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)

Lesezeichen

Lesezeichen

Berechtigungen

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