Fertig M4

This commit is contained in:
Robert
2023-12-08 18:42:04 +01:00
parent 070945c4a5
commit 96079ebc6d
14 changed files with 424 additions and 56 deletions

67
.idea/workspace.xml generated
View File

@@ -5,17 +5,18 @@
</component>
<component name="ChangeListManager">
<list default="true" id="6dcbe3e4-9d68-41d8-8c39-5cfbe5cd4a21" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/M4/emensa/models/gerichte_self.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/examples/m4_7b_kategorie.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/examples/m4_7c_gerichte.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/examples/pages/m4_7d_page_1.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/examples/pages/m4_7d_page_2.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/layouts/m4_7d_layout.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources/a1d1df29-b94a-4ad6-bd6f-a458b97a6c0c.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/a1d1df29-b94a-4ad6-bd6f-a458b97a6c0c.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/controllers/MainController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/models/gerichte_main.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/public/css/style.css" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/public/img/fh-logo.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/public/img/mensa21.jpg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/layouts/main_layout.blade.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/M4/emensa/views/main/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/M3/Werbeseite/index.php" beforeDir="false" afterPath="$PROJECT_DIR$/M3/Werbeseite/index.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/M4/Werbeseite/index.php" beforeDir="false" afterPath="$PROJECT_DIR$/M4/Werbeseite/index.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/M4/emensa.zip" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/M4/emensa/models/gerichte_self.php" beforeDir="false" afterPath="$PROJECT_DIR$/M4/emensa/models/gerichte_self.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/M4/emensa/routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/M4/emensa/routes/web.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/M4/emensa/storage/cache/.layouts.m4_7d_layout_ecc36cbad49aa38782cc08cc5e9ca6c7ae3590d0.bladec" beforeDir="false" afterPath="$PROJECT_DIR$/M4/emensa/storage/cache/.layouts.m4_7d_layout_ecc36cbad49aa38782cc08cc5e9ca6c7ae3590d0.bladec" afterDir="false" />
<change beforePath="$PROJECT_DIR$/M4/emensa/views/layouts/m4_7d_layout.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/M4/emensa/views/layouts/m4_7d_layout.blade.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -46,28 +47,34 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
&quot;database.data.extractors.current.export.id&quot;: &quot;Comma-separated (CSV)_id&quot;,
&quot;git-widget-placeholder&quot;: &quot;dev/m4__robert&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/Users/rober/Documents/GitHub/DBWT-Praktika/M3/werbeseite_daten.sql&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "false",
"database.data.extractors.current.export.id": "Comma-separated (CSV)_id",
"git-widget-placeholder": "dev/m4__robert",
"last_opened_file_path": "C:/Users/rober/Documents/GitHub/DBWT-Praktika/M4/emensa/public/img",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"settings.editor.selected.configurable": "preferences.pluginManager",
"vue.rearranger.settings.migration": "true"
},
&quot;keyToStringList&quot;: {
&quot;DatabaseDriversLRU&quot;: [
&quot;mariadb&quot;
"keyToStringList": {
"DatabaseDriversLRU": [
"mariadb"
]
}
}</component>
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\rober\Documents\GitHub\DBWT-Praktika\M4\emensa\public\img" />
<recent name="C:\Users\rober\Documents\GitHub\DBWT-Praktika\M4\emensa\public\css" />
</key>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
@@ -77,7 +84,7 @@
<option name="presentableId" value="Default" />
<updated>1700736495450</updated>
<workItem from="1700736497007" duration="15223000" />
<workItem from="1702027267170" duration="7917000" />
<workItem from="1702027267170" duration="12429000" />
</task>
<servers />
</component>

View File

@@ -0,0 +1,21 @@
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/../models/gerichte_main.php');
class MainController
{
public function index() {
/*
Wenn Sie hier landen:
bearbeiten Sie diese Action,
so dass Sie die Aufgabe löst
*/
$data = db_gericht_select_karte();
return view('main.index', [
'data'=>$data,
'url' => 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://' . "{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"
]);
}
}

View File

@@ -0,0 +1,75 @@
<?php
function db_gericht_select_karte()
{
try {
$link = connectdb();
$sql_gerichte = "SELECT * FROM gericht ORDER BY RAND() LIMIT 5";
$result_sql_gerichte = mysqli_query($link, $sql_gerichte);
$tabelle = "<table class=\"speisen\"><tr class=\"speisen\"> <td>Gerichte</td><td>Preis intern</td><td>Preis extern</td><td>Bild</td></tr>";
$verwendete_allergene_code = [];
$verwendete_allergene_string = "";
while ($row_gerichte = mysqli_fetch_assoc($result_sql_gerichte)) {
// Abfrage der vorhandenen Allergene im aktuellen Gericht
$sql_gericht_hat_allergene = "SELECT * FROM gericht_hat_allergen WHERE gericht_id=" . $row_gerichte['id'];
$result_sql_gericht_hat_allergene = mysqli_query($link, $sql_gericht_hat_allergene);
$allergene = "";
while ($row_allergene = mysqli_fetch_assoc($result_sql_gericht_hat_allergene)) {
$allergene .= $row_allergene['code'] . ", ";
if (!in_array($row_allergene['code'], $verwendete_allergene_code)) {
$verwendete_allergene_code[] = $row_allergene['code'];
}
}
// Preise in EUR
$preisintern = number_format($row_gerichte['preisintern'], 2, ',', '.');
$preisextern = number_format($row_gerichte['preisextern'], 2, ',', '.');
// Ausgabe des aktuellen Gerichts
$tabelle .= "<tr class=\"speisen\"><td>" . htmlspecialchars($row_gerichte['name']) . " <sup>" . htmlspecialchars($allergene) . "</sup></td><td>" . htmlspecialchars($preisintern) . "€</td><td>" . htmlspecialchars($preisextern) . "€</td><td>Kein Bild in der Datenbank </td></tr>";
}
$tabelle .= "</table>";
// Abfrage der Allergen Code und Name
$sql_allergen = "SELECT code, name FROM allergen";
$result_sql_allergen = mysqli_query($link, $sql_allergen);
while ($row_allergen = mysqli_fetch_assoc($result_sql_allergen)){
if (in_array($row_allergen['code'], $verwendete_allergene_code)){
$verwendete_allergene_string .= "<sup>". htmlspecialchars($row_allergen['code']) ."</sup> ". htmlspecialchars($row_allergen['name']) . ", ";
}
}
$data = [
"gericht" => $tabelle,
"allergene" => $verwendete_allergene_string
];
mysqli_close($link);
} catch (Exception $ex) {
$data = array(
'id' => '-1',
'error' => true,
'name' => 'Datenbankfehler ' . $ex->getCode(),
'beschreibung' => $ex->getMessage());
} finally {
return $data;
}
}

View File

@@ -1,27 +1,23 @@
<?php
/**
* Diese Datei enthält alle SQL Statements für die Tabelle "gerichte"
*/
function db_gericht_select_intern() {
try {
$link = connectdb();
$sql = 'SELECT name, preisintern FROM gericht WHERE preisintern > 2 ORDER BY name DESC';
$result = mysqli_query($link, $sql);
function db_gericht_select_intern()
{
try {
$link = connectdb();
$data = mysqli_fetch_all($result, MYSQLI_BOTH);
$sql = 'SELECT name, preisintern FROM gericht WHERE preisintern > 2 ORDER BY name DESC';
$result = mysqli_query($link, $sql);
mysqli_close($link);
}
catch (Exception $ex) {
$data = array(
'id'=>'-1',
'error'=>true,
'name' => 'Datenbankfehler '.$ex->getCode(),
'beschreibung' => $ex->getMessage());
}
finally {
return $data;
}
$data = mysqli_fetch_all($result, MYSQLI_BOTH);
mysqli_close($link);
} catch (Exception $ex) {
$data = array(
'id' => '-1',
'error' => true,
'name' => 'Datenbankfehler ' . $ex->getCode(),
'beschreibung' => $ex->getMessage());
} finally {
return $data;
}
}

View File

@@ -0,0 +1,90 @@
* {
font-family: Arial;
}
.grid {
display: grid;
grid-template-columns: 200px auto 200px;
}
img {
width: 100%;
height: auto;
}
.speisen {
border: solid;
border-collapse: collapse;
}
.speisen td {
border: solid;
border-collapse: collapse;
border-radius: 4px;
padding: 5px;
width: auto;
}
.speisen td:not(:first-of-type) {
text-align: center;
}
p {
text-align: justify;
}
.zahlen {
list-style-type: none;
display: grid;
grid-template-columns: auto auto auto;
gap: 10px;
}
.zahlen p {
text-align: center;
font-weight: bold;
}
.formular {
display: grid;
grid-template-columns: auto auto auto;
justify-content: start;
gap: 10px;
}
.wichtig {
text-align: center;
}
.wichtigListe {
display: inline-block;
text-align: left;
}
.freude {
text-align: center;
}
footer {
border-top: 1px solid;
}
.fusszeile {
padding-top: 20px;
padding-bottom: 20px;
margin-left: auto;
margin-right: auto;
border: none;
}
.fusszeile td:first-child {
border-left: none;
padding-left: 20px;
padding-right: 20px;
}
.fusszeile td {
border-left: 3px solid;
padding-left: 20px;
padding-right: 20px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -7,7 +7,7 @@
*/
return array(
'/' => "HomeController@index",
'/' => "MainController@index",
"/demo" => "DemoController@demo",
'/dbconnect' => 'DemoController@dbconnect',
'/debug' => 'HomeController@debug',

View File

@@ -1,5 +1,3 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>

View File

@@ -0,0 +1,30 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>
<meta charset="utf-8">
<title><?php echo \htmlentities($title??'', ENT_QUOTES, 'UTF-8', false); ?></title>
<?php echo $this->yieldContent("header"); ?>
<!-- good developers check the markup ;) -->
</head>
<body>
<?php echo $this->yieldContent("nav"); ?>
<hr>
<div class="grid">
<div></div>
<div>
<?php echo $this->yieldContent("text"); ?>
<?php echo $this->yieldContent("gerichte"); ?>
</div>
<div></div>
</div>
<footer>
<table class="fusszeile">
<?php echo $this->yieldContent("footer"); ?>
</table>
</footer>
</body>
</html>

View File

@@ -0,0 +1,62 @@
<?php $_shouldextend[1]=1; ?>
<?php $this->startSection("header"); ?>
<link rel="stylesheet" href="/css/style.css">
<?php $this->stopSection(); ?>
<?php $this->startSection("nav"); ?>
<div class="grid">
<div>
<img src="/img/fh-logo.jpg" alt="FH-Logo">
</div>
<div>
<a href="#ankündigung">Ankündigung</a>
<a href="#speisen">Speisen</a>
<a href="#zahlen">Zahlen</a>
<a href="#kontakt">Kontakt</a>
<a href="#wichtig">Wichtig für uns</a>
</div>
</div>
<?php $this->stopSection(); ?>
<?php $this->startSection("text"); ?>
<img src="/img/mensa21.jpg" alt="Essen">
<h1 id="ankündigung">Bald gibt es auch Essen online ;)</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<h1 id="speisen">Köstlichkeiten die Sie erwarten</h1>
<?php $this->stopSection(); ?>
<?php $this->startSection("gerichte"); ?>
<?php if(isset($data['error'])): ?>
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
<p>Fehlermeldung</p>
<pre> <?php echo \htmlentities($data['beschreibung']??'', ENT_QUOTES, 'UTF-8', false); ?></pre>
<?php else: ?>
<?php
echo $data["gericht"];
echo $data["allergene"];
?>
<?php endif; ?>
<?php $this->stopSection(); ?>
<?php $this->startSection("footer"); ?>
<tr>
<td>(c) E-Mensa GmbH</td>
<td>Şafak Hazinedar & Robert Joel</td>
<td><a href="">Impressum</a></td>
</tr>
<?php $this->stopSection(); ?>
<?php if (isset($_shouldextend[1])) { echo $this->runChild("layouts.main_layout", ['title' => "E-Mensa"]); } ?>

View File

@@ -1,5 +1,3 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>

View File

@@ -0,0 +1,30 @@
<!doctype html>
<html class="no-js" lang="DE">
<head>
<meta charset="utf-8">
<title>{{ $title }}</title>
@yield("header")
<!-- good developers check the markup ;) -->
</head>
<body>
@yield("nav")
<hr>
<div class="grid">
<div></div>
<div>
@yield("text")
@yield("gerichte")
</div>
<div></div>
</div>
<footer>
<table class="fusszeile">
@yield("footer")
</table>
</footer>
</body>
</html>

View File

@@ -0,0 +1,61 @@
@extends("layouts.main_layout", ['title' => "E-Mensa"])
@section("header")
<link rel="stylesheet" href="/css/style.css">
@endsection
@section("nav")
<div class="grid">
<div>
<img src="/img/fh-logo.jpg" alt="FH-Logo">
</div>
<div>
<a href="#ankündigung">Ankündigung</a>
<a href="#speisen">Speisen</a>
<a href="#zahlen">Zahlen</a>
<a href="#kontakt">Kontakt</a>
<a href="#wichtig">Wichtig für uns</a>
</div>
</div>
@endsection
@section("text")
<img src="/img/mensa21.jpg" alt="Essen">
<h1 id="ankündigung">Bald gibt es auch Essen online ;)</h1>
<p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet,
consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no
sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
<h1 id="speisen">Köstlichkeiten die Sie erwarten</h1>
@endsection
@section("gerichte")
@if (isset($data['error']))
<h1>Es gab ein Problem mit der Datenbankverbindung</h1>
<p>Fehlermeldung</p>
<pre> {{$data['beschreibung']}}</pre>
@else
<?php
echo $data["gericht"];
echo $data["allergene"];
?>
@endif
@endsection
@section("footer")
<tr>
<td>(c) E-Mensa GmbH</td>
<td>Şafak Hazinedar & Robert Joel</td>
<td><a href="">Impressum</a></td>
</tr>
@endsection