Wieviel sind dir diese Tipps wert?
Dreamweaver mySQL

Grundeinstellungen
Testserver in der Site einrichten
Dateien auf lokalen Server laden
PHP-Code in Dreamweaver ausführen / Live-Data-Ansicht
Datenbank Verbindung (lokaler Server)
offline testen, online nutzen / Datenbank Verbindung ändern
Datenbank Verbindung (online)
Datensatzgruppe (Bindungen)

Anzeige
Datensätze anzeigen
Wiederholungsbereich / mehrere Datensätze anzeigen
Bereiche abhängig vom Suchergebnis anzeigen
Datensatz-Anzahl anzeigen
Navigation / Datensätze mit bestimmter Anzahl
Datensatzfelder formatieren
Timestamp Datum- und Zeitausgaben formatieren
Preisausgabe formatieren
Mehrwertsteuer, neues Feld der Datensatzgruppe durch Berechnung erzeugen
Einzelpreis, Gesamtpreis
Gesamtsumme, Datenbankfelder addieren

Formulare
Formularvariablen / URL-Variablen
Suchanfragen / Filter (neue Seite)

Datenbankinhalte einfügen, ändern, löschen
Datenbankinhalte ändern / update
Datensatz löschen
mehrere Datensätze löschen
Datenbanktabelle anzeigen und Zeile löschen
Datensatz (Einträge) einfügen
mehrere Datensätze einfügen

Tabellen verknüpfen / Relation/ Join, Left Join, Navigation
Tabellen verknüpfen (Relation)
Navigation mit Tabellenverknüpfung (Shopnavigation)

Session
Einloggen Benutzerdaten überprüfen
Session ID/ Warenkorb eindeutig identifizieren

Online Shop

Tipps / Links / Bücher
Links zu Dreamweaver Tipps im Netz
Buchtipps


buchtipp Hier empfehle ich euch ein paar Bücher, die mir sehr geholfen haben.

Grundeinstellungen

Site / Testserver

Um die vielen Funktionen für Datenbanken in Dreamweaver MX nutzen zu können, muss man sich zuvor die Site entsprechend einrichten. Siehe auch Site Einstellungen Dreamweaver

Ich habe mir auf meinem Rechner mittels Foxserver Tool mySQL und PHP eingerichtet. Das Einrichten erkläre ich hier nicht. Nur ein kleiner Tipp, damit der Server (z.B. Apache) nicht automatisch startet, wähle in Windows: Start/ Einstellungen/ Systemsteuerung/ Verwaltung/ Dienste. Wähle unter dem Server die Option "manuell" anstatt "automatisch".
Um offline in Dreamweaver alles ausprobieren zu können, muss man in der Site (Erweitert) unter Testserver einige Optionen einstellen.

Site/ Site bearbeiten/ Erweitert/ Testserver
Option Beispiel Erklärung
Servermodell PHP MySQL PHP und mySQL Datenbank
Zugriff Lokal/Netzwerk offline ausprobieren
Testserverordner C:\FoxServ\www\webseiten\on-design\ In meinem Beispiel ist der Stammordner localhost C:\FoxServ\www
Dort habe ich Unterordner erstellt, in den die Dateien dieser Site geladen und anschließend getestet werden sollen. Diesen Pfad gibt man hier an.
Es ist also nicht der Ordner, wo ich alle Dateien direkt abspeichere. Diesen Ordner bestimmt man unter Site/ Lokale Infos
Remote Dateiliste automatisch aktualisieren aktiv  
URL-Präfix http://localhost/www/webseiten/on-design/ Der Pfad zum Ordner auf dem lokalen Server, wie man ihn in der Adresszeile des Browsers angibt.

Dateien auf lokalen Server laden

Sitefenster Testserver Dateien bereitstellen
Im eigentlichen Sitefenster wählt man den Button Testserver. Anschließend klickt man gewünschte Dateien an und wählt den Pfeilbutton Dateien bereitstellen. Die Option "Abhängige Dateien einschließen" im sich öffnenden Fenster sollte mit Okay bestätigt werden. Die Dateien werden dann auf den lokalen Server geladen, und können anschließend im Browser aufgerufen werden. siehe auch offline testen und online nutzen

PHP Code in Dreamweaver ausführen

Wenn man die Seite erstellt und bearbeitet, hat man verschiedene Ansichtsoptionen (oben links). Codeansicht, Entwurfsansicht etc. Wähle den dritten (Entwurfsansicht) und vierten (Live-Data-Ansicht), damit der PHP-Code ausgeführt und angezeigt wird.


Datenbank Verbindung

Datenbank / mySQL Verbindung

Im Fenster Anwendungen, Registerkarten: Datenbanken, Bindungen, Serververhalten, Komponenten, kann man sich die mySQL Datenbanken anzeigen lassen und nutzen.

Fenster/ Datenbanken/ +Zeichen/ MySQL Verbindung
Option Beispiel Erklärung
Verbindungsname test eigenen Namen vergeben
mySQL Server localhost offline, mySQL Datenbank auf heimischen Rechner
Benutzername Walter Benutzername der mySQL Datenbank eingeben
Kennwort geheim Passwort der mySQL Datenbank eingeben
Datenbank test Nachdem man obige Eingaben vorgenommen hat, kann man das Ordnersymbol anklicken und eine der Datenbanken auswählen

Die Datenbank mit den Tabellen und Datensätzen sollte nun in der Registerkarte Datenbank angezeigt werden.

Offline testen und Online benutzen

Wenn man die Dateien beispielsweise auf den lokalen Server läd erstellt Dreamweaver automatisch einen Ordner Connections in dem die Datenbankverbindungen abgespeichert werden. Diese PHP-Dateien haben den Namen der jeweiligen Verbindung. Läd man die Dateien hoch mit der Option "abhängige Dateien einschließen" werden diese Dateien mitgeladen. Es folgt ein Beispiel eines Quelltextes einer solchen Verbindungs-Datei.

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_Eingabe = "localhost";
$database_Eingabe = "guestbook";
$username_Eingabe = "pastor";
$password_Eingabe = "pixel";
$Eingabe = mysql_pconnect($hostname_Eingabe, $username_Eingabe, $password_Eingabe) or die(mysql_error());
?>

Wenn man nun alles offline getestet hat und nun die gleichen Dateien in der Datenbank online nutzen will, braucht man nur die Verbindungsparameter in diesen Dateien entsprechend zu ändern (Hostname, Datenbank, Username, Passwort) und hochladen.

Voraussetzung ist natürlich, dass sich die Tabellen gleichen Namens und mit gleichen Feldern auch in der mySQL Datenbank online befinden.

Online Datenbank Verbindung

Will man auf lokalen Server und Datenbank ganz verzichten und alles gleich für die Online Datenbank erstellen, sind die oben erklärten Site Einstellungen nicht nötig. Man erstellt stattdessen eine FTP Online Verbindung (siehe meine Dreamweaver Tipps) und loggt sich beim Provider mit FTP ein.

Im Fenster von "Site einrichten" wählt man "Testserver" und gibt folgendes ein:
Servermodell: PHP MySQL
Zugriff: FTP
FTP Host: z.B.: www.deineDomain.de
Anmeldung: Anmeldungsname/ bei Strato ist es www.deineDomain.de
Kennwort: dein FTP Kennwort
UrL Präfix: die Url deiner Homepage z.B.: http://www.deinedomain.de

Anschließend öffnet oder erstellt man in Dreamweaver eine PHP Seite und erstellt in der Registerkarte Datenbanken eine neue MySQL Verbindung. Es folgt ein Beispiel für Strato mySQL Datenbank.

Fenster/ Datenbanken/ +Zeichen/ MySQL Verbindung
Option Beispiel Erklärung
Verbindungsname meinStratoSQL eigenen Namen vergeben
mySQL Server rdbms.strato.de Pfad zur Strato Datenbank
Benutzername U409309 Benutzername bekommt man nach Anlegen der Datenbank
Kennwort geheim Als Passwort tragen Sie Ihr Passwort ein, mit dem Sie sich auch in den Kundenlogin einloggen.
Datenbank DB40983 nach dem Anlegen der Datenbank erhält man einen Datenbanknamen
Weitere Infos zum Anlegen der Datenbank erhält man unter "Anleitung" nach dem Einloggen bei Strato.

Bindungen / Datensatzgruppe (Recordset)

In der Registerkarte Bindungen kann man durch Anklicken des +Zeichens eine Datensatzgruppe defininieren. Datensatzgruppe nennt man auch Abfrage oder Recordset. In einer Datensatzgruppe definiert man, welche Datensätze (Zeilen einer Tabelle) angezeigt werden sollen. Die definierte Datensatzgruppe erscheint nach Abschluss im Bindungen-Fenster unten. Durch Doppelklick auf den Namen der Datensatzgruppe kann man die Einstellungen nachträglich ändern. Es lassen sich hier auch Filterbedingungen definieren.

Fenster/ Bindungen/ +Zeichen/ neue Datensatzgruppe
Option Beispiel Erklärung
Name alleArtikel eigenen Namen vergeben
Verbindung meinStratoSQL eine zuvor erstellte Verbindung auswählen, oder eine neue erstellen
Tabelle artikel Tabelle der Datenbank auswählen
Spalten alle alle Spalten sollen angezeigt werden, oder bestimmte auswählen
Filter keine in diesem Beispiel wird eine Filterbedingung erklärt

Filter

Option Beispiel Erklärung
Filter Preis <=

Filterbedingung der ersten beiden Zeilen bedeutet in diesem Beispiel die Bedingung ist erfüllt wenn das Datenbankfeld Preis kleiner oder gleich der zugesandten Variablen maxPreis ist.
= gleich
< kleiner als
> größer als
<= kleiner gleich
>= größer gleich
beginnt mit / endet mit / enthält siehe LIKE

  Url Parameter maxPreis

URL Parameter
Diese Variable ist in der Regel der Name eines Formularfeldes, welches zuvor an diese Seite geschickt wurde siehe Grundlagen Formular. In diesen Suchanfragen werden einige Beispiele vorgestellt.
eingegebener Wert
würde man hier einen eigenen Wert eingeben, würden in diesem Beispiel alle Datensätze ausgegeben, bei denen der Wert des Datenbankfeldes Preis kleiner oder gleich diesem eingebenen Wert ist, siehe auch Beispiel 3 ArtikelNr > 3
verschiedene Variablen
die man unter Bindungen +Zeichen definieren kann

Sortieren Preis aufsteigend hier kann man auch eine andere Sortierfunktion wählen. In diesem Falle werden die Zeilen nach Höhe des Datenbankfeldes Preis sortiert.

Filter mehrere Bedingungen / erweiterte Ansicht

Klickt man in Fenster Datensatzgruppe auf Erweitert hat man die Möglichkeit, mehrere Filter-Bedingungen zu definieren, die mit AND oder OR verknüpft werden, siehe hier

Sortieren nach mehreren Feldern

Wenn man sortiert und der Begriff kommt doppelt vor, kann man ein Feld angeben, wonach dann als nächstes sortiert wird. In der erweiterten Ansicht sieht das so aus:
ORDER BY Ort, Name
Hier wird zuerst nach Ort sortiert, da nichts angegeben ist, wird automatisch alphabetisch sortiert. Gibt es mehrere Namen in einem Ort werden diese dann alphabetisch sortiert. Will man die Sortierreihenfolge umkehren, kann man folgendes eingeben:
ORDER BY Ort DESC, Name DESC
ASC steht für aufsteigend, DESC steht für absteigend

Neue Felder durch Berechnungen erzeugen.

Man kann in einer Datensatzgruppe neue Felder erzeugen, die mittels mathematischer Formeln erstellt werden, siehe dazu die Tipps: Mehrwertsteuer und Einzelpreis/ Gesamtpreis.


Datensätze anzeigen
Beispiel 1 anzeigen

Erstelle eine Verbindung und eine Datensatzgruppe, dann kann man die gewünschten Felder aus dem Bindungen Fenster auf die Seite ziehen, beispielsweise in Html-Tabellenzellen. Oder man setzt den Cursor in die Html-Tabellenzelle, wählt das gewünschte Feld im Bindungen-Fenster aus und klickt dort auf "Einfügen" (unten rechts).
siehe auch nächsten Punkt!!!


Wiederholungsbereich / mehrere Datensätze ausgeben
Beispiel 2 anzeigen

Damit alle Datensätze in der Html-Tabelle angezeigt werden, muß man die gewünschten Zeilen der Tabelle als Wiederholungsbereich markieren.
Tabellenzeile mit den zuvor eingefügten Feldern der Datenquelle auswählen (Cursor vor Zeile setzen, schwarzer Pfeil, klicken, oder im Quelltext <tr> wählen), Anwendungspalette, Registerkarte Serververhalten + Zeichen anklicken und Bereich wiederholen wählen.

Anstatt alle, kann man definieren, wieviele Zeilen auf der Seite angezeigt werden sollen. Hier hat man die Möglichkeit mit einer Navigation Anzeigen zu erstellen, auf denen die weiteren Datensätze erscheinen werden.


Bereiche abhängig vom Suchergebnis anzeigen

Wenn beispielsweise ein Suchergebnis oder eine andere Bedingung, die eine Datensatzgruppe anzeigen soll negativ ausfällt, sollte etwas anderes angezeigt werden. Markiere dazu den Bereich der Seite der angezeigt werden soll wenn das Suchergebnis positiv ist. Das ist in der Regel eine Tabelle mit eingefügten Feldern einer Datensatzgruppe. Wähle unter Serververhalten / Bereich anzeigen / Bereich anzeigen wenn Datensatzgruppe nicht leer ist

Erstelle oder markiere auf der Seite den Inhalt der angezeigt werden soll, wenn kein Datensätze gefunden wurden. Markiere diesen Bereich und wähle unter Serververhalten / Bereich anzeigen / Bereich anzeigen wenn Datensatzgruppe leer ist


Datensatzanzahl anzeigen lassen
Beispiel 4 anzeigen

In der vorigen Zeile habe ich den Cursor hinter das Wort "wurde" gesetzt. Anschließend wählt man die Registerkarte Serververhalten und klickt auf das Pluszeichen. Dort wählt man
Anzahl der Datensätze anzeigen/ Datensätze gesamt anzeigen
Alternativ könnte man sich hier auch die erste oder letzte Datensatznummer anzeigen lassen.


Navigation
Beispiel Gästebuch

Voraussetzung Tabellenzeile mit eingefügten Felder und Wiederholungsbereich mit bestimmter Anzahl

Text oder Bilder für Navigation erstellen z.B.
vorige Einträge / Nächste Einträge

nächste Einträge markieren, Serververhalten +Zeichen, Seitenerstellung für Datensatzgruppe / Zur nächsten Seite verschieben auf
vorige Einträge markieren, ..... Zur vorigen Seite verschieben

Nächste Einträge markieren, Serververhalten, +Zeichen, Bereich zeigen / Anzeigen wenn nicht letzte Seite
Vorige Einträge markieren, Serververhalten....Anzeigen wenn nicht erste Seite


Formatieren

Es gibt eine Formateinstellung im Bindungen Fenster, welche man zuweisen kann, nachdem man eines der zuvor auf der Seite eingefügten Felder ausgewählt hat. Über den Extension Manager kann man sich Erweiterungen installieren, die diese Formatliste erweitern.
Wenn man so ein Format zugewiesen hat und sich anschließend diese Veränderung im Quellcode anschaut, erkennt man einige Befehle, die ich unter String erkläre. Formatierungen für Zahlenwerte (INT) findet man unter Mathe.

Datum Timestamp
Beispiel 5 anzeigen

Datum formatieren

Wenn man für das Feld Datum das Format Timestamp angibt, wird auf dem Server ein Datum mit Zeitangabe erzeugt. Leider ist das nicht sehr schön formatiert, da JahrMonatTagStundeMinuteSekunde ohne Trennzeichen hintereinander angezeigt wird.

Ich habe mir mit substr() eine Funktion geschrieben, die das Datum formatiert. Den Aufruf der Funktion füge ich im Quelltext ein.

<?php echo $row_AllesAuflisten['Datum']; ?>
<?php echo zeitFormat( $row_AllesAuflisten['Datum'] ); ?>

Die Funktion:

function zeitFormat($timestempel){
$zeit = substr($timestempel, 6, 2);
$zeit.=".";
$zeit .= substr($timestempel, 4, 2);
$zeit.=".";
$zeit .= substr($timestempel, 0, 4);
$zeit.=" / ";
$zeit .= substr($timestempel, 8, 2);
$zeit.=":";
$zeit .= substr($timestempel, 10, 2);
return $zeit;
}

Da man diese Funktion wahrscheinlich öfter mal braucht, macht es Sinn sich eine externe Datei anzulegen, um sie dann in die entsprechenden Seiten per require oder include einzubinden.
<?php require("zeitformat.inc");?>

Preis formatieren

Eine Erweiterung der Formatliste gibt es bei Felice Di Stefano. Wenn man es selber machen will, kann man im Quelltext das Preisformat mit dem PHP Befehl number_format() vornehmen.

<?php echo($row_ergebnis4['Preis']; ?>
<?php echo number_format($row_ergebnis4['Preis'], 2); ?>


Mehrwertsteuer

neues Feld der Datensatzgruppe durch Berechnung erzeugen/ Alias Feld/ AS
Beispiel
mwst.php

Erstelle eine neue Datensatzgruppe.
Wähle die Verbindung und die Datenbank artikel.
Schalte um auf die erweiterte Ansicht.
Ersetze den Code folgendermaßen:
SELECT artikel.Artikelname, artikel.Artikelgruppe, artikel.Preis, artikel.Preis * 16 / 116 AS Mwst
FROM artikel

Die fett markierte Stelle zeigt, wie man ein neues Datenbankfeld erzeugt. Hier wird aus dem Bruttobetrag die MwSt von 16% im neuen Feld Mwst abgelegt.
Weitere Berechnungen der Mehrwertsteuer könnten so aussehen:
nettoBetrag x 16/100= 16% MwSt
bruttoBetrag x 16/116 = 16% MwSt
nettoBetrag x 1,16 = BruttoBetrag inclusive 16% MwSt


Einzelpreis/ Gesamtpreis

Beispiel
shopanzahl.php (Formular)
gesamtpreis.php

Ähnlich wie bei der Mehrwertsteuer kann man auch Einzelpreis und Gesamtpreis errechnen und als neues Feld in der Datensatzgruppe anzeigen lassen. Einzelpreis * Anzahl = Gesamtpreis.

shopanzahl.php

Um die Werte zu erhalten, haben wir hier ein Formular, welches die gewünschte Anzahl über das Eingabefeld namens anzahl übergibt. Außerdem wurde der gewünschte Artikel über das dynamische Listenmenü namens artikelnr übergeben. Als Action gebe die Seite gesamtpreis.php ein.

Vergesse nicht die Formulardaten per get zu übertragen. Ich habe gerade 1 Std nach diesem Fehler gesucht, schön blöd. Natürlich kannst du auch post nehmen, wenn du die Daten dann entsprechend abholst. (get=url Parameter, post=Formularvariable).

gesamtpreis.php

Erstelle eine Datensatzgruppe, der Tabelle artikel mit folgender Filterbedingung.

Filter
ArtikelNr =
Url Parameter artikelnr

schalte auf Erweitert und klicke auf +Zeichen für Variablen

Filter
Name anzahl
Standardwert 1
Laufzeitwert $HTTP_GET_VARS['anzahl']

Ersetze den Text folgendermaßen:

SELECT artikel.Artikelname, artikel.Artikelgruppe, artikel.Preis, artikel.Preis * anzahl AS GPreis
FROM artikel
WHERE ArtikelNr = colname

Bestätige mit Okay. Klicke im Bindungenfenster auf das +Zeichen und wähle URL-Variable.
Gebe anzahl ein.
Erstelle eine Tabelle mit 2 Zeilen. Schreibe die Überschriften in die erste Zeile Schiebe in die zweite Zeile die Felder aus dem Bindungenfenster per drag and drop in die Tabellenzeilen. Ein Wiederholungsbereich braucht hier nicht definiert zu werden.


Gesamtsumme

Datenbankfelder miteinander addieren
Beispiel
shopSumme.php

In unserem Beispiel werden alle Preise aufgelistet. Am Ende der Tabelle sollen nun alle Preise miteinander addiert als Gesamtsumme angezeigt werden. Dazu ist etwas Programmierung im Code nötig (eine andere Lösung kenne ich nicht).

Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe der Tabelle artikel (siehe oben). Als Filter gebe ich Artikelgruppe = Eingegebener Wert: Suppen ein, damit die Tabelle nicht so lang wird.

Die Tabelle auf der Seite kann man auch auf eine schnelle Art erzeugen. Wähle oben in der Einfügen-Leiste, Anwendung, 2tes Symbol, Dynamische Tabelle und wähle die Datensatzgruppe.

Schaut man sich den Quelltext einmal an sieht man eine do while Schleife. Fügt man in die Schleife folgenden Code ein, werden die Preisfelder miteinander addiert und in der Variablen $summe abgelegt.

$summe = $summe+$row_Recordset1['Preis'];

Vor der Schleife, wird die Variable $summe auf 0 gesetzt. Hinter der Schleife wird $summe mit echo ausgegeben. Der gesamte Code sieht dann so aus.

<table>
<?php
$summe=0;

do {
$summe = $summe+$row_Recordset1['Preis'];
?>
<tr>
<td><?php echo $row_Recordset1['ArtikelNr']; ?></td>
<td><?php echo $row_Recordset1['Artikelname']; ?></td>
<td><?php echo $row_Recordset1['Artikelgruppe']; ?></td>
<td align="right"><?php echo $row_Recordset1['Preis']; ?></td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

<tr>
<td colspan="4" align="right">Die Gesamtsuppe beträgt: <?php echo $summe ?></td>
</tr>
</table>


Formularvariblen / URL-Variablen

Siehe hierzu auch meinen MySql Tipp Formulare

Formularvariablen / POST

Wenn man über ein Formular mit der Methode POST Variablen (Textfelder, versteckte Felder etc.) an eine Seite versendet, indem man im Eigenschaftenfenster des Formulars als action die Seite angibt, an die die Variablen gesendet werden sollen, so kann man auf der Folgeseite mit Hilfe von Dreamweaver auf diese Variablen zugreifen.

Auf der Folgeseite unter Anwendung / Bindungen klicke auf das Pluszeichen Formularvariablen.
Gebe den Namen der Variable ein. Daraufhin erscheint ein Feld im Bindungenfenster, welches man mit drag und drop auf die Seite ziehen kann.

URL-Variablen / GET

Wurden die Variablen im Formular mit GET versand, kann man auf der Folgeseite unter Anwendung/ Bindungen/ URL-Variable wählen. URL-Variablen können auch direkt an einen Link mit folgender Schreibweise angehängt werden. Im folgenden Beispiel wird die Variable id mit dem Wert 20 und die Variable artikel mit dem Wert Baumwolle an den Link auf die Seite folgeseite.htm angehängt.

<a href="folgeseite.htm?id=20&artikel=Baumwolle'">Link</a>

Formulardaten mit Serververhalten in Tabelle einfügen und gleichzeitig versenden

Beispiel

Hat man ein Formular dazu benutzt, um die Eingaben in eine Datenbank einzufügen, so kann man mit ein wenig Quellcode die Variablen zusätzlich an die Folgeseite versenden.

Nach Einfügen des Serverhaltens / Datensatz einfügen, findet man einen Quellcode wie diesen:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO bereiche (Bereich) VALUES (%s)",
GetSQLValueString($_POST['Bereich'], "text"));

mysql_select_db($database_stratoDatenbank, $stratoDatenbank);
$Result1 = mysql_query($insertSQL, $stratoDatenbank) or die(mysql_error());

$insertGoTo = "test2.php";

Wie man hier sieht, wird das Eingabefeld namens Bereich auf folgende Weise angesprochen:

GetSQLValueString($_POST['Bereich'], "text"));

Hinter insertGoTo wird die Seite aufgeführt, die man im Serverhalten unter "Nach dem Einfügen hierher gehen" eingegeben hat, hier: test2.php

$insertGoTo = "test2.php";

Ersetze die Stelle folgendermaßen, um den Wert des Eingabefeldes Bereich als URL-Variable an test2.php anzuhängen:

$insertGoTo = "test2.php?Bereich=".$_POST['email'];

Auf der Folgeseite wähle unter Anwendung/ Bindungen / URL-Varialben und vergebe den Namen Bereich.

Variablen in Datensatzgruppe (erweitert) hinzufügen

Wenn man eine Datensatzgruppe definiert und die erweiterte Ansicht wählt, kann man mySQL Code eingeben. Braucht man dort weitere Variablen, um beispielsweise Filterbedingungen zu erweitern, klickt man auf das + Zeichen bei Variable

URL-Variable Formularvariable Sitzungsvariable
name eigenerName
typ text
Standardwert -1
Laufzeitwert $_GET['email']
name eigenerName
typ text
Standardwert -1
Laufzeitwert $_POST['email']
name eigenerName
typ text
Standardwert -1
Laufzeitwert $_SESSION['MM_Username']

 


Einträge ändern
Beispiel anzeigen

Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe, mit allen Feldern ohne Filter.

Erstelle eine Seite mit einem Formular und einer Tabelle darin.
Ins ersten Feld kommt ein Listenmenue mit dem Namen des Primärschlüssel hier ArtikelNr, wähle im Eigenschaften-Fenster dynamisch, gebe den Namen der Datensatzgruppe an, Als Wert die ArtikelNr (Primärschlüssel) und als Bezeichnung Artikelname.

Gebe weitere Textfelder oder Listenmenues für die gewünschten Änderungen ein. Vergebe als Namen dieser Elemente die Namen der Datenbank- Felder.

Markiere das Formular und wähle unter Serververhalten / Datensatz aktualisieren. Hier kann man noch Formatierungen vornehmen und eine Ausgabeseite wählen. Wenn man die Eingabefelder die gleichen Namen wie die zu ändernden Datenfelder bekommen haben, weist Dreamweaver die Felder entsprechend zu. Ansonsten kann man auch die einzelnen Felder anklicken und selber entsprechend zuweisen.

Markiere das Formular und wähle unter Verhalten / Formular überprüfen. Wähle für die Eingabefelder die Option erforderlich. Für das Preisfeld kann man außerdem Akzeptieren / Zahl wähen.

Einträge ändern mit Vorauswahl

Beispiel Anzeigen

In meinem Beispiel wird eine Suchanfrage mit einem Änderungsformular auf einer Seite kombniert.
Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe, mit allen Feldern ohne Filter.

Formular 1
Erstelle eine Seite mit einem Formular und einer Tabelle darin.
Wähle das Formular aus, gebe unter Aktion die eigene Seite ein (shopAendern2.php) und als Methode GET.
Füge einen Absenden Button ins letzte Feld der Tabelle ein.
Ins ersten Feld kommt ein Listenmenue mit dem Namen des Primärschlüssel hier ArtikelNr, wähle im Eigenschaften-Fenster dynamisch, wähle den Namen der Datensatzgruppe aus.
Wähle als Wert die ArtikelNr (Primärschlüssel) und als Bezeichnung Artikelname.

Datensatzgruppe2 (recordset2)
Erstelle eine zweite Datensatzgruppe (recordset2). Wähle unter Filter das Primärschlüsselfeld (ArtikelNr), gebe als URL Parameter den Namen des Formularfeldes ein, in unserem Fall der Name des Listenmenüs, welcher auch ArtikelNr heißt.

Filter
ArtikelNr =
Url Parameter ArtikelNr

 

Formular2
Erstelle ein zweites Formular mit Tabelle. Füge hier Textfelder ein für alle Datenfelder, die per Eingabe geändert werden sollen und ein Listenmenü für die Artikelgruppen.
Wähle das Listenmenü aus und klicke im Eigenschaftenfenster auf "Listenwerte" füge die Felder per Hand ein. Wähle unten "Wert auswählen der gleich" Klicke auf das Blitzsymbol und wähle aus Recordset2 die Artikelgruppe.
Gebe ein verstecktes Feld ein, Name ArtikelNr, wähle auch hier wieder das Blitzsymbol im Eigenschaftenfenster und wähle aus der zweiten Datensatzgruppe (recordset2) die ArtikelNr.
Selbstverständlich muss auch ein Absenden Button eingefügt werden.

Serververhalten
Markiere das Formular und wähle unter Serververhalten / Datensatz aktualisieren. Hier kann man noch Formatierungen vornehmen und eine Ausgabeseite wählen. Das Primärschlüsselfeld bekommt seinen Wert vom versteckten Feld (hidden field) des Formulars. Die anderen Felder werden entsprechend ausgewählt und zugewiesen.


Datensatz löschen

Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe, mit allen Feldern ohne Filter.

Einen Datensatz löscht man am Besten anhand des Primärschlüssels, da dieser einen Datensatz eindeutig identifiziert. Man kann sich ein Formular erstellen, darin ein Feld, welches als Wert den Wert des Primärschlüssels bekommt und eine Schaltfläche. Man markiert das Formular und wählt Serververhalten / Datensatz löschen. Hier wählt man dann als Primärschlüsselwert die Option Formularvariable und gibt den Namen des Formularfeldes ein.

Serververhalten / Datensatz löschen
Option Beispiel   Erklärung
Zuerst prüfen ob Variable definiert ist: Primärschlüsselwert    
Verbindung Gaestebuch   Name der Verbindung
Tabelle tab_guestbook   Name der Datenbanktabelle
Primärschlüsselspalte id Numerisch Name des Feldes mit Primärschlüssel aus der mySQL Datenbanktabelle. In der Regel sollte hier Numerisch aktiviert sein, da der Primärschlüssel normalerweise einen Zahlenwert INT bekommt
Primärschlüsselwert Formularvariable id Wenn der Wert des zu löschenden Primärschlüsselfeldes über ein Feld des Formulars definiert werden soll, gibt man Formularvariable an und dahinter den Namen. Weitere Optionen siehe Erklärung Filter
Nach dem Löschen, zu URL wechseln Ausgabe.php   Hier kann man eine Seite aufrufen, die beispielsweise die Datenbank anzeigt.

Datenbank anzeigen und Datensätze löschen
Beispiel anzeigen nur offline

Am komfortabelsten ist die Möglichkeit wenn man die Felder der Datenbanktabelle angezeigt bekommt und daraus einzelnen Felder löschen kann.

Hier entstehen also lauter einzelne Formulare, die jeweils ein verstecktes Feld bekommen, dessen Wert dem Primärschlüssel der mySQL-Datenbanktabelle entspricht. Dadurch wird jeweils der richtige Datensatz gelöscht.


Mehrere Datensätze löschen

Beispiel
Das Beispiel befindet sich nur auf der Seite zum runterladen. Weil es zuviele Witzbolde gibt, die nichts besseres zu tun haben, als alles zu löschen.

Hier kann ich wieder nur eine Quellcodemethode anbieten. Wir haben hier 2 php Seiten loeschenAuswahl.php und loeschenAuswahl2.php

Formular

loeschenAuswahl.php

Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe, mit allen Feldern ohne Filter.
Erstelle ein Formular und darin eine Tabelle mit mindestens 2 Zeilen. füge einige Felder der Datensatzgruppe ein und ein Kontrollkästchen, welches hier den Namen: check[] bekommt. Wichtig, sind die eckigen Klammern, weil mehrere Werte übertragen werden. Füge als aktivierter Wert den Primärschlüssel der Datensatzgruppe ein: z.B.:
<?php echo $row_suppen['ArtikelNr']; ?>
In der Zeile darunter füge eine Formularschaltfläche mit der Beschrifung Löschen ein.

Markiere die Tabellenzeile mit der Anzeige und dem Kontrollkästchen und wähle Serververhalten/ Bereich wiederholen.

Wähle das Formular aus und gebe im Eigenschaftenfenster die Option POST und die Folgeseite unter Aktion ein, hier loeschenAuswahl2.php.

Folgeseite

loeschenAuswahl2.php

Ich gehe hier davon aus, dass schon auf anderen Seiten eine Datenbankverbindung im Anwendungsfenster erstellt wurde. Sie heißt in diesem Beispiel stratoDatenbank. Der Verweis auf die Datenbank wird am Anfang der Seite eingefügt. Dann folgt ein bisschen PHP-Code:

<?php require_once('../../../Connections/stratoDatenbank.php');
mysql_select_db($database_stratoDatenbank);
$check = $_POST["check"];
$inWert = implode("', '",$check);
$SQLString = "DELETE FROM artikel WHERE ArtikelNr IN ('{$inWert}')";
$Ergebnis = mysql_db_query($database_stratoDatenbank, $SQLString, $stratoDatenbank);
echo "Geänderte Datensätze: ",mysql_affected_rows($stratoDatenbank);
?>

Schau dir in dem Connections Ordner von Dreamweaver mal die Verbindungsseite an.
Siehe dazu auch meinen MySql Tipp Datensätze löschen und das Beispiel mit Mehrfachauswahl
Auf der Folgseite Seite kann man sich dann auch wieder eine Datensatzgruppe erstellen, und eine dynamische Tabelle. Schau dir danach aber nochmal den Quellcode an, denn Dreamweaver setzt seinen Code vor den von dir zuerst erzeugten Code. Ändere das so, dass dein Code wieder am Anfang steht.


Einträge (Datensatz) einfügen
Beispiel anzeigen

 

Gehen wir davon aus, wir haben eine Tabelle meinShop darin ein Spalte id als Primärschlüssel (mit automatischer Wertzuweisung) und ein Spalte artikel. Wir wollen mit einem Eingabeformular in artikel einen Datensatz einfügen. Erstelle eine PHP-Seite mit Datenbankverbindung. Erstelle darin ein Formular mit Eingabefeld namens txtArtikel und einen Senden Button. Klicke im Fenster Anwendung auf Serververhalten, Pluszeichen und wähle Datensatz einfügen.

Serververhalten / Datensatz einfügen
Option Beispiel Erklärung
Werte senden aus Formular: form1 Formularname
Verbindung: stratoDatenbank Verbindungsname
Tabelle einfügen: meinShop Name der Datenbanktabelle
Spalte: ID ist Primärschlüssel

Klicke unter Spalte die gewünschte Tabellenspalte an und wähle dann unter Wert das gewünschte Formularfeld. Vergebe unter Senden als den Datentyp. Beispielsweise könnten Zahlenfelder als Ganzzahl versendet werden.

Verfahre genauso mit weiteren Feldern, falls vorhanden.

  'artikel' erhält Wert von 'FORM.txtArtikel' als 'Text'
Wert: Form.txtArtikel
Senden als: Text
Nach dem Einfügen hierher gehen: Ausgabe.php Gewünschte Seite angeben, die nach Erfolg geöffnet wird. Gibt man hier die gleiche Seite ein, kann man anschließend die nächste Eingabe machen.

Dadurch werden die Einträge der Formularfelder in die Felder der mySQL Datenbank gesendet. Anschließend soll die Datei Ausgabe.php aufgerufen werden.

Formulareingaben überprüfen

Damit die Formularfelder den Eintrag (NOT NULL) erhalten wird ein Javascript erzeugt. Dadurch müssen gewünschte Felder bestimmte Eingaben enthalten, bevor das Formular verschickt wird.

Markiere das Formular und klicke im Fenster Verhalten / Formular überprüfen
Markiere die gewünschte Zeile z.B.: text "Name" in formular "Eingabe" und aktiviere die Option Erforderlich, Am Ende der Zeile erscheint dann ein (R)
Bei Email aktiviere Erforderlich und Akzeptieren / Email Adresse
Wenn das Feld nur Zahlenwerte erhalten soll, wähle Akzeptieren / Zahl (evtl. höchste und niedrigste eingeben)

siehe auch: Eintragen und Eingaben als URL -Variablen verschicken


Mehrere Datensätze auf einmal einfügen

Hierzu gibt es kein Beispiel. Siehe dazu auch das Beispiel mit Mehrfachauswahl.
Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe.
Alle Felder der Datensatzgruppe sollen in einer anderen Datenbank mit einem Klick eingefügt werden.
Erstelle ein Formular wähle als Action die Adresse einer php Seite, hier einfuegen.php
Füge im Formular versteckte Felderein , welche die Namen der Datenfelder bekommen. Der Name muss jeweils mit eckiger Klammer enden. z.B.: Artikelgruppe[]
Wähle unter Wert dynamisch und wähle das entsprechende Feld der Datensatzgruppe .
Definiere die versteckten Felder als Wiederholungsbereich.
Hinter den Wiederholungsbereich füge eine Formularschaltfläche ein.
In diesem Beispiel wurde noch ein Feld "Kunde" ohne Array (eckige Klammern) eingefügt, da dieses Feld in jedem Datensatz den gleichen Wert bekommt. Dieses Feld befindet sich auch außerhalb des Wiederholungsbereichs.

einfuegen.php

Das Formular verweist auf eine PHP Seite die keinen Html-Code enthalten darf. Außerdem dürfen keine Kommentare und Leerzeilen vorhanden sein. !!!
In der PHP Seite werden die Felder in die Datenbank eingefügt. Anschließend wird eine weitere Seite aufgerufen, auf der man die Datenbank anzeigen könnte.
Quelltext der einfuegen.php

<?php require_once('../Connections/stratoDatenbank.php');
mysql_select_db($database_stratoDatenbank);
$Kunde = $_POST["Kunde"];
$Artikelnr = $_POST["Artikelnr"];
$Anzahl = $_POST["Anzahl"];
$Einzelpreis = $_POST["Einzelpreis"];
$Status = $_POST["Status"];
$felderzahl = count($Artikelnr);
for($i=0; $i<$felderzahl; $i++){
$sql = mysql_query("INSERT INTO bestellungen (Artikelnr, Anzahl, Kunde, Einzelpreis, Status) VALUES ( $Artikelnr[$i], $Anzahl[$i], '$Kunde', $Einzelpreis[$i], 0)");
}
header("Location: bestellung.php");
?>

Siehe dazu die Erklärungen in meinen MySQL Tipps unter Formular (mehrfachauswahl).
siehe auch header("Location: bestellung.php")


Tabellen verknüpfen Relation

Anzeige Beispiel
Eingabe Beispiel

Nehmen wir mal an wir haben eine Tabelle mit Fragen und Antworten zu jeweils einem Bereich (Thema). Will man nachträglich den Bereich anders bezeichnen, müsste man in allen Felder die Bezeichnung ändern. Um das zu umgehen, kann man zwei Tabellen anlegen die miteinander verknüpft werden. Siehe folgendes Beispiel
Tabelle fragen:
fragen.Antwort, fragen.Frage, fragen.Bereich, fragen.Id
Tabelle bereiche:
bereiche.ID, bereiche.Bereich

Im Feld fragen.Bereich wird ein Zahlenwert eingegeben, der bereiche.ID entspricht. Beide Felder müssen auch den gleichen Datentyp haben siehe Erklärung unter Eingabe Beispiel. Durch die Verknüpfung beider Tabellen wird dann der Inhalt von bereiche.Bereich angezeigt anstatt des Zahlenwerts von fragen.Bereich.
Das Ganze macht man mit einer Datensatzgruppe und einer SELECT Anweisung. Wie man daraus die Anzeige der Tabelle macht siehe hier.
Los geht`s. Erstelle eine PHP Seite mit Verbindung und klicke im Fenster Anwendung/ Bindung auf das Pluszeichen und wähle Datensatzgruppe (Abfrage). Vergebe einen Namen, wähle die Verbindung und klicke auf die Schaltfläche "Erweitert".

Fenster/ Bindungen/ +Zeichen/ Datensatzgruppe (Abfrage)
erweitert
Option Beispiel Erklärung
Name meineRelation eigenen Namen vergeben
Verbindung stratoDatenbank eine zuvor erstellte Verbindung auswählen, oder eine neue erstellen
SQL SELECT fragen.id, fragen.Frage, fragen.Antwort, bereiche.Bereich
FROM fragen LEFT JOIN bereiche
ON fragen.Bereich=bereiche.ID
Hier werden zuerst die Felder beider Tabellen ermittelt. Mittels Punktoperator ist die Zuweisung eindeutig. Nach FROM kommt die Haupttabelle. Die links vom Befehl LEFT JOIN stehende Tabelle wird komplett ausgelesen. Bei der zweiten Tabelle werden nur die Daten ausgelesen, die mit der ersten Tabelle verknüpft werden können. Mittels ON werden die Tabellen fragen und bereiche über die Felder Bereich und ID verknüpft. Aus diesen beiden Datensätzen gibt die Abfrage die unter SELECT angegeben Felder zurück.

Auch bei Kundendaten wäre so eine Verknüpfung sinnvoll. In einer Tabelle wird für jeden Kunden Name, Adresse, Telefonnummer etc. gespeichert. In einer anderen Tabelle wird eine Kundennummer eingegeben, die der ID der Tabelle mit den Kundendaten entspricht. So braucht man die Adresse nur einmal einzugeben oder zu ändern.

Navigation mit Tabellenverknüpfung

zum Beispiel

Vorbereitung

Erstelle ein Tabelle mit 2 Spalten, Größe 100% die linke Spalte dient der Auflistung aller Bereiche. Die rechte Spalte zeigt die Ergebnisse an.

Datenbank

Siehe das vorige Beispiel Verknüpfung von Tabellen.
Hier wird nun eine Navigation erstellt, die mit den beiden Tabellen arbeitet.
Vorraussetzung sind wieder diese beiden Tabellen.

Tabelle fragen:
fragen.Antwort, fragen.Frage, fragen.Bereich, fragen.Id
Tabelle bereiche:
bereiche.ID, bereiche.Bereich

Links erstellen

Voraussetzung ist hier wieder eine Verbindung und eine Datensatzgruppe, welche die Tabelle bereiche anzeigt, ohne Filter und sortiert nach dem Feld Bereich (aufsteigend).

Option Beispiel
Name bereiche
Verbindung meinStratoSQL
Tabelle bereiche
Spalten alle
Filter keine
Sortieren Bereich (aufsteigend)

Erstelle einen Absatz in der linken Spalte <p></p>
Ziehe aus dem Bindungen Fenster das Feld "Bereich" in den Absatz.
Markiere den Paltzhalter und gebe im Eigenschaftenfenster unter "Hyperlink" den Namen der Seite die gerade bearbeitet wird ein und schreibe dahinter ?id=

Wechsele in die Codeansicht und ergänze den Link nach folgendem Schema.

<p><a href="navigation.php?ID=<?php echo $row_bereiche['ID']; ?>"><?php echo $row_bereiche['Bereich']; ?></a></p>

Man hat also einen Link, der auf die eigene Seite verweist und als URL-Parameter die jeweilige ID des Bereichs überträgt.
Markiere die Stelle inclusive der Absatztags <p>....</p> und wähle im Fenster Serververhalten / Bereich wiederholen mit der Option alle anzeigen.

Ergebnis

Erstelle eine zweite Datensatzgruppe im Fenster Bindungen, welche auf die Tabelle fragen verweist. Wähle als Filter Bereich = URL-Parameter ID und sortiere nach Frage aufsteigend.

Option Beispiel
Name fragen
Verbindung meinStratoSQL
Tabelle fragen
Spalten alle
Filter
Bereich =
URL-Parameter ID
Sortieren Frage (aufsteigend)

In die rechte Spalte der Tabelle füge eine neue Tabelle ein mit 2 Spalten und zwei Zeilen. In die erste Zeile schreibe: Fragen und Antworten (siehe Beispiel). Ziehe aus der Datensatzgruppe "fragen" das Feld "Frage" ins erste Feld der zweiten Zeile und "Antwort" ins nächste Feld. Markiere die zweite Zeile und wähle im Fenster Serververhalten / Bereich wiederholen, mit der Option "alle anzeigen."

Fragen Antworten
{fragen.Frage} {fragen.Antwort}

 

Bereichname

Damit auch der Name des Bereichs angezeigt wird, braucht man noch eine weitere Datensatzgruppe

Option Beispiel
Name bereichname
Verbindung meinStratoSQL
Tabelle bereiche
Spalten alle
Filter
ID =
URL-Parameter ID
Sortieren fragen (aufsteigend)

Ziehe aus dieser Datensatzgruppe bereichname das Feld "Bereich" an die gewünschte Stelle. Dieser Bereich braucht nicht wiederholt zu werden, da er nur einmal angezeigt wird.

Details

Selbstverständlich kann man das Ganze noch mit den zuvor erklärten Techniken verfeinern. "anzeigen, wenn Bereich leer ist", "Anzahl der Datensätze anzeigen" etc. Die Themen werden weiter oben erklärt.


Benutzerauthentifizierung, Einloggen, Anmeldung und Passwort überprüfen

Beispiel Benutzerdaten eingeben
Beispiel Login

Wer sich die Sache sehr ausführlich und schön erklärt in einem anderen Tutorial zur Gemüte führen will, sei auf diese Seite verwiesen: www.dw-worx.de

Die Sessionvariablen werden standardmäßig in Cookies abgelegt. Deswegen muss der User Cookies aktiviert haben.

Gehen wir von folgender Grundvoraussetzung aus. Wir haben eine Tabelle namens tbKW, darin eine Spalte für die Emailadresse namens email und eine Spalte für das Kennwort namens kWort. Mittels Formular hat man sich dort eingetragen Erklärung später. Hier geht es jetzt um die Anmeldung oder den Loginbereich.

Erstelle eine PHP Seite mit Datenbankverbindung und dort ein Formular mit 2 Eingabefelder und Senden Button. Die Eingabefelder bekommen hier die Namen txtBenutzer und txtKennwort. Gehe im Anwendungfenster auf Serververhalten, klicke auf das Pluszeichen und wähle: Benutzerauthentifizierung/ Benutzer anmelden.

Serververhalten/ Benutzerauthentifizierung/ Benutzer anmelden
Option Beispiel Erklärung
Eingabe abrufen aus Formular: form1 Formularname
Feld für Benutzername: txtBenutzer Name des Eingabefeldes für den Benutzernamen
Feld für Kennwort : txtKennwort Name des Eingabefeldes für das Passwort
Validieren über Verbindung: stratoDatenbank Verbindungsname
Tabelle: tbKW Tabellenname
Spalte für Benutzername: email Tabellenspalte für Benutzername
Spalte für Kennwort: kw Tabellenspalte für Kennwort
Wenn Anmeldung erfolgreich hierher gehen: loginOk.php Gewünschte Seite angeben, die nach erfolgreicher Anmeldung geöffnet wird.
zur vorigen Url gehen falls vorhanden: Optionsschalter Ist diese Option aktiviert, wird die Folgeseite nur dann angezeigt, wenn es keine vorige Seite gibt.
Was ist eine vorige Seite? Auf anderen Seiten kann man den Zugriff beschränken (siehe unten). Wenn man so eine Seite aufruft, ohne sich vorher angemeldet zu haben, wird man auf die Anmeldeseite umgeleitet. So kann es also sein, dass man durch so eine Umleitung auf die Anmeldseite gelangt ist. Die vorige Seite ist also die Seite von der man umgeleitet wurde. Nachdem man sich dann angemeldet hat, kommt man dann automatisch auf die vorige Seite.
Wenn Anmeldung fehlschlägt hierher gehen: loginFehler.php Gewünschte Seite angeben, die nach fehlgeschlagener Anmeldung geöffnet wird. Hier sollte man zuvor eine Seite mit einem Hinweistext und einem Link auf das Anmeldeformular erzeugen. Sinnvoll wäre hier die Möglichkeit einzurichten, ein vergessenes Passwort per Email zu bekommen.
Zugriff basierend auf: Benutzername und Kennwort In diesem Beispiel wird diese Option aktiviert.
  Benutzername, Kennwort, Zugriffsebene Keine Ahnung
  Ebene abrufen von Email Keine Ahnung, Ich würde mich über jeden Hinweis freuen.

 

Nun kann es mal vorkommen, dass man den Benutzernamen an die Seite übertragen will, weil man ihn für irgendwelche Filter braucht. Dazu muss man folgende Codezeile folgendermaßen umwandeln.

$MM_redirectLoginSuccess = "loginOk.php";

$MM_redirectLoginSuccess = "loginOk.php?User=" . $_POST['txtBenutzer'];

Mit dieser Änderung wird die Eingabe ins Formlarfeld namens txtBenutzer als Wert des URL-Parameter User übertragen. Also ließe sich auf der Folgeseite eine Datensatzgruppe nach URL-Parameter User filtern.

Um diesen Wert auf der Folgeseite anzuzeigen, gehe auf Bindungen, wähle Url-Variable und gebe den Namen (hier: User) ein. Nun kann man aus dem Bindungenfenster das Feld User auf die Seite ziehen.

Zugriff beschränken

Hat der User die Folgeseite (loginOk.php) einmal aufgerufen, könnte er sich die Url merken und beim nächsten mal die Url der Seite direkt eingeben. Es wäre sogar möglich sie mit einem anderen Benutzernamen aufzurufen. Wenn die Folgeseite nur angezeigt werden soll, wenn man sich vorher eingeloggt hat, muss man der Folgeseite das Serververhalten / Benutzerauthentifizierung / Zugriff auf Seite beschränken hinzufügen.
Wähle dort die Option Benutzername und Kennwort
Bei verweigertem Zugriff hierher gehen: wähle hier die Login-Seite (login.php)

Sitzungsvariable / Session / Username

$_SESSION['MM_Username']
siehe auch Variablen in einer Datensatzgruppe hinzuzufügen

Man kann auch eine Sitzungsvariable definieren. Dazu muss die Sitzungsvariable initiiert werden. Auf der Seite login.php wähle im Fenster Bindungen / Sitzungsvariable und gebe als Wert MM_Username ein. Das ist die Sitzungsvariable, in der Dreamweaver den Benutzernamen bei der Anmeldung speichert. Man kann sich diese Sessionvariable auch anzeigen lassen. Ziehe sie aus dem Bindungenfenster auf die Seite. Die Sitzungsvariable wird erst gelöscht, wenn man das Browserfenster schließt und erneut öffnet. Eine Sitzung wird gestartet durch den Befehl session_start() oder in Dreamweaver durch Serververhalten/ Benutzerauthentifizierung/ Zugriff auf Seite beschränken.

Neuen Benutzer eintragen/ doppelte Einträge überprüfen

siehe auch Datensatz einfügen.
Wir haben eine Tabelle namens tbKW, darin eine Spalte für die Emailadresse namens email und eine Spalte für das Kennwort namens kWort. Wir erstellen ein Anmeldeformular. Die Eingabefelder bekommen die gleichen Namen wie die Felder der Tabelle tbKW. Mittels Anwendung/ Serververhalten/ Datensatz einfügen wird der neue Benutzer in der Datenbank eingefügt. Da in diese Falle die Emailadresse der Primärschlüssel ist, kann es zu keinen doppelten Einträgen kommen. Wäre das nicht der Fall könnte man auch mit Dreamweaver doppelte Einträge überprüfen. Wähle dazu Anwendung/ Serververhalten/ Benutzerauthentifizierung/ Neuen Benutzernamen überprüfen. Die Optionen erklären sich von selbst.

Benutzer abmelden

Das ist mit Dreamweaver supereinfach. Setze den Cursor an eine Stelle, wo ein Link zum Abmelden eingefügt werden soll und wähle Anwendung/ Serververhalten/ Benutzerauthentifizierung/ Benutzer abmelden

Tipp/ Tutorial

Ich empfehle hier ein Tutorial, wo die Sache sehr schön erklärt wird. www.dw-worx.de


Session ID/ Warenkorb eindeutig identifizieren

In einem Shop braucht man einen Warenkorb, in dem die Artikel zwischengespeichert werden. In dem Warenkorb sollte ein Feld sein, über dass man die Artikel eindeutig dem Kunden zuordnen kann. In diesem Fall stünde der Warenkorb aber erst zur Verfügung, nachdem der Kunde sich eingetragen hat.

Eine andere Möglichkeit wäre ein Tabellenfeld, in dem eine Session Id oder Sitzungsvariable gespeichert wird. Siehe auch meinen mySQL Tipp Session. Eine Session besteht solange der Browser geöffnet ist. Über eine Session ID kann man die Sitzung eindeutig zuordnen. Sobald man einen Aritkel in die Datenbank des Warenkorbs einfügt, werden wir außerdem die Sitzungsvariable in ein dafür vorgesehenes Feld eingefügen. So lassen sich alle Artikel des Warenkorbs einer Sitzung eindeutig identifizieren. Nach der Bestellung kann man dann die Datensätze der Sitzung aus dem Warenkorb löschen und in eine Datentabelle "Bestellung" einfügen.

Ich habe hier darauf verzichtet alle anderen Felder des Warenkorbs aufzuführen. Das kann man so machen, wie man es braucht. Auch eine Tabellenverknüpfung mit der Artikeldatenbank über die ID wäre sinnvoll. siehe Relation Ein Warenkorb bietet weitere Vorteile, da sich dort auch die verschiedenen Artikeloptionen abspeichern lassen. Nehmen wir mal an, man hätte einen Shop für Flaggen. So kann man in einer Datenbank alle Motive speichern. In einer weiteren Datenbank werden die verschiedenen Größen abgelegt. Dann wäre noch eine Datenbank mit Stoffsorten denkbar. Im Warenkorb hat man dann für jede dieser Datenbanken ein Feld. Motiv, Groesse, Stoff etc. Doch nun weiter zu der Session ID.

Session ID

Hierzu sind wieder einige Eingriffe im Quellcode nötig. Man verzichtet bei dieser Methode auf die Benutzerauthentifizierung von Dreamweaver. Eine Session startet man mit folgendem Befehl:
session_start();
Dieser Befehl muss auf allen Seiten eingefügt werden, die mit der Session ID arbeiten wollen.
Außerdem kann man noch folgenden Befehl einfügen, um die "Lebensdauer" der Session IDs zu erhöhen. Dazu später mehr.
ini_set("session.gc_maxlifetime", 3600);
Über folgenden Befehl kann man sich die Session ID anzeigen lassen.
echo session_id();

Alternativ könnte man auch die IP Nummer des Users eintragen. Mit folgendem Script wird die IP Adresse angezeigt:
$_SERVER['REMOTE_ADDR'];
Beispiel
Allerdings werden später noch einige Probleme angesprochen, die mit dem Löschen alter Warenkörbe zu tun haben, wobei eine Sessionvariable bessere Bedingungen liefert.

Artikelseite

Es folgt die Anzeige der Artikel mit einem Button "in den Warenkorb" hinter jedem Artikel. Erstelle eine Datensatzgruppe und eine Tabelle, welche die Datensatzgruppe anzeigt. Erstelle in der Tabelle ein Feld, in das ein Formular eingefügt wird. Füge in dem Formular ein verstecktes Feld ein, welches als dynamischen Wert die Artikelnr der Datensatzgruppe zugewiesen bekommt. Füge ein weiteres verstecktes Feld ein, welches als Wert die Session Id bekommt. <?php echo session_id();?> Füge auch eine Formularschaltfläche mit der Bezeichnung "in den Warenkorb" dort ein. Vergiss nicht den Wiederholungsbereich für die gesamte Zeile festzulegen.
Wähle Serverhalten/ Datensatz einfügen.
Siehe dazu die Seite loeschen.php in der offline Version meiner Tipps. Die ist ähnlich aufgebaut; der Unterschied ist nur ein anderes Serververhalten.

Warenkorb

Erzeuge eine PHP-Seite für die Anzeige des Warenkorbs. Starte wieder die Sitzung am Anfang der Seite mit dem PHP-Befehl und weise die session id einer Variable zu hier $sesvar:
session_start();
ini_set("session.gc_maxlifetime", 3600);
$sesvar = session_id();

Achtung!! Überprüfe diesen Quellcode nachdem du die Dreamweaver Aktionen eingefügt hast und setze die Codezeile eventuell wieder an den Anfang der Seite, allerdings innerhalb der PHP Tags, versteht sich.<php?.....?>

Erstelle eine Datensatzgruppe, welche die mySQL Tabelle Warenkorb abfragt. Nehmen wir an die session id wird im Feld sitzung abgelegt. Im erweiterten Modus wird die Datensatzgruppe gefiltert. Füge eine Variable hinzu

name colname
typ text
Standardwert -1
Laufzeitwert $sesvar

 

Füge den Filter in die SELECT Anweisung ein.

SELECT *
FROM warenkorb
WHERE sitzung = colname

Einfügen Leiste/ Anwendung/ dynamische Tabelle erzeugt dann wieder die Ansicht des Warenkorbs wie gehabt. Hier ließe sich dann der Inhalt des Warenkorbs in eine Bestellen Tabelle einfügen. Siehe dazu den Tipp mehrere Datensätze einfügen.

Soweit so gut. Aber so ganz gut ist das noch nicht.

Jetzt stellt sich nur noch das Problem, wie man die Datensätze mit der Sitzungsvariable löscht. Sobald der Kunde die Sachen bestellt, könnte man die Datensätze in eine weitere mySQL Tabelle Bestellungen übertragen und gleichzeitig aus dem Warenkorb löschen. Wenn der Kunde nichts bestellt und die Sitzung beendet wird, weil er den Browser schließt, würden die Datensätze nicht gelöscht.

Die Session IDs werden standardmäßig 24 Minuten nach Ende der Session gelöscht. Diese Einstellung steht in der PHP-ini unter: session.gc_maxlifetime / der Wert ist standardmäßig 1440 Sek. Diesen Wert kann man durch folgende Codezeile heraufsetzen:
ini_set("session.gc_maxlifetime", 3600);
Dadurch bleiben die Session IDs eine Stunde nach Beenden der Session erhalten und können in der Zeit nicht an jemand anderen vergeben werden.

Wenn auch die Session Id gelöscht ist, wäre es theoretisch möglich dass die gleiche Id für einen anderen User vergeben wird. Zugegebenermaßen sehr unwahrscheinlich, aber möglich. Der User hätte dann die Artikel des anderen Kunden in seinem Warenkorb. Dieses Problem kann man lösen, wenn man zusätzlich überprüft, wann die Artikel in den Warenkorb gelegt wurden und alle alten Datensätze dann auf einer Seite löscht, die sowieso aufgerufen wird.

Erzeuge dir in der mySQL Tabelle Warenkorb ein feld mit dem Wert timestamp(10) Dadurch wird das aktuelle Tagesdatum mit Uhrzeit automatisch erzeugt, sobald ein neuer Datensatz angelegt wird.
0610191516
JahrMonatTagStundeMinute

Jetzt braucht man nur eine Löschen-Funktion, die alle Datensätze aus dem Warenkorb löscht, die älter als 1 Stunde sind und nicht der eigenen Session ID entsprechen. Das könnte man auf der Artikelseite machen.

Füge folgenden Code irgendwo hinter dem Dreamweaver PHP Code auf der Seite ein.

<?php
session_start();
ini_set("session.gc_maxlifetime", 3600);
$sesvar = session_id();
$zeit = date("YmdHis",mktime(date(H)-1,date(i),date(s),date(m),date(d),date(Y)));
$SQLString = "DELETE FROM warenkorb WHERE datum < '$zeit' AND sitzung != '$sesvar'";
$Ergebnis = mysql_db_query($database_stratoDatenbank, $SQLString, $stratoDatenbank);
?>

Näheres zu dieser Berechnung in meinen PHP Tipp Datum/ mktime
$zeit = date("YmdHis",mktime(date(H)-2,date(i),date(s),date(m),date(d),date(Y)));

Online Shop

Individuelle Shop Lösungen, die keine Kundenwünsche offen lassen, kann man besonders dann anbieten, wenn man die Shop Programmierung selbst vornimmt. Ich erkläre hier mal wie man einen Shop aufbauen könnte.
Beispiel, das Beispiel gibt es noch nicht in der offline Version. Wer Interesse hat, schreibe mir eine Email.

Userdaten

Eine Tabelle für die Kundenkartei. Damit die Kunden sich mit einem Passwort später wieder einloggen können, ohne alle Daten neu eingeben zu müssen, fügt man eine Spalte für das Passwort ein. Dann einige Spalten für Adresse, Telefon etc. und eine Spalte für die Email Adresse. Wenn man die Email als Primärschlüssel nimmt, hat man das Problem gelöst, dass sich ein Kunde doppelt einträgt. Auf den Seite Bestellungen erstellt man dann eine Benutzerauthentifizierung/ Zugriff einschränken. Außerdem braucht man dann noch eine Anmeldenseite und eine Seite um sich einzuloggen.

Artikel

Eine Artikelgruppentabelle, mit den Feldern Artikelgruppe und id als Primärschlüssel
Eine Tabelle mit Artikeln. Hier kann man dann eine schöne Navigation erzeugen wie hier beschrieben Navigation mit Tabellenverknüpfung (Shopnavigation) Artikelgruppen und Artikel werden über ein Feld verknüpft.

 

Wenn die Artikel Optionen haben wie verschiedene Größe, Farben, Stoffe etc. sollte man für jede Option eine Tabelle anlegen, z.B.: Tabelle Stoffe mit den Feldern id und Farben. Durch Auswahlfelder, die die Werte der jeweiligen Tabelle bekommen, kann man jedem Artikel die gewünschten Optionen zuweisen. Das könnte man auf einer extra Artikelseite machen, oder auf mehreren Seiten, die nacheinandern aufgerufen werden. Letzteres bietet sich besonders an, wenn es viele Artikel gibt, die die gleichen Optionen haben.

 

Warenkorb

Die Artikel mit den entsprechenden Optionen werden in eine Tabelle Warenkorb eingefügt. Weiter oben wird das Thema ausführlich erklärt.
In der Datensatzgruppe, die den Warenkorb anzeigt könnte man ein Alias Feld einfügen, in dem der Preis ausgerechnet wird. Hier könnte man verschiedene Berechnungen einfügen, wie: Anzahl x (Preis+Quadratmeter x Stoff). Dieses Alias Feld wird dann auf der Seite angezeigt und in die Tabelle Bestellung eingefügt. Siehe dazu den Tipp Mehrwertsteuer.

Bestellung

Vom Warenkorb werden alle Daten in eine Tabelle Bestellungen eingefügt. Hier bietet sich ein Feld für den Status an. Status bekommt numerische Werte die für noch nicht abgeschickt, bestellt, in Bearbeitung, bereits versand stehen könnten. Besonders komfortabel für den Kunden, wäre die Möglichkeit den Status der Bestellungen abfragen zu können. Das setzt natürlich voraus, dass der Verkäufer die Datenbank mit entsprechenden Formularfeldern pflegt.

Ich denke, mit ein bisschen Kreativität und den Anleitungen und Beispielen auf meiner Seite, hat man das Rüstzeug einen Shop selbst zu programmieren. Wenn man sich erstmal über die Struktur und den Weg im klaren ist, hat man schon die halbe Miete. Viele, der hier aufgeführten Problemlösungen sind beim Anlegen eines Shops enstanden. Ich bin mir durchaus bewusst, dass es sich hierbei um eine ganz einfache Shoplösung handelt, aber irgendwie muss man ja anfangen.