Hier ist Platz für Bilder.

 

Verweisen Sie auf Ihre AGB oder auf weitere Angebote.

 

Erläutern Sie die Vorzüge Ihrer Pizza

Informieren Sie hier Ihre Leser über Ihr Pizzaangebot, skizzieren Sie Ihre Lieferbedingungen.

 

Für diese fiktive Pizza- und Getränkebestellung müssen vollständige Kontaktdaten angegeben werden, der Interessent wird anschließend telefonisch kontaktiert.

 

   

Bestellung beginnen

 

Der übergebene Ausdruck "myId" ist keine gültige Zahl.

   

 


Erläuterungen

Tabellen

Das Beispiel basiert auf einer Grundtabelle 'pizza_online_bestellen', zwei Detailtabellen 'pizza_liste' / 'getränke_liste' sowie zwei Randtabellen 'pizzabelag' und 'getränkeangebote'.

 

Die Grundtabelle sammelt die Lieferdaten als Pflichtfelder sowie das Datum der Bestellung. Die beiden Detailtabellen sind jeweils mit der Grundtabelle verknüpft und ermöglichen die Speicherung mehrerer Zeilen zu jeder Bestellung. Die Randtabellen enthalten zusätzlich eine Spalte mit den Preisen.

 

Beim Klick auf den obigen Button wird eine neue Datenzeile in der Grundtabelle 'pizza_online_bestellen' erzeugt. Es wird ein sd:input-table - Element ohne Eingabefeld für den Nutzer verwendet. Dessen Id wird über das sd:cached-id - Attribut im Laufzeitcache des aktuellen Nutzers zwischengespeichert, so daß die Id für die folgenden Detaildatensätze zur Verfügung steht. Als Name wird hier
myId
genutzt.

 

Die Felder für die Lieferdaten sind als Pflichtfelder definiert. Um eine Speicherung dennoch zu ermöglichen, wird für alle Pflichtfelder ein sd:ro-value - Element eingefügt, dessen sd:new-value - Attribut auf die Spalte gesetzt wird. Dies ermöglicht ein Überspringen der Allow-Null-Überprüfung beim Erzeugen des Datensatzes.

 

Ausgabeseiten

Das Beispiel nutzt die folgenden Ausgabeseiten:
  • Pizza-Liste.html: Wird beim Klick auf den obigen Button aufgerufen und ermöglicht die Wahl mehrerer Pizzas nach ihrer Größe und dem Belag. Die Kosten für eine Pizza werden aktuell etwas grobschlächtig ermittelt: Faktor 1/2/4 für die Größe multipliziert mit der Summe der Beläge, das ganze in einer Sql-Abfrage.
  • Pizza-Getraenke.html: Dies ist der zweite Teil des Angebotes: Es können mehrere Getränke in Mengen zwischen 1-10 gewählt werden.
  • Pizza-Lieferdaten.html: Dieses Formular dient dazu, die Kundendaten entgegenzunehmen. Hier sind die Pflichtfelder nicht geschützt, so daß alle Daten eingegeben werden müssen.
  • Pizza-Bestellung-ansehen.html: Dieses Formular zeigt die gesamte Bestellung einschließlich Lieferdaten an und gestattet den Rücksprung zu den Detailmasken bzw. das Absenden der Bestellung.

     

    Dieses 'Absenden' besteht darin, den Hauptdatensatz erneut zu speichern, damit werden die Pflichtfelder automatisch überprüft. Zusätzlich setzt das sd:ro-value - Element ein Flag, welches das Absenden der Bestellung signalisiert.
Bei einer realen Bestellung würden diese Links natürlich fehlen.

 

Jede der Detailtabellen besitzt eine Spalte, die beim Speichern die ID des Bestell-Hauptdatensatzes benötigt. Diese Spalte wird vorbelegt, indem der mit sd:cached-id festgelegte Name der gecachten ID mit einem vorgestellten '$' als Wert eines sd:ro-value - Elements genutzt wird.

 

Der auf jeder Seite verfügbare Link zu Abbruch der Bestellung nutzt den folgenden Link:
/pizza-bestellung.html?action=sample-input-d-myId
Dies ist der gewöhnliche Link zum Löschen einer Zeile, falls die Seite 'pizza-bestellung.html' ein sd:input-table - oder ein sd:rs - Element namens 'sample-input' kennt. Allerdings wird hier nicht die Nummer, sondern der Name der gecachten ID eingesetzt. Das gewöhnliche Löschen durch die Verwendung einer ID ist gesperrt durch die Nutzung von
sd:del-only-cached='myId'
innerhalb des sd:input-table - Elements.

Falls Sie zufällig hier sind: Dies ist keine reale Möglichkeit, eine Pizza zu bestellen, sondern dient lediglich zur Demonstration.

 

Zur Pizza-Bestellung
Zurück zur Startseite