Schleifen und If-Abfragen



Ähnliche Dokumente
Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung Anleitung

Inhalt. Umgebung, Defaults. Modul vom Typ Eigene Inhalte anlegen. Vorhandene Modulstile verwenden

Computer & GNU/Linux Einführung Teil 4

Schleifen: Immer wieder dasselbe tun

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

Options- und Freitext-Modul Datei-Upload

Allgemeines. Shell Programmierung Unix. Kommentar. Vorgangsweise. Mag. Thomas Griesmayer

Programmierkurs Java

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Funktionen nur wenn dann

Übersicht Shell-Scripten

Bash-Skripting Linux-Kurs der Unix-AG

Javascript. Einführung in Javascript. Autor: Christian Terbeck Erscheinungsjahr:

Informatik II Musterlösung

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Übersicht PERL. !!!! Wichtig: Nach dem Befehl einem Strichpunkt setzen!!!!

PHP. M.Sc. Nadine Preuß Geographische Analyse- und Darstellungsmethoden WS 15/

1 - EIN NEUES GAMEGRID ANLEGEN

Übung zur Vorlesung Multimedia im Netz

Webbasierte Programmierung

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

Dynamische Webseiten mit PHP. Oder: LAMP - The open way

Programmieren lernen mit Visual Basic

PHP/HTML-Exkurs_Aufgabe

Probeklausur: Programmierung WS04/05

Java: Eine kurze Einführung an Beispielen

VERARBEITUNG VON FORMULARDATEN

Windows PowerShell. CmdLets. PipeLine / Filter. Variablen / Operatoren. Schleifen / Prüfmethoden. Funktionen / Skripte. Allgegenwärtige Parameter

Webanwendungen mit Java und JavaServerPages

Funktionen nur wenn dann

Informatik. Wiederholung Felder (Arrays), string. Vorlesung

Objektorientierte Programmierung und Modellierung

05 For-Schleifen. For-Schleifen 1/7 Was ist eine Schleife?

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

tempela Eine Template Engine für WordPress wildbits.de Jenseits des täglichen Wahnsinns

C:\~Temp\Rolf\GaM\anfrageauftritt.php Sonntag, 26. Januar :41

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Multimedia im Netz Wintersemester 2011/12

Dateneingabe über ein HTML-Formular in eine Datenbank:

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Objektorientierung. Marc Satkowski 20. November C# Kurs

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Einführung in die Scriptsprache PHP

Bash-Skripting Linux-Kurs der Unix-AG

Grundlagen von C# - 2

C++ Programmieren mit einfachen Beispielen DIRK LOUIS

Programmierung für Mathematik (HS13)

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

4. Februar 2008 Klausur EWA


Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

REXX. Was ist REXX. Scriptsprache für viele Plattformen Erste Schritte F. Hodel os2.a-net.ch

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Roboterprogrammierung

Girls Day 2017 Programmierung

Graphic Coding. Klausur. 9. Februar Kurs A

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS

Shell-Scripting Linux-Kurs der Unix-AG

Benutzerhandbuch. Liquid-Preisvergleichsportale. Version

Shell-Scripting Linux-Kurs der Unix-AG

Mul$media im Netz Wintersemester 2012/13. Übung 01

Thomas Sillmann. Swift im Detail HANSER

4 Schleifen und Dateien

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

EiP Übung

Übungsblatt 2. Java Vorkurs (WS 2017)

WiMa-Praktikum 1. Woche 8

Objektorientierung: Klassen und Objekte

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Die Klasse string Verfasser: Christian Bartl

JavaScript Die ersten Schritte. Holger Chudek Perfect Chain

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Brainfuck Interpreter für ZX81

Runde 2: Von der Statik zur Dynamik - Team Header

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

(6) Verknüpfen der GUI mit dem Spiel

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

PHP JavaScript Kapitel 4. Kommentare

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

Impressum. Herausgeber Telekom Deutschland GmbH Geschäftskunden Landgrabenweg Bonn

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

MEHR FUNKTIONEN, MEHR E-COMMERCE:

BillSAFE. Modul für xt:commerce Veyton. Plugin-Funktionen... Systemvoraussetzung... Mögliches Problem in Veyton CE

Repetitorium Programmieren I + II

Arithmetik in der tcsh

Kontrollstrukturen MySQL Funktionen. MySQL 4, 5. Kapitel 20a: PHP Teil 2. Marcel Noe

Erwin Grüner

Standardkonstrukte in Java

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

print $key.'-'.$value.'<br>';

Praktikum im Grundstudium

Eingaben. Themen heute. Taster. Eingaben Zuweisungen Zeitmessung. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

Anregungen zu Übung 2

Studienarbeit Bildergalerie

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

Transkript:

Schleifen und If-Abfragen Schleifen und If-Abfragen für Fortgeschrittene am Beispiel des Produkt-Listings (Kategorieübersicht) Das Produktlisting ist der Teil der Kategorieübersichtsseite, in der die Produkte der Kategorie in einer Schleife ausgegeben werden. An diesem Beispiel werden einige grundlegende Techniken zur besseren Gestaltung gezeigt. Einige Screenshots zeigen das Firefox Plugin FireBug, das die Arbeit am Design des Shops sehr erleichtert. Weitere Informationen zu dem Plugin finden Sie unter http://getfirebug.com/. Auch den CSS-Code werden wir hier nicht ausführen, da er zu individuell wäre. Aufgabenstellung 1: Es sollen vier Produkte pro Reihe angezeigt werden. Jedes Produkt soll eine individuelle CSS-Klasse erhalten. Das letzte Produkt soll immer die Klasse last erhalten. $i = 0; {foreach name=aussen item=module_data from=$product_listing} $i++; if ($i % 4 == 0){ echo '<div class="prod_nr_'.$i.' fourcolms last">';} else { echo '<div class="prod_nr_'.$i.' fourcolms">'; } <table class="productpreview" width="160" border="0" cellspacing="0" cellpadding="0"> {if $module_data.products_image!=''}<td class="productpreviewimage"><a href="{$module_data.products_link}">{img img=$module_data.products_image type=m_thumb class="productimageborder"

alt=$module_data.products_name}</a></td>{/if} <td><a href="{$module_data.products_link}" style="text-decoration:none">{$module_data.products_name}</a></td> <td>{if $smarty.const._cust_status_show_price eq '1'} class="price"><strong>{$module_data.products_price.formated}</strong></p> class="taxandshippinginfo">{$module_data.products_tax_info.tax_desc}{if $module_data.products_shipping_link}<br /><a href="{$module_data.products_shipping_link}" target="_blank" rel="nofollow">{txt key=text_excl_shipping}</a>{/if}</p> {if $module_data.base_price} class="vpe">{$module_data.base_price.price} {txt key=text_shipping_base_per} {$module_data.base_price.vpe.name}</p>{/if} <td width="233">{if $module_data.allow_add_cart eq 'true'} {form type=form name=product action='dynamic' link_params=getparams method=post} {form type=hidden name=action value=add_product} {form type=hidden name=product value=$module_data.products_id} <div class="addtobasketlisting"> <div align="center"> <table border="0" cellspacing="0" cellpadding="2"> <td>{form type=hidden name=qty value=1 style='width:50px;'}{button text=$smarty.const.button_add_cart file='button_in_cart.gif' type='form' btn_template='tpl_button_2.gif' space_left='25'}</td> {form type=formend} if ($i % 4 == 0){ echo '<hr class="listing" />';

} {/foreach} Erklärung: Innerhalb der PHP-Blöcke (code) kann php-code ausgeführt werden. Das machen wir uns zu Nutze, um die Schleifendurchläufe zu zählen und in die Variable $i zu speichern. Zuerst wird vor der Schleife die Variable $i auf 0($i=0) gesetzt. Danach beginnt die Schleife ({foreach...). Innerhalb der Schleife wird als nächstes $i um 1 erhöht ( $i++; ). Dieses geschieht bei jedem Durchlauf, d. h. mit Abfrage von $i können wir jederzeit abfragen, welche Anzahl von Produkten bereits ausgegeben wurde. In der darauf folgenden Zeile wird abgefragt, ob $i beim Teilen durch 4 gleich 0 ist ($i % 4 == 0). Ist das Ergebnis true (bei 4,8,12,16 usw.) wird als nächstes das letzte Produkt jeder Reihe ausgegeben und wir müssen das DIV-Element mit der last ausgeben. Außerdem haben wir dem Element der Klasse prod_nr_$i (prod_nr_1, prod_nr_2, prod_nr_3, usw.) eingefügt, indem wir den Klassennamen mit unserer Variable verketten. (Bedenken Sie, dass CSS-Klassen niemals mit einer Zahl anfangen dürfen, "1_prod", "2_prod", usw. würden zu Fehlern führen) Aufgabenstellung 2: Die ersten beiden Produkte sollen mit doppelter Größe angezeigt werden. Zusätzlich sollen alle Anforderungen der ersten Aufgabenstellung erfüllt bleiben. $i = 0; {foreach name=aussen item=module_data from=$product_listing} <div class="fourcolms

$i++; echo 'prod_nr_'.$i; if ($i == 1 $i == 2){ echo ' big '; } if ( ($i+2) % 4 == 0){ echo ' last '; } "> <table class="productpreview" border="0" cellspacing="0" cellpadding="0"> {if $module_data.products_image!=''} if ($i == 1 $i == 2){ <td class="productpreviewimage"><a href="{$module_data.products_link}">{img img=$module_data.products_image type=m_popup class="productimageborder" alt=$module_data.products_name}</a></td> }else{ <td class="productpreviewimage"><a href="{$module_data.products_link}">{img img=$module_data.products_image type=m_thumb class="productimageborder" alt=$module_data.products_name}</a></td> } {/if} <td><a href="{$module_data.products_link}" style="text-decoration:none;color:#132b49">{$module_data.products_name}</a ></td> <td>{if $smarty.const._cust_status_show_price eq '1'} class="price"><strong>{$module_data.products_price.formated}</strong></p> class="taxandshippinginfo">{$module_data.products_tax_info.tax_desc}{if $module_data.products_shipping_link}<br /><a href="{$module_data.products_shipping_link}" target="_blank" rel="nofollow">{txt key=text_excl_shipping}</a>{/if}</p>

{if $module_data.base_price} class="vpe">{$module_data.base_price.price} {txt key=text_shipping_base_per} {$module_data.base_price.vpe.name}</p>{/if} <td width="233">{if $module_data.allow_add_cart eq 'true'} {form type=form name=product action='dynamic' link_params=getparams method=post} {form type=hidden name=action value=add_product} {form type=hidden name=product value=$module_data.products_id} <div class="addtobasketlisting"> <div align="center"> <table border="0" cellspacing="0" cellpadding="2"> <td>{form type=hidden name=qty value=1 style='width:50px;'}{button text=$smarty.const.button_add_cart file='button_in_cart.gif' type='form' btn_template='tpl_button_2.gif' space_left='25'}</td> {form type=formend} if (($i+2) % 4 == 0 $i == 2){ echo '<hr class="listing" />';

} {/foreach} Erklärung: In den ersten beiden Produkten wird die Klasse big eingefügt (if($i==1 $i ==2){...}. Wenn $i 1 oder 2 ist... Damit der Code weiterhin lesbar ist (und um Ihnen einige mögliche Variantionen aufzuzeigen), wurde die Syntax leicht verändert. Nun wird in der If-Anweisung nur noch die Klasse ausgegeben, nicht mehr das komplette DIV-Element. Die Klasse last muss nun in den folgenden Elementen um +2 verschoben werden, daher hat sich die If-Anfrage hier auf if ( ($i+2) % 4... geändert. Außerdem soll in den ersten beiden Produkten nicht mehr das kleine Bild vom Typ m_thumb geladen werden, sondern der Typ m_popup. Daher wurde eine weitere Abfrage um die weitere Bildausgabe hinzugefügt (Zeile 22). Diese Beispiele lassen sich beliebig ausbauen: Auch in smarty.get. sind noch einige Parameter die man abfragen könnte. {$smarty.get.cat} (liefert den Namen der Kategorie) {$smarty.get.page} liefert die "Art" der Seite (Categorie, index, product usw.) Außerdem steht in produkt.html noch $smarty.get.info(id) zur Verfügung.