Hier wird mittels den Funktionen von Dreamweaver eine Suchabfrage an eine Datenbank erstellt. Der User hat die Möglichkeit einen maximalen Preis einzugeben und bekommt dann auf einer neuen Seite das Ergebnis geliefert. Wir benötigen dazu 2 Seiten. shopSuche.htm und shopErgebnis.php
Erstelle im Bindungen Fenster (+Button) eine neue Datensatzgruppe mit folgenden Einstellungen
Fenster/ Bindungen/ +Zeichen/ neueDatensatzgruppe | |||
Option | Beispiel | Erlärung | |
Name | nachPreisSortieren | eigenen Namen vergeben | |
Verbindung | meinShop | eine zuvor erstellte Verbindung auswählen, oder eine neue erstellen | |
Tabelle | artikel | Tabelle der Datenbank auswählen | |
Spalten | alle | alle Spalten sollen angezeigt werden | |
Filter | Preis | <= | Filterbedingung für das Feld Preis. <= definiert die Bedingung kleiner gleich |
Url Parameter | maxPreis | dem Datenbankfeld Preis wird er Wert des Formularfeldes "maxPreis" übergeben | |
Sortieren | Preis | aufsteigend | hier kann man auch eine andere Sortierfunktion wählen. In diesem Falle werden die Zeilen nach Höhe des Preises sortiert. |
Durch die hier definierten Filterbedingung werden nur Zeilen ausgegeben, in denen der Preis kleiner-gleich dem eingebenen Preis des Formularfeldes "maxPreis" ist.
Erstelle eine html-Tabelle mit 5 Spalten und 2 Reihen.
Tippe in der ersten Reihe die Namen der Felder ein.
Ziehe die Felder aus dem
Fenster in die jeweilen Tabellenfelder darunter.Markiere die zweite Zeile der Tabelle. Im Fenster
, wähle , mit der zuvor erstellten hier: nachPreisSortieren und der Option .Wenn das Suchergebnis negativ ausfällt, sollte etwas anderes angezeigt werden. Markiere dazu den gesamten Bereich der Seite und wähle unter
Erstelle dann unten auf der Seite den Inhalt der angezeigt werden soll, wenn kein Datensätze gefunden wurden. Markiere diesen Bereich und wähle unter
Dieses Beispiel ist im Prinzip genauso aufgebaut wie Beispiel 1. Die Werte im Listenmenue entsprechen den Werten der Artikelgruppe und wurden per Hand eingetragen. In Beispiel 3 wird ein dynamisches Listenmenue erstellt.
shopSuche3a.htm
Die erste Seite beginnt wieder mit einen Html-Formular wie oben beschrieben. Das Listenmenue bekommt den Namen Artikelgruppe. Dieser Name wird als Variable (URL-Parameter) an die Seite shopSuche3b.php gesendet.
shopSuche3b.php
Auf dieser Seite wird wieder unter eine erstellt nachfolgend ergebnis3b genannt. Damit nur die Zeilen der übertragenen Artikelguppe aufgelistet werden, setzt man folgende Filterbedingungen:
Filter | |
Artikelgruppe | = |
Url-Parameter | Artikelgruppe |
Formular
Im Formular welches als Aktion die Daten an die Seite shopErgebnis3.php sendet, wird ein Listenmenue mit Namen "Artikelname" erstellt. Man wählt es aus und wählt unter
dynamisches Listenmenue | |
Werte aus der Datensatzgruppe | ergebnis3b (siehe oben) |
Werte | Artikelname |
Beschriftungen | Artikelname |
shopErgebnis3.php
Hier wird wieder unter eine erstellt, wie oben beschrieben. Damit hier nur die Ergebnisse des Listenfeldes der vorigen Seite angezeigt werden, haben wir folgenden Filter:
Filter | |
Artikelname | = |
Url-Parameter | Artikelname |
Anschließend wird eine Tabelle mit den Feldern aus dem wie gehabt.
eingefügt,shopSuche4.htm
Die erste Seite beginnt wieder mit einen Html-Formular, wie man es schon in Beispiel 1 und Beispiel 2 erstellt hat. Das Preisfeld heißt maxPreis das Artikelgruppen-Menue Artikelgruppe. Das Formular sendet die Variablen an shopErgebnis4.php
shopErgebnis4.php
Hier erstellt man wieder eine im eine im Fenster . Die Filterbedingungen versteht man am Besten wenn man sich die aus den Ergebnisseiten von shopErgebnis.php und shopErgebnis2.php anschaut. Durch doppelklick auf den Namen der wird sie geöffnet. Klicke dann auf , und schau dir den Code in beiden Ergebnisseiten an. Diesen Code muss man auf dieser Seite erweitern.
Erstelle zuerst eine Filterbedingung in der Einfachen Ansicht wie in Beispiel 1 mit folgendem Filter.
Filter | |
Preis | <= |
Url Parameter | maxPreis |
schalte auf
und klicke auf +Zeichen fürFilter | |
Name | murks |
Standardwert | 1 |
Laufzeitwert | $HTTP_GET_VARS['Artikelgruppe'] |
Unter
hier wird im Prinzip der Code der Ergebnisseite Beispiel2 eingefügt, nur dass man hier den zuvor vergebenen Namen ersetzt. Man kann Bedingungen auch mit für oder verknüpfen
SELECT *
FROM artikel
WHERE Preis <= colname AND Artikelgruppe = 'murks'
Das Einfügen und Anzeigen der Felder, wie gehabt. Die Anzeige je nach Erfolg auch wie gehabt.
Wie man an diesem Beispiel sieht, hat man in Dreamweaver mit einigen Grundkenntnissen die Möglichkeit bestimmte Abschnitte mit mySQL Befehlen zu erweitern. Interessant wäre auch eine Verknüpfung von Beispiel 3 und Beispiel 4.
Wie man ein Listenmenue mit Mehrfachauswahl in PHP ausliest und in einem Array hinterlegt, wird unter Formulare erklärt. Mittels POST erhält man das Array $artkl[]
$artkl = $_POST["artkl"];
In der Datensatzgruppe könnte man in der erweiterten Ansicht folgende Filterbedingung definieren. Der IN Parameter
ausdruck IN (wert,...) gibt 1 zurück, wenn ausdruck einen Wert hat, der in der IN-Liste enthalten ist, ansonsten 0.
SELECT *
FROM artikel
WHERE Artikelgruppe IN ('$artkl[0]', '$artkl[1]', '$artkl[2]', '$artkl[3]', '$artkl[4]')
ORDER BY artikel.Artikelgruppe
Damit auch die Anzahl der Arrayelemente berücksichtigt wird, füge ich zu Beginn der Seite folgenden Code ein:
$artkl = $_POST["artkl"];
$inWert = implode("', '",$artkl);
Durch implode kann man dann in dem IN Parameter folgende Wertzuweisung erteillen:
SELECT *
FROM artikel
WHERE Artikelgruppe IN ('{$inWert}')
ORDER BY artikel.Artikelgruppe
Für die Auswahl wird eine PHP Seite erstellt, mit Verbindung und Datensatzgruppe ohne Filter. In ein Formularfeld (action shopErgebnis6.php) wird eine Tabelle mit drei Zeilen eingefügt. In die mittlere Zeile kommen die gewünschten Felder der Datensatzgruppe wie gehabt.
In die letzte Spalte kommt ein Kontrollkästchen dessen Name mit eckiger Klammer endet hier check[]. Der Wert wird dynamisch generiert und zwar die ArtikelNr des jeweiligen Datensatzes dazu füge ich im Quelltext die entsprechende Zeile ein:
value=" <?php echo $row_ShopSet['ArtikelNr']; ?> "
in die untere Zeile der Tabelle innerhalb des Formulars kommt der Absenden Button. Die mittlere Zeile der Tabelle wird als Wiederholungsbereich definiert.
Die Auswertung auf der Seite shopErgebnis6.php erfolgt wie in Beispiel5.
$check = $_POST["check"];
$inWert = implode("', '",$check);
als Filterbedingung
SELECT *
FROM artikel
WHERE ArtikelNr IN ('{$inWert}')
ORDER BY artikel.Artikelgruppe