Datenbank & PHP

Datenbank-Zugriff mit jedem Browser

Die meisten modernen Web-Programm-Pakete kombinieren die Fähigkeiten von Webserver, Datenbank-Server und dynamischen Webseiten.
Damit kann man mächtige Programme herstellen, die einfach zu verwalten sind, und zur Anwendung lediglich einen beliebigen Browser voraussetzen.
Die meisten dieser Programm-Pakete verwenden die Programmiersprache PHP zur Herstellung der dynamischen Webseiten.
Hier wird auf einigen Seiten die Zusammenarbeit von Webserver, PHP und Datenbank-Server gezeigt.
PHP PHP Hypertext Processor
Programme & Daten Typischer Ablauf einer Datenbank-Abfrage mit einem Browser
Alt gegen Neu Vergleich klassischer Büro-(Office)-Programme gegen Web-Programm-Pakete
Strategie Typische Strategien für Anwendung und/oder Entwicklung
Weitere Seiten zu diesem Thema:
Programmierung Programm-Fluss für den Datenbank-Zugriff, Beispiele
MySQL & PHP PHP-Module, MySQL-Status, ...
Start Verbindung mit dem MySQL-Server, einfache SQL-Anweisungen
Struktur Tabellen, Felder, Einstellungen ... Attribute, ...
Auto-Format Ergebnis-Tabellen nach Bedarf automatisch mit PHP formatieren
SQL-Batch Zusammenfassung von SQL-Befehlen zu "Batch"-Programmen
Blob Speichern von Binärdaten (Bildern)

Programme und Daten

Das Digramm zeigt die typische Funktionsweise aller Web-Programm-Pakete:
Auf Client-Seite braucht man nur ein Browser-Programm.
Auf Server-Seite arbeiten mehrere Programme zusammen: Webserver, PHP Script-Programme, Datenbank-Server.
An dieser Stelle ist eine → SVG Objekt-Grafik eingebettet. Sie wird von allen modernen Browsern angezeigt. Lediglich veraltete Versionen des MSIE-Browsern beherrschen kein SVG. Dieser Text wird nur angezeigt, wenn es Hinweise gibt, dass die SVG-Grafik evtl. nicht angezeigt wird. Er verschwindet beim Anklicken.
(1) Auftraggeber (HTTP-Client)
Der Auftraggeber ist typisch ein Browser-Programm. Der gesamte Vorgang wird z.B. durch Klick auf einen Link 'Liste anzeigen' ausgelöst.

(2) HTTP-GET-Request
Der HTTP-Client (Browser) sendet eine nach den Regeln des HTTP-Protokolls erstellte Anforderung (GET-Request) in einfachem Text an den Webserver-PC. Der Request wird über das Netzwerk (typisch mit TCP/IP) zum Server-PC übertragen.
Beispiel: GET personen_liste.php

(3) HTTP-Empfangs-Programm
Am Server-PC wird der Request zum Webserver-Programm und von diesem an ein Empfangs-Programm (z.B. personen_liste.php) geleitet. Dieses Programm analysiert die erhaltenen Daten und formulliert einen Auftrag an den Datenbank-Server.

(4) SQL-Anweisung
Der vom (PHP)-Programm in der Datenbank-Sprache SQL formulierte Auftrag wird über das Netzwerk zum Datenbank-Server-Programm geleitet. Es ist unerheblich, ob die Webserver- und Datenbank-Server-Programme am gleichen PC laufen oder nicht.
Beispiel: select * from personen;
(5) Datenbank-Server
Das Server-Programm erhält die SQL-Anweisung und versucht, den Auftrag zu erfüllen. Wenn das möglich ist, dann sendet der Server die Ergebnisse als (Roh)-Text zurück.
Ein Datenbank-Server ist auf die effiziente Verwaltung von Daten spezialisiert und bietet keinerlei User-Interface !
Außerdem ist der Datenbank-Server zur Sicherheit vom direkten Zugriff durch Clients ausgeschlossen.

(6) Daten-Empfangs-Programm
Am Webserver-PC werden die Text-Daten von einem Programm empfangen, typisch vom gleichen PHP-Programm (z.B. personen_liste.php). Das Programm erzeugt aus den Daten und aus anderen Elementen eine dynamische Webseite als User-Interface. Dabei werden die erhaltenen Daten typisch in eine Tabelle eingetragen. Das vom PHP-Programm erzeugte Produkt (meist der HTML-Quelltext einer Webseite) wird an das Webserver-Programm übergeben.

(7) HTTP-Response
Das Webserver-Programm sendet die vom PHP-Programm erzeugten Daten (=HTML-Quelltext) über das Netzwerk an den Client-PC.

(8) Webseite
Am Client-PC werden die empfangenen Daten an das Browser-Programm geleitet. Der Browser erhält den HTML-Quelltext und erzeugt am Bildschirm eine Webseite - mit einer Tabelle der angeforderten Daten.
Webserver und Datenbank-Server sind im Diagramm getrennt eingezeichnet, weil sie prinzipiell voneinander unabhängig sind, und über das Netzwerk Daten austauschen. In kleinen Netzwerken sind jedoch alle Server-Programme am gleichen PC installiert (strichlierte Linien). Es ist auch kein Problem, z.B. zum Test alle 3 Komponenten am gleichen (Entwicklungs)-PC zu installieren.
Der hier gezeigte Ablauf ist typisch und in den meisten Fällen zutreffend. Mit entsprechender Fachkenntnis kann man das Schema jedoch an jeder Stelle modifizieren. Beispiele:
Server-Hilfsprogramme kann man alternativ auch mit C/C++, Java, Perl, Python, ... programmieren.
Als Produkt kann man nicht nur dynamische Webseiten erzeugen, sondern auch Grafik oder beides.
Web-Programm-Pakete verbinden die Möglichkeiten von Webserver, Datenbank-Server und dynamischen Webseiten (die meist mit PHP programmiert sind).
Diese Standard-Lösung der modernen Informatik ist vergleichsweise kompliziert organisiert.

AnwenderInnen können die Vorteile nutzen, ohne irgendwelche Details der Technik zu kennen:
Man kann diese Programme besonders einfach verwenden, d.h. kostenfrei und ohne Installation, auf jedem Betriebssystem, mit jedem Browser.
Typische Beispiele sind Suchmaschinen, WebShops, Versteigerungen, Verwaltungs-Programme von Betrieben und Organisationen (KundInnen, Artikel, Lieferanten, Lager, Angebote, Lieferungen, Rechnungen, ...), Organisations-Programme (individuelle oder gemeinsame Kalender), Projektverwaltung, usw.
Für EntwicklerInnen ist die Kenntnis zumindest der wichtigsten Elemente leider unentbehrlich. Die Versprechen mancher Hersteller, dass man sich darum nicht zu kümmern braucht, treffen derzeit - wenn überhaupt - nur für minimale Anwendungen zu.

Auf einigen Seiten dieses Webs wird versucht, das Thema für einen raschen Einstieg so einfach wie möglich darzustellen. Die Schwierigkeiten werden jedoch nicht aus dem Weg geräumt: An vielen Stellen sind Hinweise angebracht, um sich komplexen Themen langsam und schrittweise zu nähern.

Web-Programm-Pakete gegen Büro-Programme

Vorteile

Die Verwendung von Web-Programm-Paketen bietet gegenüber einzelnen, individuell verwendeten Büro-Programmen einige Vorteile:

Alle Software-Komponenten sind kostenfrei verfügbar: Betriebssystem mit sicherer Verwaltung der Zugangsrechte (Linux), Webserver (Apache), Datenbank-Server (Firebird, MySQL, PostgreSQL, ...), Programmiersprachen (Java, Perl, PHP, ...) zusammen meist als Standard LAMP-Server bezeichnet.
Die Programmierung von Datenbank und dynamischen Webseiten kann man wahlweise selbst durchführen, in fertigen Paketen kostenfrei laden, kommerziell erwerben, oder aus mehreren Teilen kombinieren.

Alle Komponenten (Hardware, Software) sind austauschbar. Man ist nicht an einen Hersteller oder an ein Produkt gebunden. Der Austausch findet bei Bedarf an einer einzigen Stelle statt (am Server-PC).

An den Client-PCs ist weder Installation noch Wartung erforderlich. Das reduziert die Kosten erheblich.
Die Client-PCs sind an Hardware, Betriebssystem oder Software (Browser) nicht gebunden: Jede gängige Version funktioniert, auch Mischungen aus verschiedenen PCs, Notebooks, Tablets, Thin Clients, usw.

Die zentrale Verwaltung bietet einige weitere Vorteile:
Die Zugangsrechte lassen sich sehr detailliert konfigurieren und streng einhalten.
Die verwendeten Daten stehen ohne weitere Maßnahmen allen berechtigten AnwenderInnen zur Verfügung. Ein Versickern von Dateien auf den einzelnen Arbeits-PC ist kaum mehr möglich.
Die Überleitung von Daten in das eigene Intranet oder ins Internet ist besonders einfach.

Nachteile

Das komplexe System erfordert mehrere Hardware- und Software-Komponenten, die problemlos zusammenarbeiten müssen. (Diagramm ↑ auf dieser Seite).
Zur laufenden Betreuung des Servers braucht man eine Person mit fortgeschrittenen Kenntnissen.

Das funktionierende Netzwerk ist in Betrieben und Organisationen kein Problem, denn dort ist man darauf ohnehin angewiesen. Man kann jedoch den dabei zwangsläufig auftretenden Kosten mit guten Web-Programm-Paketen einen maximalen Nutzen gegenüberstellen.

Im privaten Bereich vollzieht sich derzeit der Übergang von Insel-Lösungen zu kleinen privaten Netzwerken. Diese Netzwerke umfassen nur wenige PC und in den meisten Fällen (noch) keinen eigenen Server.
Man kann ein privates Netzwerk zu minimalen Kosten um einen Server ergänzen (z.B. auf einem ausgemusterten Alt-PC) - das erfordert jedoch fortgeschrittene Kenntnisse. Alternativ kann man die (kostenfreie) Server-Software an jedem Arbeits-PC installieren.
Besonders einfach ist die Installation eines Virtualisierungs-Programms und eines fertigen (kostenfreien) virtuellen LAMP-Servers. In diesem Fall stützt man sich auf das Fachwissen jener Person(en), die den virtuellen LAMP-Server konfiguriert und programmiert haben.

Umstellung läuft

Die aktuelle Entwicklung stärkt Server-basierte Lösungen (z.B. Web-Programm-Pakete) und lässt die Bedeutung von Betriebssystemen und Büro-(Office)-Programmen rasch sinken.
In vielen Betrieben gibt es zwar noch klassische Textverarbeitungs-Programme, die gesamte Standard-Korrespondenz wird jedoch bereits mit Hilfe von Datenbank-Lösungen erstellt und verwaltet.
Nach der Textverarbeitung werden auch die gewohnten Programme für Präsentation, Kalkulation und Büro-Grafik schrittweise durch Web-Programm-Pakete ersetzt.

Die Umstellung geht relativ langsam voran, weil damit auch eine Umstellung des IT-Markts (und viel Geld) verbunden ist. Die Abkehr vom derzeitigen fast-Monopol eines Herstellers bringt den AnwenderInnen die viel beschworenen Vorteile eines freien Markts.
Man sollte sich langsam daran gewöhnen, auch mit anderen Produkten als jenen des Marktführers zu arbeiten. Die oft befürchtete Umstellung ist nicht schwieriger als bei Auto, Kühlschrank, Radio und Fernseher: Man kann eine Marke bevorzugen, jedoch problemlos auch jede andere verwenden.

Strategien für Web-Programm-Pakete

Sicherheit

Ein Webserver bietet umfangreiche Möglichkeiten und vergrößert den nutzbaren Wert ihres PC und lokalen Netzwerks bedeutend.
Gerade deshalb muss man den eigenen Webserver jedoch vom Internet abgeschirmen.

Ihr lokales Netzwerk muss mit einem guten Firewall vom Internet getrennt sein. Versuchen sie besser nicht, ihren eigenen lokalen Webserver aus dem Internet erreichbar zu machen:
Dazu nimmt man die Dienste eines Web-Providers in Anspruch.

Anwendung:   Virtuelle PC

Der schnellste Einstieg gelingt mit → Virtuellen PC: Installieren sie (problemlos) ein kostenfreies Virtualisierungs-Programm.
Laden sie aus dem Internet einen der fertig konfigurierten virtuellen (LAMP)-Server.
Es gibt zahlreiche kostenfreie virtuelle Server. Die Datei-Größe beträgt je nach Ausstattung 2..5 GB

Wenn der virtuelle Server erst einmal läuft, dann kann man einige der kostenfreien Web-Programm-Pakete installieren. Die Installation erfolgt in der Regel mit Hilfe von dynamischen Webseiten, wird ausführlich kommentiert und führt meist problemlos zum Erfolg.

Danach kann man die Web-Programme im gesamten lokalen Netzwerk auf jedem PC und mit jedem Browser verwenden.

Als Betriebssystem ist wegen der freien Lizenz nur Linux öffentlich verfügbar. Außerdem ist die Installation der benötigten Software entweder schon erfolgt, oder man kann sie rasch und problemlos mit Mausklick durchführen.

Windows-Varianten (WAMP) sind möglich, jedoch schwieriger herzustellen und zu verwenden: Auf einem virtuellen Windows-PC muss man die gesamte Software relativ mühsam installieren und konfigurieren. Darüber hinaus muss man sich (je nach Version) um die Lizenzen kümmern, und man darf den virtuellen PC nicht weitergeben.

Anwendung:   Reale PC

Alle erforderlichen Software-Komponenten sind kostenfrei verfügbar. Die Installation ist auf Linux besonders einfach, auf Apple oder Windows ähnlich wie für andere Programme.

Die Konfiguration erfordert auf jedem Betriebssystem fortgeschrittene Kenntnisse und (beim ersten Versuch) oft einige Tage oder sogar Wochen bis zum Erfolg. Wenn sie diesen Schritt überspringen wollen, dann verwenden sie einen fertig konfigurierten ↑ virtuellen Server-PC.

Die erforderliche Server-Leistung (Hardware) wird meist weit überschätzt: Ein klug konfigurierter Server (Linux ohne Desktop) auf einem ausgemusterten Alt-PC kann problemlos 10..50 durchschnittliche Büro-AnwenderInnen versorgen. Ein grafischer Desktop - inbesondere mit 3D, Schatten, Transparenz und sonstigen Effekten - verringert die verfügbare Leistung beträchtlich.

Wenn die Server-Programme einmal laufen, dann werden alle weiteren Schritte auf einem realen oder virtuellen Server-PC gleich ausgeführt.
Wenn sie mit einem virtuellen Server Erfahrung gesammelt haben, dann können sie diese rasch und einfach auf einen realen Server-PC übertragen.

Das Betriebssystem spielt auf dieser Ebene keine Rolle mehr. Sowohl die Web-Programm-Pakete als auch ihre eigenen Datenbanken und Webseiten sind portabel. Deshalb lassen sich alle derartigen Lösungen problermlos auf den Server jedes professionellen Web-Providers übertragen und damit auch im Internet nutzen.
Das gilt für alle in diesem Web vorgestellten Lösungen, jedoch nicht für Sonder-Lösungen mancher (auch sehr großer) Hersteller.

Entwicklung

Als Grundlage müssen sie über ein System von funktionierenden Standard-Komponenten verfügen, so wie für die ↑ Anwendung beschrieben.
Überlegen sie, welches Fachgebiet ihre Entwicklung betreffen soll, und welchen Aufwand sie planen. Prüfen sie mit Selbstkritik, ob sie die notwendigen Voraussetzungen erfüllen.
Bescheidene Ziele haben bessere Erfolgs-Aussichten als großartige Pläne.
Alle hier vorgestellten Lösungen verwenden Webseiten als User-Interface. Sie brauchen daher mindestens Grundkenntnisse der 'Programmiersprache' → HTML und einige Erfahrung bei der Herstellung von Webseiten.

Dynamische Webseiten werden von Webserver-Hilfsprogrammen hergestellt. Die dazu meist-verwendete Programmiersprache ist derzeit → PHP. Sie brauchen Kenntnisse und einige Erfahrung bei der Programmierung mit PHP.
Insbesondere sollten sie Arbeiten zu diesen Stichworten beherrschen: Schleifen, → Arrays, → Senden und Empfangen von Daten aus HTML Formularen, ...

Versuchen sie nicht, in Web-Programm-Pakete mit eigenen Webseiten einzugreifen: Die Pakete bestehen aus einigen 100 oder 1000 Dateien und sind nur mit viel Erfahrung zu durchschauen.
Nur wenige Web-EntwicklerInnen verfügen anfangs über ausreichende Kenntnisse der Datenbank-'Programmier-Sprache' → SQL. Man kann sich trotzdem an die Herstellung von Webseiten mit Datenbank-Zugriff wagen, wenn man Datenbank-Verwaltung und -Anwendung strikt trennt:

Datenbank-Verwaltung:
Dazu installiert man → phpMyAdmin, ein kostenfreies Web-Programm-Paket aus ca. 1000 Dateien. Verwenden sie dieses Programm für alle Verwaltungs-Aufgaben: User und Zugriffs-Rechte, Erstellung von Datenbanken, Tabellen und Feldern, usw...
Auch der Export und Import von Datenbanken wird von phpMyAdmin hervorragend unterstützt.
Versuchen sie nicht, mit bescheidenen SQL-Kenntnissen Datenbank-Verwaltungs-Arbeiten zu programmieren.

Datenbank-Anwendung:
Start mit SQL: Es ist sehr einfach, nach Daten zu suchen und die Liste der Ergebnisse anzuzeigen. Dazu genügt eine einzige SQL-Anweisung: SELECT...
Mit einiger Erfahrung können sie versuchen, neue Datensätze anzulegen und vorhandene zu ändern.
Mit fortgeschrittenen Kenntnissen können sie alle Datenbank-Arbeiten (inkl. Verwaltung) mit dynamischen Webseiten programmieren.

Profi-Entwicklung

Mit fortgeschrittenen Kenntnissen können sie die oben beschriebenen Standard-Lösungen mit den Elementen der modernen Informatik ergänzen.
Die folgenden Absätze geben lediglich Stichworte ! - Wenn sie eines der angeführten Elemente (noch) nicht kennen, dann lohnt sich zumindest ein kurzer Blick auf das Thema.
Typische Ziele der Professionalisierung:
Erweiterung des Funktions-Umfangs
Bessere Wartung und schnellere Entwicklung (z.B. durch Bibliotheken und andere wiederverwendbare Bausteine).
Mehr Sicherheit, z.B. gegen Fehl-Bedienung oder Missbrauch.
Verlagerung aller nicht unbedingt notwendigen Arbeiten vom Server zum Client: Die Client-PCs sind meist nur wenig ausgelastet. Mit der Verlagerung verbessert man die Leistung des gesamten Systems nicht nur für einzelne, sondern für alle AnwenderInnen.
Man kann Java-Programme als Server-Hilfsprogramme einsetzen oder als Applets in Webseiten einbetten. Anspruchsvoll, jedoch besonders effizient ist die Kombination eines Standard (Apache) Webservers mit einem auf Java spezialisierten (Tomcat)-Server.
Details zu Java
CGI-Programme
Kritische Programmteile kann man mit → C/C++ programmieren (lassen). Damit werden ausführbare Programme erzeugt, die nur am jeweiligen Betriebssystem laufen und ausnahmsweise nicht portabel sind. Aus dem Quelltext kann man allerdings in wenigen Minuten Programm-Varianten für alle gewünscghten Betriebssystteme herstellen.
Diese Programme laufen mit maximaler Geschwindigkeit. Man kann sie einsetzen, wenn ein wichtiger oder oft verwendeter Programm-Teil mit Perl oder PHP zu langsam läuft.
Javascript-Programme werden am Client-PC ausgeführt. Man kann den Server durch Verlagerung von Arbeiten (z.B. von PHP auf Javascript) entlasten und damit die gesamte verfügbare Leistung bedeutend erhöhen. Ein typisches Beispiel ist die Validierung (Prüfung, Korrektur) von Formular-Daten bereits vor dem Absenden.
Details zu Javascript

Mit Hilfe der Javascript-DOM-Methoden kann man alle Elemente einer bereits geladenen Webseite ändern. Damit kann man z.B. in den angezeigten Daten suchen, sie unterschiedlich sortieren, usw.
Das ist sehr effizient, weil der Server lediglich die Roh-Daten liefern muss.
Details zu Javascript DOM-Methoden
ist eine besonders effiziente Teil-Anwendung von Javascript. Damit kann eine geladene Webseite beliebige Objekte vom Server nach-laden. Der Server liefert lediglich die (interaktiv) angeforderten Daten oder Werkzeuge, der Client verwaltet den größten Teil der Lösung mit Browser und Javascript-Programmen.
Details zu Ajax

Nicht nur Webseiten werden mit → CSS und → Javascript einfacher und leistungsfähiger: Die gleichen Komponenten lassen sich in allen → XML-Objekten verwenden, z.B. auch in → SVG Objektgrafik...
Es ist relativ einfach, mit den oben beschriebenen Standard-Programmen → SVG-Objektgrafik an Stelle von HTML-Quelltext herzustellen.
Insbesondere Büro-Grafik (Säulen, Balken, Kreisscheiben, XY-Diagramme, ...) eignet sich besonders zur Formulierung mit SVG.
Mit PHP kann man die Grafik Live aus den angeforderten Daten der Datenbank erstellen und in jede beliebige Webseite einbetten.
Das Rendern (Umsetzung in Pixel) erfolgt am Client-PC, ebenso wie die Ausführung interaktiver Elemente oder Animationen (z.B. mit Javascript). Daher ist SVG-Grafik sehr effizient und belastet den Server nicht mehr als die Herstellung einer dynamischen Webseite.
Details zu SVG, Herstellung von SVG mit PHP
Wenn nötig, kann man mit PHP auch Pixel-Grafik Live herstellen (z.B. *.gif, *.jpeg, *.png, ...). Die gesamte Arbeit wird jedoch vom Server ausgeführt und belastet diesen - je nach Häufigkeit der Anforderung - merkbar.
Details zur Herstellung von Pixel-Grafik mit PHP
XLS ist eine 'Programmiersprache' der → XML-Familie, mit deren Hilfe ein Browser komplette Anwendungen aus den rohen XML-Daten herstellen kann. Der Server liefert lediglich die rohen XML-Daten, und der Client erzeugt daraus Webseiten, SVG-Grafik und/oder andere Objekte.
Selbstverständlich kann man XML+XSL Lösungen auch mit CSS, Javacsript, Ajax, ... ergänzen.

Diese Technik bietet derzeit die best-mögliche Effizienz, weil der Server stark entlastet wird, und die ansonsten brachliegende Leistung der Client-PC ideal ausgenutzt wird.
Details und Beispiele zu XML, XSL, XML+XSL

Nächstes Kapitel
  Zum nächsten Kapitel Start: Verbindung mit dem Datenbank-Server