Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

Daten aus MySQL-Datenbank anzeigen

Eingetragen von ksander (20)
am 25.03.2009 - 17:32 Uhr in
  • Anfängerfragen

Hallo zusammen,
ich habe eine MySQL-Datenbank auf dem gleichen Server wie Drupal.
Darauf sind für für Maschinen Detaildaten abgelegt.
Ich möchte nun auf die Datenbank zugreifen gezielt mit dem Schlüssel einer Maschine
($sql = 'SELECT `MAS_PRODGRP`,`MAS_MARKE`,`MAS_BAUJAHR` FROM `Objekt` WHERE `MAS_KEY` = 1001 LIMIT 0, 30';)
und die Detaildaten unter Drupal anzeigen.
Wie bette ich den PHP Code ein?
Ich wäre für eine Hilfe sehr dankbar!
Liebe Grüße
Klaus

‹ Button und Lightbox URL for XML-RPC of Blog ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du musst erst mal ..

Eingetragen von UwBach (310)
am 25.03.2009 - 20:40 Uhr

.. eine externe Datenbank in der settings.php definieren. Dann kannst du Drupal sagen benutze die DB (db_set_active('externe_db');), machst deine Abfragen und wechselst dann wieder zur Default-Datenbank (db_set_active('default');).

Das Ganze kannst du in einem eigenen Modul schreiben oder auch in einem Node, wenn du die PHP-Filter aktiviert hast. Als Code-Beispiel kannst du dir mal "Wechseln zu einer externen Datenbank" anschauen. Das ist für Drupal 5 geschrieben, hat sich aber nicht verändert. Was dort in den Funktionen beschrieben ist, funktioniert auch in den Nodes.

Gruß

UwBach

  • Anmelden oder Registrieren um Kommentare zu schreiben

habs eingebaut, geht noch nicht!

Eingetragen von ksander (20)
am 25.03.2009 - 21:37 Uhr

Definition in settings:

Zitat:

$db_url['default'] = 'mysql://gcmDBdrupal:h5ehw4h@localhost/gcm_drupal';
$db_prefix = 'drupal_';
// externe Datenbank
$db_url['maschinen'] = 'mysql://admin:allahim@localhost/Maschinen';

Ich will nur die 3 Felder auslesen:

Zitat:

<?php
db_set_active
('Maschinen');
$sql = 'SELECT MAS_PRODGRP FROM Objekte WHERE MAS_KEY = 1001 LIMIT ;';
$result = db_query($sql, $prodgrp, $marke, $baujahr);
db_set_active('default');
Echo
$prodgrp;
Echo
$marke;
Echo
$baujahr);
?>

es kommt die Fehlermeldung:

Parse error: parse error, unexpected ')', expecting ',' or ';' in /home/g/global-construction-machines.com/public_html/includes/common.inc(1547) : eval()'d code on line 13

was ist noch falsch?
Gruß Klaus

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Klaus, Zunächst

Eingetragen von leda.ch (977)
am 26.03.2009 - 00:32 Uhr

Hallo Klaus,

Zunächst einmal kommt Dein Fehler von der überzähligen Klammer ) am Ende des letzten Echo.

Wegen des DB-Wechsels kann ich Dir nicht helfen (db_set_active), aber sieht IMO ok aus.

Die Daten aus der Fremdtabelle holen geht so (Zugriff auf eine Fremd-Tabelle innerhalb der Drupal-DB):

<?php
   
$id
= 111;               
$query_data= db_query(db_rewrite_sql("SELECT feld1, feld2 FROM meineTabelle WHERE id = $id"));
$data = db_fetch_object($query_data);

$feld1 = $data->feld1;
$feld2 = $data->feld2;
print
"das ist feld 1: $feld1, und das ist feld 2: $feld2";

?>

hth
lg leda

  • Anmelden oder Registrieren um Kommentare zu schreiben

danke für die Hilfe

Eingetragen von ksander (20)
am 26.03.2009 - 09:14 Uhr

Hallo Leda,
das sieht gut aus, habs schon eingebaut und er scheints zu kapieren,
nur sucht er auf der falschen Datenbank.
Das Umschalten ist jetzt das Problem.
Denn ohne Umschalten geht’s ja nicht, weil in deinen Anweisungen der Datenbankname nicht auftaucht.
Ich forsche weiter!
Gruß Klaus

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zeig mal den Code

Eingetragen von UwBach (310)
am 26.03.2009 - 09:31 Uhr

ich vermute das du schon umgeschaltest hast bevor die Ergebnisse ausgewertet wurden.

<?php
// Array zur Aufnahme der Ergebnisse
$ergebnisse = array();
// Umschalten auf die externe DB
db_set_active('Maschinen');

$sql = 'SELECT MAS_PRODGRP FROM Objekte WHERE MAS_KEY = 1001 LIMIT 30;';
$result = db_query($sql, $prodgrp, $marke, $baujahr);

// Auf evtl. Fehler prüfen
if(db_error($result) == 0)
// Holen der Ergebnisse
while($erg = db_fetch_array($result))
 
$ergebnisse[] = $erg;

// Zurückschalten auf die normale DB
db_set_active('default');

// ausgeben aller Ergebnisse
print_r($ergebnisse);
Echo
$prodgrp;
Echo
$marke;
Echo
$baujahr);
?>

habe mal was bei LIMIT eingetragen
Die Auswertung der Ergebnisse muss unter der externen DB erfolgen. Korrekt wäre es noch vor der WHILE eine Fehlerprüfung zu machen und im Fehlerfall sofort auf die DEFAULT-DB zurückzuschalten, sonst spinnt Drupal weil es seine DB nicht erreichen kann.

Gruß

UwBach

PS. Code ist nicht getestet

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 1 Tag
  • Hey danke
    vor 2 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 8 Stunden
  • Da scheint die Terminologie
    vor 3 Wochen 11 Stunden
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 31 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association