diff --git a/src/Praktikum/Prak5/Baecker.php b/src/Praktikum/Prak5/Baecker.php new file mode 100644 index 0000000000000000000000000000000000000000..d1a0399675391668a51d1d1428f3b04e151b1fdd --- /dev/null +++ b/src/Praktikum/Prak5/Baecker.php @@ -0,0 +1,224 @@ +<?php declare(strict_types=1); +// UTF-8 marker äöüÄÖÜ߀ +/** + * Class baecker for the exercises of the EWA lecture + * Demonstrates use of PHP including class and OO. + * Implements Zend coding standards. + * Generate documentation with Doxygen or phpdoc + * + * PHP Version 7.4 + * + * @file baecker.php + * @package Page Templates + * @author Bernhard Kreling, <bernhard.kreling@h-da.de> + * @author Ralf Hahn, <ralf.hahn@h-da.de> + * @version 3.1 + */ + +// to do: change name 'baecker' throughout this file +require_once './Page.php'; +require_once './DB_Classes/OrderedArticle.php'; +/** + * This is a template for top level classes, which represent + * a complete web page and which are called directly by the user. + * Usually there will only be a single instance of such a class. + * The name of the template is supposed + * to be replaced by the name of the specific HTML page e.g. baker. + * The order of methods might correspond to the order of thinking + * during implementation. + * @author Bernhard Kreling, <bernhard.kreling@h-da.de> + * @author Ralf Hahn, <ralf.hahn@h-da.de> + */ +class Baecker extends Page +{ + // to do: declare reference variables for members + // representing substructures/blocks + + /** + * Instantiates members (to be defined above). + * Calls the constructor of the parent i.e. page class. + * So, the database connection is established. + * @throws Exception + */ + protected function __construct() + { + parent::__construct(); + // to do: instantiate members representing substructures/blocks + } + + /** + * Cleans up whatever is needed. + * Calls the destructor of the parent i.e. page class. + * So, the database connection is closed. + */ + public function __destruct() + { + parent::__destruct(); + } + + /** + * Fetch all data that is necessary for later output. + * Data is returned in an array e.g. as associative array. + * @return array An array containing the requested data. + * This may be a normal array, an empty array or an associative array. + */ + protected function getViewData():array + { + $query = "SELECT * FROM ordered_article;"; + $resultSet = $this->_database->query($query); + $orderedArticleList = array(); + + while ($row = $resultSet->fetch_assoc()) { + + $orderedArticle = new OrderedArticle( + (int)$row["ordered_article_id"], (int)$row["ordering_id"], (int)$row["article_id"], (int)$row["status"] + ); + + $orderedArticleList[$orderedArticle->getOrderedArticleId()] = $orderedArticle; + } + $resultSet->free_result(); + return $orderedArticleList; + } + + /** + * First the required data is fetched and then the HTML is + * assembled for output. i.e. the header is generated, the content + * of the page ("view") is inserted and -if available- the content of + * all views contained is generated. + * Finally, the footer is added. + * @return void + */ + protected function generateView():void + { + $data = $this->getViewData(); //NOSONAR ignore unused $data + $this->generatePageHeader('Bäcker',"",true); //to do: set optional parameters + echo <<< HTML + \n<section id="baecker"> + <h2>Bestellung</h2> + + <form id="formBaecker" accept-charset="UTF-8" action="#" method="post">\n +HTML; + + $noOrders = true; + foreach ($data as $order){ + $query = "SELECT UNIQUE name FROM article, ordered_article + WHERE article.article_id = {$order->getArticleId()};"; + $resultSet = $this->_database->query($query); + $resultArray = $resultSet->fetch_assoc(); + $resultSet->free_result(); + + $pizzaName = htmlspecialchars($resultArray["name"]); + $orderedArticleId = $order->getOrderedArticleId(); + + $status = $order->getStatus(); + if ($status > 2 ) { + continue; + } + else { + $noOrders = false; + } + + $statusArray = array_fill(0, 5, ""); + $statusArray[$status] = "checked"; + + echo <<< HTML + <fieldset> + <legend>Bestellung {$order->getOrderingId()} Pizza {$pizzaName}</legend> + Status: <br> + <label> + <input type="radio" name="{$orderedArticleId}" value="0" {$statusArray[0]} onclick="document.forms['formBaecker'].submit();"> + Bestellt + </label> <br> + + <label> + <input type="radio" name="{$orderedArticleId}" value="1" {$statusArray[1]} onclick="document.forms['formBaecker'].submit();"> + Im Ofen + </label> <br> + + <label> + <input type="radio" name="{$orderedArticleId}" value="2" {$statusArray[2]} onclick="document.forms['formBaecker'].submit();"> + Fertig + </label> + </fieldset>\n +HTML; + } + + if ($noOrders) { + + echo <<< HTML + \n<p>Es gibt keine Bestellungen</p> +HTML; + } + + echo <<< HTML + </form> + </section>\n +HTML; + + $this->generatePageFooter(); + } + + /** + * Processes the data that comes via GET or POST. + * If this page is supposed to do something with submitted + * data do it here. + * @return void + */ + protected function processReceivedData():void + { + parent::processReceivedData(); + // to do: call processReceivedData() for all members + $data = $this->getViewData(); + foreach ($data as $order){ + $orderedArticleId = $order->getOrderedArticleId(); + if (isset($_POST["{$orderedArticleId}"]) && is_numeric($_POST["{$orderedArticleId}"])) { + $status = $this->_database->real_escape_string($_POST["{$orderedArticleId}"]); + $query = "UPDATE ordered_article SET status = {$status} + WHERE ordered_article.ordered_article_id = {$orderedArticleId};"; + $this->_database->query($query); + } + } + + // On Post => Reload + if (isset($_POST["save"])) { + header("HTTP/1.1 303 See Other"); + header('Location: ' . $_SERVER['REQUEST_URI']); + die; + } + } + + /** + * This main-function has the only purpose to create an instance + * of the class and to get all the things going. + * I.e. the operations of the class are called to produce + * the output of the HTML-file. + * The name "main" is no keyword for php. It is just used to + * indicate that function as the central starting point. + * To make it simpler this is a static function. That is you can simply + * call it without first creating an instance of the class. + * @return void + */ + public static function main():void + { + try { + $page = new Baecker(); + $page->processReceivedData(); + $page->generateView(); + } catch (Exception $e) { + //header("Content-type: text/plain; charset=UTF-8"); + header("Content-type: text/html; charset=UTF-8"); + echo $e->getMessage(); + } + } +} + +// This call is starting the creation of the page. +// That is input is processed and output is created. +Baecker::main(); + +// Zend standard does not like closing php-tag! +// PHP doesn't require the closing tag (it is assumed when the file ends). +// Not specifying the closing ? > helps to prevent accidents +// like additional whitespace which will cause session +// initialization to fail ("headers already sent"). +//? > diff --git a/src/Praktikum/Prak5/Bestellung.php b/src/Praktikum/Prak5/Bestellung.php index a4333af855c60a57b1153ec6dee4fb7fe6a078a5..34d4745eb7e9c3dc789c104e5516bf04012c70e2 100644 --- a/src/Praktikum/Prak5/Bestellung.php +++ b/src/Praktikum/Prak5/Bestellung.php @@ -88,33 +88,33 @@ class Bestellung extends Page protected function generateView(): void { $data = $this->getViewData(); //NOSONAR ignore unused $data - $this->generatePageHeader('Bestellung', './JS/BestellScript.js'); + $this->generatePageHeader('Bestellung', './JS/BestellScript.js', false); echo <<< HTML - <section class="spacer" id="bestellungSection"> + <section id="bestellungSection"> <h1 id="bestellungTitle">Bestellung</h1> <hr> - <section class="flex-container flex-direction-row wrap justify-content-center" id="speisekarteSection"> - <h2>Bitte wählen Sie Ihre Pizzen ...</h2> + <section id="speisekarteSection"> + <h2>Speisekarte</h2> HTML; foreach ($data as $pizza) { echo <<< HTML - <label class="flex-item"> - + <label> <img class="pizzaImage" alt="Image of Pizza {$pizza->getName()}" src="{$pizza->getPicture()}" data-articleID="{$pizza->getArticleId()}" data-name="{$pizza->getName()}" data-price="{$pizza->getPrice()}" onclick="addItem(this);"> - <div class="flex-container flex-direction-column nowrap justify-content-center"> - <div>{$pizza->getName()}</div> - <div>{$pizza->getPrice()}€</div> - </div> + <br> + {$pizza->getName()}<br> + {$pizza->getPrice()}€ </label> + <br> HTML; } echo <<< HTML <script>getElements();</script> </section> + <hr> <section id="warenkorbSection"> <h2>Warenkorb</h2> <form accept-charset="UTF-8" action="#" method="post"> @@ -122,15 +122,13 @@ class Bestellung extends Page <select id="warenkorb" multiple name="Pizza[]"> </select> - <p id="sum">0 €</p> + <p id="sum"></p> <label for="address"></label> <input id="address" name="Adresse" placeholder="Ihre Adresse" type="text" required><br> - <div id="buttons"> - <input type="button" value="Alles Löschen" onclick="removeAll();"> - <input type="button" value="Auswahl Löschen" onclick="removeItem();"> - <input id="submitButton" type="submit" name="save" value="Bestellen" onclick="selectOrder();"> - </div> + <input type="button" value="Alles Löschen" onclick="removeAll();"> + <input type="button" value="Auswahl Löschen" onclick="removeItem();"> + <input id="submitButton" type="submit" name="save" value="Bestellen" onclick="selectOrder();"> </form> </section> </section> @@ -203,6 +201,7 @@ class Bestellung extends Page $page->processReceivedData(); $page->generateView(); } catch (Exception $e) { + //header("Content-type: text/plain; charset=UTF-8"); header("Content-type: text/html; charset=UTF-8"); echo $e->getMessage(); } diff --git a/src/Praktikum/Prak5/DB_Classes/Article.php b/src/Praktikum/Prak5/DB_Classes/Article.php new file mode 100644 index 0000000000000000000000000000000000000000..8c18b60d8d43c0b86d0c78cbf17e105d7d0f99a7 --- /dev/null +++ b/src/Praktikum/Prak5/DB_Classes/Article.php @@ -0,0 +1,39 @@ +<?php declare(strict_types=1); + +class Article +{ + private int $article_id; + private string $name; + private string $picture; + private float $price; + + public function getArticleId(): int + { + return $this->article_id; + } + + public function getName(): string + { + return $this->name; + } + + public function getPicture(): string + { + return $this->picture; + } + + public function getPrice(): float + { + return $this->price; + } + + + public function __construct(int $article_id = 0, string $name="", string $picture = "", float $price = 0.0) + { + $this->name = $name; + $this->article_id = $article_id; + $this->picture = $picture; + $this->price = $price; + } + +} diff --git a/src/Praktikum/Prak5/DB_Classes/FahrerData.php b/src/Praktikum/Prak5/DB_Classes/FahrerData.php new file mode 100644 index 0000000000000000000000000000000000000000..abbae1298828b147adffb5f046b7fdb3d32e5fd7 --- /dev/null +++ b/src/Praktikum/Prak5/DB_Classes/FahrerData.php @@ -0,0 +1,46 @@ +<?php + +class FahrerData +{ + private int $orderingId; + private int $orderedArticleId ; + private string $address; + private int $status; + + + /** + * @param int $orderingId + * @param int $orderedArticleId + * @param string $address + * @param int $status + * @param string $ordering_time + */ + public function __construct(int $orderingId, int $orderedArticleId, string $address, int $status) + { + $this->orderingId = $orderingId; + $this->orderedArticleId = $orderedArticleId; + $this->address = $address; + $this->status = $status; + } + + public function getOrderingId(): int + { + return $this->orderingId; + } + + public function getOrderedArticleId(): int + { + return $this->orderedArticleId; + } + + public function getAddress(): string + { + return $this->address; + } + + public function getStatus(): int + { + return $this->status; + } + +} diff --git a/src/Praktikum/Prak5/DB_Classes/OrderedArticle.php b/src/Praktikum/Prak5/DB_Classes/OrderedArticle.php new file mode 100644 index 0000000000000000000000000000000000000000..546ff3aa261bd92481501eaeba50917eaaf9b6d9 --- /dev/null +++ b/src/Praktikum/Prak5/DB_Classes/OrderedArticle.php @@ -0,0 +1,57 @@ +<?php declare(strict_types=1); +require_once './DB_Classes/Article.php'; +class OrderedArticle +{ + private int $ordered_article_id; + private int $ordering_id; + private int $article_id; + private int $status; + private Article $article; + + public function getArticle(): Article + { + return $this->article; + } + + public function setArticle(Article $article): void + { + $this->article = $article; + } + + public function getOrderedArticleId(): int + { + return $this->ordered_article_id; + } + + public function getOrderingId(): int + { + return $this->ordering_id; + } + + public function getArticleId(): int + { + return $this->article_id; + } + + public function getStatus(): int + { + return $this->status; + } + + + /** + * @param int $ordered_article_id + * @param int $ordering_id + * @param int $article_id + * @param int $status + */ + + public function __construct(int $ordered_article_id=0, int $ordering_id=0, int $article_id=0, int $status=0) + { + $this->ordered_article_id = $ordered_article_id; + $this->ordering_id = $ordering_id; + $this->article_id = $article_id; + $this->status = $status; + } + +} diff --git a/src/Praktikum/Prak5/DB_Classes/Ordering.php b/src/Praktikum/Prak5/DB_Classes/Ordering.php new file mode 100644 index 0000000000000000000000000000000000000000..7b27ca3a897e19ed9b8ef67aa882a0e08b39ae86 --- /dev/null +++ b/src/Praktikum/Prak5/DB_Classes/Ordering.php @@ -0,0 +1,72 @@ +<?php declare(strict_types=1); + +class Ordering +{ + private int $ordering_id; + private string $address; + private string $ordering_time; + private array $orderList; + + public function getOrderList(): array + { + return $this->orderList; + } + + public function setOrderList(array $orderList) : void + { + $this->orderList = $orderList; + } + + public function addItem(OrderedArticle $article) : void + { + $this->orderList[] = $article; + } + + public function getMinStatus() : int + { + $valueArray = array(); + foreach ($this->orderList as $item) { + + $valueArray[] = $item->getStatus(); + } + return min($valueArray); + } + + public function getSum() : float + { + $valueArray = array(); + foreach ($this->orderList as $item) { + + $valueArray[] = $item->getArticle()->getPrice(); + } + return array_sum($valueArray); + } + + /** + * @param int $ordering_id + * @param string $address + * @param string $ordering_time + */ + public function __construct(int $ordering_id=0, string $address="", string $ordering_time="") + { + $this->ordering_id = $ordering_id; + $this->address = $address; + $this->ordering_time = $ordering_time; + } + + public function getOrderingId(): int + { + return $this->ordering_id; + } + + public function getAddress(): string + { + return $this->address; + } + + public function getOrderingtime(): string + { + return $this->ordering_time; + } + +} diff --git a/src/Praktikum/Prak5/Fahrer.php b/src/Praktikum/Prak5/Fahrer.php index d09eeedc095f93e47ae7d405efe4289cb468ebc0..6731a367805d99db417381a6595fcfa00cd41752 100644 --- a/src/Praktikum/Prak5/Fahrer.php +++ b/src/Praktikum/Prak5/Fahrer.php @@ -218,6 +218,7 @@ HTML; $page->processReceivedData(); $page->generateView(); } catch (Exception $e) { + //header("Content-type: text/plain; charset=UTF-8"); header("Content-type: text/html; charset=UTF-8"); echo $e->getMessage(); } diff --git a/src/Praktikum/Prak5/JS/BestellScript.js b/src/Praktikum/Prak5/JS/BestellScript.js new file mode 100644 index 0000000000000000000000000000000000000000..36a827ed781244c72ea92649afd78ed217129f8d --- /dev/null +++ b/src/Praktikum/Prak5/JS/BestellScript.js @@ -0,0 +1,84 @@ +let pizzaPriceMap = new Map(); +function getElements() { + "use strict"; + let pizzaImages = document.getElementsByClassName("pizzaImage"); + for (let item of pizzaImages) { + pizzaPriceMap.set( + item.getAttribute("data-articleID"), + item.getAttribute("data-price") + ); + } +} + +function addItem(pizza) { + "use strict"; + let articleID = pizza.getAttribute("data-articleID"); + let name = pizza.getAttribute("data-name"); + let select = document.getElementById("warenkorb"); + let newOption = document.createElement("option"); + newOption.text = name; + newOption.value = articleID; + select.add(newOption); + calculateSum(); + checkInputs(); +} + +function calculateSum() { + "use strict"; + let select = document.getElementById("warenkorb"); + let price = 0; + for (let item of select.options) { + price += parseFloat(pizzaPriceMap.get(item.value)); + } + document.getElementById("sum").innerText = price.toFixed(2) + " €"; +} + +function removeItem() { + "use strict"; + let select = document.getElementById("warenkorb"); + select.remove(select.selectedIndex); + calculateSum(); + checkInputs(); +} + +function removeAll() { + "use strict"; + let select = document.getElementById("warenkorb"); + select.options.length = 0; + calculateSum(); + checkInputs(); +} + +function selectOrder() { + "use strict"; + let select = document.getElementById("warenkorb"); + for (let option of select.options) { + option.selected = true; + } +} + +function checkInputs() { + "use strict"; + const selectInput = document.getElementById("warenkorb"); + const address = document.getElementById("address"); + const button = document.getElementById("submitButton"); + + // Check conditions + const selectHasOptions = selectInput.options.length > 0; + const addressHasValue = address.value.trim() !== ""; + + // Enable or disable the button + button.disabled = !(selectHasOptions && addressHasValue); +} + +//--- LISTENERS + +window.onload = function init() { + "use strict"; + document.getElementById("address").addEventListener("input", checkInputs); +}; + +document.addEventListener( + "DOMContentLoaded", + checkInputs +); // Check on page load diff --git a/src/Praktikum/Prak5/JS/DEPRECATED/OrderData.js b/src/Praktikum/Prak5/JS/DEPRECATED/OrderData.js new file mode 100644 index 0000000000000000000000000000000000000000..a8a8b68c1e82f470e8e51b1144033eadc81c496e --- /dev/null +++ b/src/Praktikum/Prak5/JS/DEPRECATED/OrderData.js @@ -0,0 +1,59 @@ +class OrderData { + + constructor(orderingID, address, pizzaObj) { + + this.orderingID = orderingID; + this.address = address; + this.pizzaObj = pizzaObj; + this.buildOrder(); + + } + + + buildOrder() { + + let orderMainNode = document.createElement("fieldset"); + orderMainNode.id = this.orderingID; + + let orderLegend = document.createElement("legend"); + orderLegend.id = this.orderingID + ".legend"; + + orderMainNode.append(orderLegend); + + this.buildPizza(orderMainNode) + } + + buildPizza(orderMainNode) { + let pizzaList = this.pizzaObj.pizzaList; + for (let pizza of pizzaList) { + let pizzaName = pizza.name; + let orderedArticleID = pizza.orderedArticleID; + let pizzaStatus = pizza.status; + let pizzaNode = document.createElement("fieldset"); + let pizzaLegend = document.createElement("legend"); + pizzaNode.id = "pizzaNode." + orderedArticleID; + pizzaLegend.innerText = "Pizza " + pizzaName; + pizzaNode.append(pizzaLegend); + this.buildInputs(pizzaNode, orderedArticleID, pizzaStatus); + orderMainNode.append(pizzaNode); + } + } + + buildInputs(pizzaNode, orderedArticleID, status) { + let statusArray = ["Bestellt", "Im Ofen", "Fertig", "Unterwegs", "Geliefert"]; + for (let value = 0; value < 5; value++) { + let inputLabel = document.createElement("label"); + pizzaNode.append(inputLabel); + inputLabel.innerText = statusArray[value]; + let inputRadio = document.createElement("input"); + inputLabel.append(inputRadio); + inputRadio.type = "radio"; + inputRadio.name = orderedArticleID; + inputRadio.value = value.toString(); + inputRadio.disabled = true; + if (value === status) { + inputRadio.checked = true; + } + } + } +} diff --git a/src/Praktikum/Prak5/JS/Kunde.js b/src/Praktikum/Prak5/JS/Kunde.js new file mode 100644 index 0000000000000000000000000000000000000000..402bb5d4f60ffe68f34b5fb70f0899c2a30be809 --- /dev/null +++ b/src/Praktikum/Prak5/JS/Kunde.js @@ -0,0 +1,149 @@ +function loadData() { + "use strict"; + var url = "./Kundenstatus.php"; + var request = new XMLHttpRequest(); + + request.open("GET", url, true); + + request.onload = function () { + + if (request.readyState === 4 && + request.status >= 200 && + request.status < 300) { + + if (request.responseText != null) { + + var responseData = JSON.parse(request.responseText); + console.log(responseData); + process(responseData); + } else { + console.error ("Dokument ist leer"); + } + } else { + console.error("Statuscode: " + request.status); + } + }; + + request.onerror = function () { + "use strict"; + console.error("Netzwerkfehler"); + }; + + //request.onreadystatechange = processData; + + request.send(); +} + +const newScript = document.createElement("script"); +newScript.src = "./JS/OrderData.js"; +newScript.type = "module"; +document.getElementsByTagName("body")[0].prepend(newScript); + + +function process(data) { + + "use strict"; + + const orderForm = document.getElementById("orderForm"); + if (orderForm != null) { + + while (orderForm.lastElementChild) { + orderForm.removeChild(orderForm.lastElementChild); + } + + + for (let [orderingID, order] of Object.entries(data)) { + + let pizzaObj = { + pizzaList: [] + }; + + //orderForm.append(testBuildOrder(orderingID)); + + let orderList = order["OrderList"] + for (let [orderedArticleID, pizza] of Object.entries(orderList)) { + + let name = pizza["Name"]; + let price = parseFloat(pizza["Price"]); + let status = parseInt(pizza["Status"]); + + let newPizza = { + orderedArticleID: orderedArticleID, + name: name, + price: price, + status: status + }; + pizzaObj.pizzaList.push(newPizza); + } + buildOrder(orderForm, orderingID, pizzaObj); + } + + } +} + + +window.onload = function () { + + "use strict"; + loadData(); +} + +window.setInterval (loadData, 2000); + + + +function buildOrder(parentNode, id, pizzaObj) { + "use strict"; + let orderMainNode = document.createElement("fieldset"); + orderMainNode.id = id; + + let orderLegend = document.createElement("legend"); + orderLegend.id = id + ".legend"; + orderLegend.innerText = "Bestellung " + id; + + orderMainNode.append(orderLegend); + buildPizza(orderMainNode, pizzaObj); + + parentNode.append(orderMainNode); +} + +function buildPizza(orderMainNode, pizzaObj) { + "use strict"; + let pizzaList = pizzaObj.pizzaList; + for (let pizza of pizzaList) { + + let pizzaName = pizza.name; + let orderedArticleID = pizza.orderedArticleID; + let pizzaStatus = pizza.status; + + let pizzaNode = document.createElement("fieldset"); + let pizzaLegend = document.createElement("legend"); + pizzaNode.id = "pizzaNode." + orderedArticleID; + pizzaLegend.innerText = "Pizza " + pizzaName; + pizzaNode.append(pizzaLegend); + buildInputs(pizzaNode, orderedArticleID, pizzaStatus); + orderMainNode.append(pizzaNode); + } +} + +function buildInputs(pizzaNode, orderedArticleID, status) { + "use strict"; + let statusArray = [ + "Bestellt", "Im Ofen", "Fertig", + "Unterwegs", "Geliefert" + ]; + for (let value = 0; value < 5; value++) { + let inputLabel = document.createElement("label"); + pizzaNode.append(inputLabel); + let inputRadio = document.createElement("input"); + inputLabel.append(inputRadio); + inputLabel.innerText = statusArray[value]; + inputRadio.type = "radio"; + inputRadio.name = orderedArticleID; + inputRadio.value = value.toString(); + inputRadio.disabled = true; + if (value === status) { + inputRadio.checked = true; + } + } +} diff --git a/src/Praktikum/Prak5/Kunde.php b/src/Praktikum/Prak5/Kunde.php index 93b68cd0eb4e54a42d5c5bad699897a077494462..31570b23b1dc9115d98403e2c21292c8196474b9 100644 --- a/src/Praktikum/Prak5/Kunde.php +++ b/src/Praktikum/Prak5/Kunde.php @@ -192,6 +192,7 @@ HTML; $page->processReceivedData(); $page->generateView(); } catch (Exception $e) { + //header("Content-type: text/plain; charset=UTF-8"); header("Content-type: text/html; charset=UTF-8"); echo $e->getMessage(); } diff --git a/src/Praktikum/Prak5/Kundenstatus.php b/src/Praktikum/Prak5/Kundenstatus.php index bd184fcffad298103c6b1110ec97cdd5a82ac29a..743f34fb91eac9470d83771d74cf1b2bfd2b75b7 100644 --- a/src/Praktikum/Prak5/Kundenstatus.php +++ b/src/Praktikum/Prak5/Kundenstatus.php @@ -155,6 +155,7 @@ class Kundenstatus extends Page $page->processReceivedData(); $page->generateView(); } catch (Exception $e) { + //header("Content-type: text/plain; charset=UTF-8"); header("Content-type: text/html; charset=UTF-8"); echo $e->getMessage(); } diff --git a/src/Praktikum/Prak5/img/pizzaAfterburner.png b/src/Praktikum/Prak5/img/pizzaAfterburner.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1ec7b18078ec437044123e1d22f7d17f330a0e Binary files /dev/null and b/src/Praktikum/Prak5/img/pizzaAfterburner.png differ diff --git a/src/Praktikum/Prak5/img/pizzaSalami.png b/src/Praktikum/Prak5/img/pizzaSalami.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e3173732265805437e6003bf8bc17158a3b192 Binary files /dev/null and b/src/Praktikum/Prak5/img/pizzaSalami.png differ diff --git a/src/Praktikum/Prak5/img/pizzaVegetaria.png b/src/Praktikum/Prak5/img/pizzaVegetaria.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4185fc015831c6d40db61c9cf7d854dc4741d9 Binary files /dev/null and b/src/Praktikum/Prak5/img/pizzaVegetaria.png differ diff --git a/src/Praktikum/Prak5/index.php b/src/Praktikum/Prak5/index.php index f10150d298f6902f16a61b27348460d961e9143e..19e65e0300b9599f3fe7378f718a8f6ecb69cea1 100644 --- a/src/Praktikum/Prak5/index.php +++ b/src/Praktikum/Prak5/index.php @@ -127,6 +127,7 @@ class Index extends Page $page->processReceivedData(); $page->generateView(); } catch (Exception $e) { + //header("Content-type: text/plain; charset=UTF-8"); header("Content-type: text/html; charset=UTF-8"); echo $e->getMessage(); }