dreamweaver mySql
Suchabfragen Datenbank

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


Suche mit Textfeld
Beispiel 1

Eingabeseite shopSuche.htm
  1. Erstelle ein Formular. Im Eigenschaftenfenster gebe als Aktion die php-Seite an, die als Ergebnisseite dienen soll, hier shopErgebnis.php. Wähle als Methode: Get
  2. Erstelle darin eine Tabelle mit Infotext und einem einzeiligen Textfeld. Vergebe im Eigenschaftenfenster einen Namen hier maxPreis.
  3. Füge einen Submit Button ein.
  4. markiere das Formular, wähle Verhalten / Formular überprüfen und gebe die Option Erforderlich und Aktzeptieren - Zahl ein

Ergebnisseite shopErgebnis.php

Erstelle im Bindungen Fenster (+Button) eine neue Datensatzgruppe mit folgenden Einstellungen

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 Bindungen Fenster in die jeweilen Tabellenfelder darunter.

Markiere die zweite Zeile der Tabelle. Im Fenster Serververhalten, wähle Bereich wiederholen, mit der zuvor erstellten Datensatzgruppe hier: nachPreisSortieren und der Option alle Datensätze.

Bereiche abhängig vom Suchergebnis anzeigen

Wenn das Suchergebnis negativ ausfällt, sollte etwas anderes angezeigt werden. Markiere dazu den gesamten Bereich der Seite und wähle unter Serververhalten / Bereich anzeigen / Bereich anzeigen wenn Datensatzgruppe nicht leer ist

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 Serververhalten / Bereich anzeigen / Bereich anzeigen wenn Datensatzgruppe leer ist


Suche mit Listenmenue
Beispiel 2

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.


Suchen in mehreren Schritten
Beispiel 3

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 Bindungen eine Datensatzgruppe 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 Serververhalten / Dynamische Formularelemente / dynamisches Listen Menue

dynamisches Listenmenue
Werte aus der Datensatzgruppe ergebnis3b (siehe oben)
Werte Artikelname
Beschriftungen Artikelname
Zum Schluss kann man noch einen Bereich definieren, der angzeigt wird, wenn die Artikelgruppe nicht vorhanden ist.

shopErgebnis3.php
Hier wird wieder unter Bindungen eine Datensatzgruppe 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 Bindungen-Fenster eingefügt, wie gehabt.


Suchen mit 2 Bedingungen
Beispiel 4

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 Datensatzgruppe im Fenster Bindungen. Die Filterbedingungen versteht man am Besten, wenn man sich die Datensatzgruppe aus den Ergebnisseiten von shopErgebnis.php und shopErgebnis2.php anschaut. Durch Doppelklick auf den Namen der Datensatzgruppe wird sie geöffnet. Klicke dann auf Erweitert 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 Erweitert und klicke auf +Zeichen für Variablen

Filter
Name murks
Standardwert 1
Laufzeitwert $HTTP_GET_VARS['Artikelgruppe']

Unter SQl muss nun die zweite Bedingung hinzugefügt werden und zwar mit dem Verknüpfungsparameter AND
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 OR 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.


Listenmenue mit Mehrfachauswahl
Beispiel 5

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);

Den durch implode erzeugten Textstring kann man dann im IN Parameter auf folgende Art zuweisen:

SELECT *
FROM artikel
WHERE Artikelgruppe IN ('{$inWert}')
ORDER BY artikel.Artikelgruppe


Aus Tabelle ankreuzen
Beispiel 6

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