Anbindung externer Datenbank
Eingetragen von t.sebesta (72)
am 24.08.2007 - 18:37 Uhr in
am 24.08.2007 - 18:37 Uhr in
Ich möchte eine externe Datenbank an Drupal anbinden um Daten daraus in Drupal anzuzeigen.
Hat jemand mit sowas Erfahrung und kann mir einen Tipp geben wie ich das am besten angehe?
Ziemlich grundsätzlich, aber mit Drupal hab ich noch keine Erfahrungen.
Gruß
Thomas
- Anmelden oder Registrieren um Kommentare zu schreiben
db_set_active()
am 24.08.2007 - 22:31 Uhr
Auf d.o. (http://drupal.org/node/18429) gibts eine Kurzanleitung, wie man grundsätzlich auf mehrere Datenbanken gleichzeitig zugreifen kann. Wenn Du in Deiner settings.php weitere Datenbanken angegeben hast, rufst Du einfach db_set_active() auf, um auf eine andere Datenbank zu wechseln. Der Rest des Codes ist dann genauso, als würdest Du direkt mit der Drupal-DB arbeiten.
Wenn Du mit der Anleitung nicht zurechtkommst, kannst Du ja nochmal nach Details fragen ;)
Gut, soweit klar. Wenn ich
am 28.08.2007 - 11:09 Uhr
Gut, soweit klar.
Wenn ich aber die Datenbank mit einem eigenen Modul anbinden möchte (damit man eben drupal mit und ohne betreiben kann), kann ich diese Variable auch im Modul setzen? Sonst müsste ich ja immer die settings.php bearbeiten wenn ich das Modul installiere.
Bzw. sind Variable die in einem Modul deklariert werden öfentlich, damit ich die Variablen auch in Untermodulen verwenden kann?
Gruß
Thomas
Wrapper-Funktion
am 28.08.2007 - 11:54 Uhr
Wenn Du Dir die Funktion db_set_active() anschaust (http://api.drupal.org/api/function/db_set_active), wirst Du feststellen, dass $db_url eine globale Variable ist, die in settings.php definiert wird. Du kannst also $db_url vor dem Aufruf von db_set_active() modifizieren. Erstell Dir z.B. eine Wrapper-Funktion, wie ...
<?php
function _mymodule_db_set_active($name) {
global $db_url;
$db_url['default'] = $db_url;
$db_url['mydb'] = '...' // oder
$db_url['mydb2'] = unserialize(variable_get('mydb2', '...'));
db_set_active($name);
}
?>
sind Variable die in einem Modul deklariert werden öfentlich, damit ich die Variablen auch in Untermodulen verwenden kann?
Bin mir nicht sicher, was Du damit meinst. Drupal kapselt Module ja nicht in Klassen, von daher gibts kein 'im Modul'. Was ist bei Dir ein Untermodul? Grundsätzlich kannst Du natürlich immer eine global Variable verwenden! Best practice ist das aber nicht ...