IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - DBM-Datenbanken mit PHP



DBM-Datenbanken mit PHP

PHP wird meist in Verbindung mit Datenbanken z. B. MySQL, Oracle oder Adabas D verwendet. Falls Sie serverseitig keine Unterstützung für eine dieser Datenbank haben, lässt sich die Funktionalität einer Datenbank mit PHP über die DBM-Funktionen emulieren. Dieser Artikel zeigt Ihnen den Umgang mit den wichtigsten DBM-Funktionen.


Autor: Tobias Surmann (incsoft)
Datum: 23-04-2003, 15:38:27
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 6818x
Rating: 10 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

PHP wird meist in Verbindung mit Datenbanken z.B. MySQL, Oracle oder Adabas D verwendet. Falls Sie serverseitig keine Unterstützung für eine dieser Datenbank haben, lässt sich die Funktionalität einer Datenbank mit PHP über die DBM-Funktionen emulieren. Zwar sind diese Funktionen nicht so leistungsfähig, allerdings sind sie sehr einfach anzuwenden und sehr flexibel. Dieser Artikel zeigt Ihnen den Umgang mit den wichtigsten DBM-Funktionen.

DBM-Datenbank öffnen

Für das Öffnen einer DBM-Datenbank ist die Funktion dbmopen() zuständig. Sie gibt ein Handle zurück, das wir speichern sollten, da fast alle anderen DBM-Funkionen diesen Handle für den Zugriff auf die Datenbank benötigen. Als erstes Argument erwartet die Funktion einen Pfad zu einer DBM-Datenbank, mit dem zweiten Parameter legen Sie Flags zum Öffnen der Datenbank fest. Die nachfolgende Tabelle gibt eine Übersicht über die verschiedenen Flags und ihre Bedeutungen.

Flag Bedeutung
R Nur Lesen
W Schreiben und Lesen
C Falls Datenbank nicht existiert: Erstellen einer neuen Datenbank
Falls Datenbank existiert: Öffnen der Datenbank für Schreiben und Lesen
N Erstellen einer neuen Datenbank (eine ältere Version wird dabei überschrieben)


N Erstellen einer neuen Datenbank (eine ältere Version wird dabei überschrieben) Für das Öffnen einer Datenbank könnte man also z.B. folgenden Quelltext verwenden:

$hDB = dbmopen("./data/user", "w") or die("Fehler: DBM konnte nicht geöffnet werden!");


Hier wird eine Datenbank user zum Lesen und Schreiben von Daten geöffnet. Mit or die wird sichergestellt, dass bei Auftreten eines Fehlers (z.B. wenn Sie kein Schreibrecht auf dem Server haben) eine entsprechende Fehlermeldung angezeigt wird.

Schließen der DBM-Datenbank

Nach der Benutzung einer DBM-Datenbank sollten Sie diese unbedingt sofort wieder schließen, da sie, solange sie in Benutzung ist, gesperrt wird, und andere Prozesse nicht darauf zugreifen können. Diese Aufgabe erledigt die Funktion dbmclose(). Sie erwartet nur einen Parameter, nämlich den beim Öffnen der Datenbank erzeugten Handle.

dbmclose($hDB);


Daten auslesen

Haben Sie erfolgreich eine DBM-Datenbank geöffnet, so können Sie Daten daraus auslesen und dem Anwender z.B. eine Liste aller User mit Passwörtern zur Verfügung stellen (in diesem Beispiel sollte der "Anwender" der Administrator sein!). Das Lesen von Datensätzen bewerkstelligen Sie mit Hilfe der Funktion dbmfetch(). Der folgende Quellcode zeigt einen Bespielquellcode für die Anwendung dieser DBM-Funktion.

//Passwort zu einem Benutzernamen ausgeben
function DisplayPassword($username) {
if (dbmexists($hDB, $username))
print dbmfetch($hDB, $username);
}


Mit dbmexists()prüfen Sie zuerst, ob der eingegebene Benutzername überhaupt existiert. Danach wird über die print-Anweisung das dazugehörige Passwort ausgegeben. Was aber, wenn Sie nicht jeden einzelnen Benutzernamen kennen, und eine Liste aller angemeldeten Benutzer haben möchten? Für diesen Fall stellt uns PHP die Funktionen dbmfirstkey() und dbmnextkey() zur Verfügung, mit deren Hilfe wir durch die einzelnen Datensätze navigieren können.

//Gibt eine Liste aller Benutzer mit Passwort aus
function ListUsers() {
$dbmkey = dbmfirstkey($hDB); while ($dbmkey != "") {
$dbmvalue = dbmfetch($hDB, $dbmkey);
print "$dbmkey: $dbmvalue <br>";
$dbmkey = dbmnextkey($hDB, $dbmkey);
}
}


Daten hinzufügen

Wenn sich ein neuer Anwender anmeldet, müssen wir seinen Benutzernamen und sein Passwort in unsere Beispieldatenbank aufnehmen. Dazu dient die Funktion dbminsert(). Eine entsprechende Funktion könnte in PHP ungefähr so aussehen:

//Benutzer hinzufügen
function AddUser($username, $password) {
dbminsert($hDB, $username, $password);
}


Daten löschen

Mit der Funktion dbmdelete() löschen Sie Datensätze aus der Datenbank. Dazu übergeben Sie wie immer zuerst den Handle der geöffneten Datenbank. Danach folgt der Schlüssel des zu löschenden Datensatzes. Sicherheitshalber sollte auch hier zunächst überprüft werden, ob der Benutzer überhaupt existiert.

//Benutzer samt Passwort aus der Datenbank löschen
function DeleteUser($username) {
if (dbmexists($hDB, $username))
dbmdelete($hDB, $username);
}


Daten ändern

Möchte ein Anwender sein Passwort ändern, so müssten wir bisher zunächst den betreffenden Eintrag löschen und dann einen neuen hinzufügen. Einfacher geht es mit der Funktion dbmreplace(). Diese erwartet ein Handle auf die Datenbank, den Schlüssel des zu ändernden Datensatzes (in unserem Beispiel das Feld mit dem Benutzernamen) und den neuen Eintrag, der gespeichert werden soll. Zurückgegeben wird bei erfolgreicher Änderung 0. Geht etwas schief, gibt die Funktion -1 zurück.

//Passwort ändern
function ChangePassword($username, $password) {
if (dbmreplace($hDB, $username, $password) == -1)
print "Passwort konnte nicht geändert werden!";
}


Zusammenfassung

In diesem Artikel haben Sie gelernt, wie Sie
  • eine Datenbank öffnen,
  • Daten auslesen,
  • Daten hinzufügen,
  • Daten verändern,
  • Daten löschen und
  • die Datenbank wieder schließen können


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04500
Artikel:00815
Glossar:04117
News:13565
Userbeiträge:16551
Queueeinträge:06227
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1121
Comments: 0