10 Commits

Author SHA1 Message Date
S170H
0badfa680b M3 Dossier 2023-11-24 17:21:12 +01:00
S170H
6ef64f0f4e M3 added .md for Aufgabe 3 2023-11-22 08:48:48 +01:00
S170H
f6f230dac7 M3 bis Aufgabe 5 2023-11-22 02:56:18 +01:00
S170H
8994cc40d6 M3 2 Update 2023-11-15 19:09:52 +01:00
Robert
72ecc1e836 Final Abgabe 2 2023-11-10 16:27:12 +01:00
Robert
2cbfe5ee61 Final Abgabe 2 2023-11-10 15:21:47 +01:00
Robert
d98acc1ce0 Update 2023-11-10 15:20:26 +01:00
Robert
09d786ea9b Upate 2023-11-10 15:18:31 +01:00
Robert
9382b6375a Merge pull request #2 from S170H/dev/m2_safak
Dev/m2 safak
2023-11-10 15:02:46 +01:00
Robert
17646a1ecd 7 und 9 fertig 2023-11-10 14:58:27 +01:00
40 changed files with 898 additions and 67 deletions

8
.idea/modules.xml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/DBWT-Praktika.iml" filepath="$PROJECT_DIR$/.idea/DBWT-Praktika.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated
View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

8
M1/.idea/.gitignore generated vendored
View File

@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

8
M1/.idea/M1.iml generated
View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

19
M1/.idea/php.xml generated
View File

@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

8
M2/.idea/.gitignore generated vendored
View File

@@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,210 @@
Index: ../M1/.idea/vcs.xml
===================================================================
diff --git a/../M1/.idea/vcs.xml b/../M1/.idea/vcs.xml
deleted file mode 100644
--- a/../M1/.idea/vcs.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
- </component>
-</project>
\ No newline at end of file
Index: ../M1/.idea/.gitignore
===================================================================
diff --git a/../M1/.idea/.gitignore b/../M1/.idea/.gitignore
deleted file mode 100644
--- a/../M1/.idea/.gitignore (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
Index: ../.idea/modules.xml
===================================================================
diff --git a/../.idea/modules.xml b/../.idea/modules.xml
deleted file mode 100644
--- a/../.idea/modules.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/DBWT-Praktika.iml" filepath="$PROJECT_DIR$/.idea/DBWT-Praktika.iml" />
- </modules>
- </component>
-</project>
\ No newline at end of file
Index: ../M1/.idea/M1.iml
===================================================================
diff --git a/../M1/.idea/M1.iml b/../M1/.idea/M1.iml
deleted file mode 100644
--- a/../M1/.idea/M1.iml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
- <component name="NewModuleRootManager">
- <content url="file://$MODULE_DIR$" />
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
\ No newline at end of file
Index: ../.idea/php.xml
===================================================================
diff --git a/../.idea/php.xml b/../.idea/php.xml
deleted file mode 100644
--- a/../.idea/php.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="MessDetectorOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
- <component name="PHPCSFixerOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
- <component name="PHPCodeSnifferOptionsConfiguration">
- <option name="highlightLevel" value="WARNING" />
- <option name="transferred" value="true" />
- </component>
- <component name="PhpProjectSharedConfiguration" php_language_level="8.2" />
- <component name="PhpStanOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
- <component name="PsalmOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
-</project>
\ No newline at end of file
Index: ../.idea/DBWT-Praktika.iml
===================================================================
diff --git a/../.idea/DBWT-Praktika.iml b/../.idea/DBWT-Praktika.iml
deleted file mode 100644
--- a/../.idea/DBWT-Praktika.iml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
- <component name="NewModuleRootManager">
- <content url="file://$MODULE_DIR$" />
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
\ No newline at end of file
Index: ../M1/.idea/php.xml
===================================================================
diff --git a/../M1/.idea/php.xml b/../M1/.idea/php.xml
deleted file mode 100644
--- a/../M1/.idea/php.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="MessDetectorOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
- <component name="PHPCSFixerOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
- <component name="PHPCodeSnifferOptionsConfiguration">
- <option name="highlightLevel" value="WARNING" />
- <option name="transferred" value="true" />
- </component>
- <component name="PhpStanOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
- <component name="PsalmOptionsConfiguration">
- <option name="transferred" value="true" />
- </component>
-</project>
\ No newline at end of file
Index: ../.idea/.gitignore
===================================================================
diff --git a/../.idea/.gitignore b/../.idea/.gitignore
deleted file mode 100644
--- a/../.idea/.gitignore (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
Index: .idea/.gitignore
===================================================================
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
--- a/.idea/.gitignore (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
Index: ../M1/.idea/modules.xml
===================================================================
diff --git a/../M1/.idea/modules.xml b/../M1/.idea/modules.xml
deleted file mode 100644
--- a/../M1/.idea/modules.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/M1.iml" filepath="$PROJECT_DIR$/.idea/M1.iml" />
- </modules>
- </component>
-</project>
\ No newline at end of file
Index: ../.idea/vcs.xml
===================================================================
diff --git a/../.idea/vcs.xml b/../.idea/vcs.xml
deleted file mode 100644
--- a/../.idea/vcs.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ /dev/null (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="" vcs="Git" />
- </component>
-</project>
\ No newline at end of file
Index: .idea/php.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
<+><?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<project version=\"4\">\r\n <component name=\"MessDetectorOptionsConfiguration\">\r\n <option name=\"transferred\" value=\"true\" />\r\n </component>\r\n <component name=\"PHPCSFixerOptionsConfiguration\">\r\n <option name=\"transferred\" value=\"true\" />\r\n </component>\r\n <component name=\"PHPCodeSnifferOptionsConfiguration\">\r\n <option name=\"highlightLevel\" value=\"WARNING\" />\r\n <option name=\"transferred\" value=\"true\" />\r\n </component>\r\n <component name=\"PhpProjectSharedConfiguration\" php_language_level=\"8.0\" />\r\n <component name=\"PhpStanOptionsConfiguration\">\r\n <option name=\"transferred\" value=\"true\" />\r\n </component>\r\n <component name=\"PsalmOptionsConfiguration\">\r\n <option name=\"transferred\" value=\"true\" />\r\n </component>\r\n</project>
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/.idea/php.xml b/.idea/php.xml
--- a/.idea/php.xml (revision 1b5faa0d69e292e2649269e271b773eaad28f5d1)
+++ b/.idea/php.xml (date 1700047317911)
@@ -10,7 +10,6 @@
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
- <component name="PhpProjectSharedConfiguration" php_language_level="8.0" />
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>

View File

@@ -0,0 +1,4 @@
<changelist name="Uncommitted_changes_before_Checkout_at_15_11_2023_12_24_[Changes]" date="1700047474245" recycled="true" deleted="true">
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Checkout_at_15_11_2023_12_24_[Changes]/shelved.patch" />
<option name="DESCRIPTION" value="Uncommitted changes before Checkout at 15.11.2023 12:24 [Changes]" />
</changelist>

62
M2/.idea/workspace.xml generated Normal file
View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="3addb60f-b39d-430d-91ac-acb76c147edc" name="Changes" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ComposerSettings">
<execution />
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$/.." value="dev/m2_safak" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
</component>
<component name="PhpWorkspaceProjectConfiguration" interpreter_name="C:\Program Files\php-8.2.11-Win32-vs16-x64\php.exe" />
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 8
}</component>
<component name="ProjectId" id="2YD5QUlQAhlJaWMg3ierW7DDTbq" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"WebServerToolWindowFactoryState": "false",
"git-widget-placeholder": "dev/m3__safak",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"vue.rearranger.settings.migration": "true"
}
}]]></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">
<changelist id="3addb60f-b39d-430d-91ac-acb76c147edc" name="Changes" comment="" />
<created>1700047295160</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1700047295160</updated>
<workItem from="1700047298386" duration="519000" />
<workItem from="1700071102317" duration="599000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
</project>

View File

@@ -20,18 +20,23 @@ while ($line = fgets($enFile)) {
$fileLines[] = $line;
}
$found = false;
foreach ($fileLines as $line){
$lineArray[] = explode(' ', $line);
//echo var_dump($lineArray);
$lineArray[] = explode(';', $line);
$deutsch = $lineArray[0][0];
echo $line."|";
if($deutsch==$searchTerm){
echo "ja";
if(strtolower($deutsch)==strtolower($searchTerm)){
$found = true;
echo $searchTerm." bedeutet ".$lineArray[0][1];
}
unset($lineArray);
}
if(!$found){
if(!empty($searchTerm)){
echo "Das gesuchte Wort ".$searchTerm." ist nicht enthalten";
}
}
?>
<form method="get">

View File

@@ -1 +1 @@
55
64

View File

@@ -8,7 +8,9 @@
include "gerichte.php";
$besucherCount = 0;
$newletterCount = 0;
//Besucher counter
if (file_exists("besucher.txt")) {
$besucherFile = fopen("besucher.txt", "r");
$besucherCount = fgets($besucherFile) + 1;
@@ -22,6 +24,17 @@ if (file_exists("besucher.txt")) {
fclose($besucherFile);
}
//Newletter counter
if (file_exists("newletter.txt")) {
$newsFile = fopen("newletter.txt", "r");
$newletterCount = fgets($newsFile);
fclose($newsFile);
} else {
$newsFile = fopen("newletter.txt", "w");
fwrite($newsFile, 0);
fclose($newsFile);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
@@ -67,6 +80,12 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo '<script type="text/javascript">';
echo 'alert("Vielen Dank für Ihre Anmeldung zum Newsletter.");';
echo '</script>';
//Newsletter counter
$newletterCount++;
$newsFile = fopen("newletter.txt", "w");
fwrite($newsFile, $newletterCount);
fclose($newsFile);
} else {
echo '<script type="text/javascript">';
echo 'alert("Es gab einen Fehler bei Ihrer Anmeldung. Bitte versuchen Sie es erneut.");';
@@ -234,7 +253,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
<h1 id="zahlen">E-Mensa in Zahlen</h1>
<div class="zahlen">
<p><?php echo $besucherCount; ?> Besuche</p>
<p>Y Anmeldungen zum Newsletter</p>
<p><?php echo $newletterCount; ?> Anmeldungen zum Newsletter</p>
<p><?php echo count($gerichte); ?> Speisen</p>
</div>
<h1 id="kontakt">Interesse geweckt? Wir informieren</h1>

View File

@@ -0,0 +1 @@
1

View File

@@ -1 +1 @@
[{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"}]
[{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Ro","email":"robert-joel@web.de","language":"deutsch","terms":"on"},{"name":"Robert","email":"robert-joel@web.de","language":"deutsch","terms":"on"}]

BIN
M2/dossier M2.xlsx Normal file

Binary file not shown.

Binary file not shown.

View File

12
M3/.idea/dataSources.xml generated Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
<data-source source="LOCAL" name="emensawerbeseite" uuid="9b92c113-bfb2-483a-8722-2d670725b7b2">
<driver-ref>mariadb</driver-ref>
<synchronize>true</synchronize>
<jdbc-driver>org.mariadb.jdbc.Driver</jdbc-driver>
<jdbc-url>jdbc:mariadb://localhost:3306</jdbc-url>
<working-dir>$ProjectFileDir$</working-dir>
</data-source>
</component>
</project>

View File

@@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/M1.iml" filepath="$PROJECT_DIR$/.idea/M1.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/M3.iml" filepath="$PROJECT_DIR$/.idea/M3.iml" />
</modules>
</component>
</project>

View File

7
M3/.idea/sqldialects.xml generated Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/werbeseite_daten.sql" dialect="MariaDB" />
<file url="PROJECT" dialect="MariaDB" />
</component>
</project>

View File

BIN
M3/DBWT_M3_mysqli.pdf Normal file

Binary file not shown.

63
M3/M3.md Normal file
View File

@@ -0,0 +1,63 @@
| Aufgabe | Schätzung | Tatsächlich | Kommentar |
| ------- | --------- | ----------- | -------------------------- |
| 1 | 0:15 | 0:15 | |
| 2 | 0:45 | 0:30 | |
| 3 | 0:45 | 0:45 | |
| 4 | 0:15 | 1:00 | Die Einstellung in php.ini |
| 5 | 1:00 | 1:00 | |
# Aufgabe 3
Übung. Datenbank: Anfragen. Erstellen Sie die folgenden Anfragen in SQL und führen Sie diese auf der angelegten Datenstruktur durch (z.B. in HeidiSQL oder PHPStorm). Geben Sie sowohl das Statement als auch die Ergebnismenge (z.B. als Screenshot) in Ihrem Dossier mit ab.
## Abfragen
1) Alle Daten aus gericht
``` sql
SELECT * FROM gericht
```
2) Das Erfassungsdatum aller Gerichte.
``` sql
SELECT erfasst_am FROM gericht
```
3) Das Erfassungsdatum sowie den Namen (als Attributname Gerichtname) aller Gerichte absteigend sortiert nach Gerichtname.
``` sql
SELECT name, erfasst_am FROM gericht ORDER BY name DESC
```
4) Den Namen sowie die Beschreibung der Gerichte aufsteigend sortiert nach Namen, wobei nur 5 Datensätze dargestellt werden sollen.
``` sql
SELECT name, beschreibung FROM gericht ORDER BY name ASC LIMIT 5
```
5) Ändern Sie die vorherige Abfrage so ab, so dass 10 Datensätze dargestellt werden, die nach den ersten 5 Datensätzen folgen. (Die ersten 5 Datensätze werden übersprungen)
``` sql
SELECT name,beschreibung FROM gericht ORDER BY name ASC LIMIT 10 OFFSET 5
```
6) Zeigen Sie alle möglichen Allergen-Typen (typ), wobei Sie keine doppelten Einträge darstellen.
``` sql
SELECT DISTINCT typ FROM allergen
```
7) Namen von Gerichten, deren Name mit einem klein- oder großgeschriebenen „K“ beginnt.
``` sql
SELECT name FROM gericht WHERE name LIKE 'k%'
```
8) Ids und Namen von Gerichten, deren Namen ein „suppe“ an beliebiger Stelle enthält.
``` sql
SELECT id, name FROM gericht WHERE name LIKE '%suppe%'
```
9) Alle Kategorien, die keine Elterneinträge besitzen.
``` sql
SELECT * FROM kategorie WHERE eltern_id IS NULL
```
10) Korrigieren Sie den Wert „Dinkel“ in der Tabelle allergen mit dem code a6 zu „Kamut“.
``` sql
UPDATE allergen SET name = 'Kamut' WHERE code = 'a6';
```
11) Fügen Sie das Gericht „Currywurst mit Pommes“ hinzu und tragen Sie es in
der Kategorie „Hauptspeise“ ein.
``` sql
INSERT INTO gericht VALUES (21, 'Currywurst mit Pommes', '', '2023-11-22', 0, 0, 1.0, 2.0);
INSERT INTO gericht_hat_kategorie VALUES (21, 3);
```

BIN
M3/M3.pdf Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
152

BIN
M3/Werbeseite/fh-logo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -0,0 +1,31 @@
<?php
/**
* Praktikum DBWT. Autoren:
* Şafak, Hazinedar, 3108590
* Robert, Joel, 3672729
*/
$gerichte = [
1 => ['name' => 'Rindfleich mit Bambus, Kaiserschoten und roter Paprika, dazu Mie Nudeln',
'priceint' => 3.50,
"priceex" => 6.20,
"img" =>"img/bambus.jpg"
],
2 => ['name' => 'Spinatrisotto mit kleinen Samosateigecken und gemischter Salat',
'priceint' => 2.90,
"priceex" => 5.30,
"img" =>"img/risotto.jpg"
],
3 => ['name' => 'Spaghetti Bolognese',
'priceint' => 3,
"priceex" => 5,
"img" =>"img/bolo.jpg"
],
4 => ['name' => 'Spaghetti Carbonara',
'priceint' => 3,
"priceex" => 5,
"img" =>"img/carbonara.jpg"
]
]
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
M3/Werbeseite/img/bolo.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

350
M3/Werbeseite/index.php Normal file
View File

@@ -0,0 +1,350 @@
<?php
/**
* Praktikum DBWT. Autoren:
* Şafak, Hazinedar, 3108590
* Robert, Joel, 3672729
*/
include "gerichte.php";
$besucherCount = 0;
$newletterCount = 0;
// Datenbankanbindung
$link = mysqli_connect(
"127.0.0.1", // Host der Datenbank
"root", // Benutzername zur Anmeldung
"wm#32", // Passwort
"emensawerbeseite" // Auswahl der Datenbanken (bzw. des Schemas)
);
if (!$link) {
echo "Verbindung fehlgeschlagen: ", mysqli_connect_error();
exit();
}
//Besucher counter
if (file_exists("besucher.txt")) {
$besucherFile = fopen("besucher.txt", "r");
$besucherCount = fgets($besucherFile) + 1;
fclose($besucherFile);
$besucherFile = fopen("besucher.txt", "w");
fwrite($besucherFile, $besucherCount);
fclose($besucherFile);
} else {
$besucherFile = fopen("besucher.txt", "w");
fwrite($besucherFile, 1);
fclose($besucherFile);
}
//Newletter counter
if (file_exists("newletter.txt")) {
$newsFile = fopen("newletter.txt", "r");
$newletterCount = fgets($newsFile);
fclose($newsFile);
} else {
$newsFile = fopen("newletter.txt", "w");
fwrite($newsFile, 0);
fclose($newsFile);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$language = $_POST['language'];
$terms = $_POST['terms'];
$errors = array();
if (empty(trim($name))) {
$errors[] = "Bitte geben Sie einen Namen ein.";
}
if (!isset($terms)) {
$errors[] = "Bitte stimmen Sie den Datenschutzbestimmungen zu.";
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Bitte geben Sie eine gültige E-Mail-Adresse ein.";
}
$spam_domains = array("rcpt.at", "damnthespam.at", "wegwerfmail.de", "trashmail");
foreach ($spam_domains as $domain) {
if (str_contains($email, $domain)) {
$errors[] = "Bitte geben Sie eine gültige E-Mail-Adresse ein, keine Wegwerf- oder Spam-E-Mail-Adresse.";
break;
}
}
if (empty($errors)) {
$data = array(
"name" => $name,
"email" => $email,
"language" => $language,
"terms" => $terms
);
$file = "subscriptions.json";
$current_data = file_exists($file) ? json_decode(file_get_contents($file), true) : array();
$current_data[] = $data;
if (file_put_contents($file, json_encode($current_data))) {
echo '<script type="text/javascript">';
echo 'alert("Vielen Dank für Ihre Anmeldung zum Newsletter.");';
echo '</script>';
//Newsletter counter
$newletterCount++;
$newsFile = fopen("newletter.txt", "w");
fwrite($newsFile, $newletterCount);
fclose($newsFile);
} else {
echo '<script type="text/javascript">';
echo 'alert("Es gab einen Fehler bei Ihrer Anmeldung. Bitte versuchen Sie es erneut.");';
echo '</script>';
}
} else {
$error_string = "";
foreach ($errors as $error) {
$error_string .= $error . '\n';
}
echo '<script type="text/javascript">';
echo 'alert("' . $error_string . '");';
echo '</script>';
}
}
?>
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>Ihre E-Mensa</title>
<style>
* {
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;
}
</style>
</head>
<body>
<div class="grid">
<div>
<img src="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>
<hr>
<div class="grid">
<div></div>
<div>
<img src="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>
<!-- Speisekarte -->
<?php
$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 = [];
$verwendete_allergene_string = "";
while ($row_gerichte = mysqli_fetch_assoc($result_sql_gerichte)) {
$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)) {
$verwendete_allergene[] = $row_allergene['code'];
}
}
$preisintern = number_format($row_gerichte['preisintern'], 2, ',', '.');
$preisextern = number_format($row_gerichte['preisextern'], 2, ',', '.');
$tabelle .= "<tr class=\"speisen\"><td>" . $row_gerichte['name'] . " <sup>" . $allergene . "</sup></td><td>" . $preisintern . "€</td><td>" . $preisextern . "€</td><td>Kein Bild in der Datenbank </td></tr>";
}
$tabelle .= "</table>";
echo $tabelle;
$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)){
$verwendete_allergene_string .= "<sup>".$row_allergen['code']."</sup> ". $row_allergen['name']. ", ";
}
}
echo $verwendete_allergene_string;
?>
<h1 id="zahlen">E-Mensa in Zahlen</h1>
<div class="zahlen">
<p><?php echo $besucherCount; ?> Besuche</p>
<p><?php echo $newletterCount; ?> Anmeldungen zum Newsletter</p>
<p><?php echo count($gerichte); ?> Speisen</p>
</div>
<h1 id="kontakt">Interesse geweckt? Wir informieren</h1>
<form method="post">
<div class="formular">
<div>
<label for="name">Name:</label> <br>
<input type="text" name="name" id="name" placeholder="Bitte geben Sie Ihren Namen ein">
</div>
<div>
<label for="email">E-Mail:</label> <br>
<input type="email" name="email" id="email" placeholder="Bitte geben Sie Ihre E-Mail ein">
</div>
<div>
<label for="language">Newsletter bitte in:</label> <br>
<select name="language" id="language">
<option value="deutsch">Deutsch</option>
<option value="englisch">Englisch</option>
</select>
</div>
</div>
<br>
<input required type="checkbox" name="terms" id="terms">
<label for="terms">Den Datenschutzbestimmungen stimme ich zu</label>
<button type="submit">Zum Newsletter anmelden</button>
</form>
<h1 id="wichtig">Das ist uns wichtig</h1>
<div class="wichtig">
<ul class="wichtigListe">
<li>Beste frische saisonale Zutaten</li>
<li>Ausgewogen abwechslungsreiche Gerichte</li>
<li>Sauberkeit</li>
</ul>
</div>
<h1 class="freude">Wir freuen uns auf Ihren Besuch!</h1>
</div>
</div>
<footer>
<table class="fusszeile">
<tr>
<td>(c) E-Mensa GmbH</td>
<td>Şafak Hazinedar & Robert Joel</td>
<td><a href="">Impressum</a></td>
</tr>
</table>
</footer>
</body>
</html>

BIN
M3/Werbeseite/mensa21.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1 @@
[{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Max","email":"max@gmail.com","language":"deutsch","terms":"on"},{"name":"Ro","email":"robert-joel@web.de","language":"deutsch","terms":"on"},{"name":"Robert","email":"robert-joel@web.de","language":"deutsch","terms":"on"}]

View File

@@ -0,0 +1,28 @@
<?php
$link=mysqli_connect(
"127.0.0.1", // Host der Datenbank
"root", // Benutzername zur Anmeldung
"wm#32", // Passwort
"emensawerbeseite" // Auswahl der Datenbanken (bzw. des Schemas)
);
if (!$link) {
echo "Verbindung fehlgeschlagen: ", mysqli_connect_error();
exit();
}
$sql = "SELECT erfasst_am FROM gericht ";
$result = mysqli_query($link, $sql);
if (!$result) {
echo "Fehler während der Abfrage: ", mysqli_error($link);
exit();
}
$tabelle = "<table>";
while ($row = mysqli_fetch_assoc($result)) {
$tabelle .= "<tr><td>". $row['erfasst_am']. "</td></tr>";
}
$tabelle .= "</table>";
echo $tabelle;
mysqli_free_result($result);
mysqli_close($link);

BIN
M3/connection_example.zip Normal file

Binary file not shown.

93
M3/werbeseite_daten.sql Normal file
View File

@@ -0,0 +1,93 @@
USE emensawerbeseite;
INSERT INTO `allergen` (`code`, `name`, `typ`) VALUES
('a', 'Getreideprodukte', 'Getreide (Gluten)'),
('a1', 'Weizen', 'Allergen'),
('a2', 'Roggen', 'Allergen'),
('a3', 'Gerste', 'Allergen'),
('a4', 'Dinkel', 'Allergen'),
('a5', 'Hafer', 'Allergen'),
('a6', 'Dinkel', 'Allergen'),
('b', 'Fisch', 'Allergen'),
('c', 'Krebstiere', 'Allergen'),
('d', 'Schwefeldioxid/Sulfit', 'Allergen'),
('e', 'Sellerie', 'Allergen'),
('f', 'Milch und Laktose', 'Allergen'),
('f1', 'Butter', 'Allergen'),
('f2', 'Käse', 'Allergen'),
('f3', 'Margarine', 'Allergen'),
('g', 'Sesam', 'Allergen'),
('h', 'Nüsse', 'Allergen'),
('h1', 'Mandeln', 'Allergen'),
('h2', 'Haselnüsse', 'Allergen'),
('h3', 'Walnüsse', 'Allergen'),
('i', 'Erdnüsse', 'Allergen');
INSERT INTO `gericht` (`id`, `name`, `beschreibung`, `erfasst_am`, `vegan`, `vegetarisch`, `preisintern`, `preisextern`) VALUES
(1, 'Bratkartoffeln mit Speck und Zwiebeln', 'Kartoffeln mit Zwiebeln und gut Speck', '2020-08-25', 0, 0, 2.3, 4),
(3, 'Bratkartoffeln mit Zwiebeln', 'Kartoffeln mit Zwiebeln und ohne Speck', '2020-08-25', 1, 1, 2.3, 4),
(4, 'Grilltofu', 'Fein gewürzt und mariniert', '2020-08-25', 1, 1, 2.5, 4.5),
(5, 'Lasagne', 'Klassisch mit Bolognesesoße und Creme Fraiche', '2020-08-24', 0, 0, 2.5, 4.5),
(6, 'Lasagne vegetarisch', 'Klassisch mit Sojagranulatsoße und Creme Fraiche', '2020-08-24', 0, 1, 2.5, 4.5),
(7, 'Hackbraten', 'Nicht nur für Hacker', '2020-08-25', 0, 0, 2.5, 4),
(8, 'Gemüsepfanne', 'Gesundes aus der Region, deftig angebraten', '2020-08-25', 1, 1, 2.3, 4),
(9, 'Hühnersuppe', 'Suppenhuhn trifft Petersilie', '2020-08-25', 0, 0, 2, 3.5),
(10, 'Forellenfilet', 'mit Kartoffeln und Dilldip', '2020-08-22', 0, 0, 3.8, 5),
(11, 'Kartoffel-Lauch-Suppe', 'der klassische Bauchwärmer mit frischen Kräutern', '2020-08-22', 0, 1, 2, 3),
(12, 'Kassler mit Rosmarinkartoffeln', 'dazu Salat und Senf', '2020-08-23', 0, 0, 3.8, 5.2),
(13, 'Drei Reibekuchen mit Apfelmus', 'grob geriebene Kartoffeln aus der Region', '2020-08-23', 0, 1, 2.5, 4.5),
(14, 'Pilzpfanne', 'die legendäre Pfanne aus Pilzen der Saison', '2020-08-23', 0, 1, 3, 5),
(15, 'Pilzpfanne vegan', 'die legendäre Pfanne aus Pilzen der Saison ohne Käse', '2020-08-24', 1, 1, 3, 5),
(16, 'Käsebrötchen', 'schmeckt vor und nach dem Essen', '2020-08-24', 0, 1, 1, 1.5),
(17, 'Schinkenbrötchen', 'schmeckt auch ohne Hunger', '2020-08-25', 0, 0, 1.25, 1.75),
(18, 'Tomatenbrötchen', 'mit Schnittlauch und Zwiebeln', '2020-08-25', 1, 1, 1, 1.5),
(19, 'Mousse au Chocolat', 'sahnige schweizer Schokolade rundet jedes Essen ab', '2020-08-26', 0, 1, 1.25, 1.75),
(20, 'Suppenkreation á la Chef', 'was verschafft werden muss, gut und günstig', '2020-08-26', 0, 0, 0.5, 0.9);
INSERT INTO `gericht_hat_allergen` (`code`, `gericht_id`) VALUES
('h', 1),
('a3', 1),
('a4', 1),
('f1', 3),
('a6', 3),
('i', 3),
('a3', 4),
('f1', 4),
('a4', 4),
('h3', 4),
('d', 6),
('h1',7),
('a2', 7),
('h3', 7),
('c', 7),
('a3', 8),
('h3', 10),
('d', 10),
('f', 10),
('f2', 12),
('h1', 12),
('a5',12),
('c', 1),
('a2', 9),
('i', 14),
('f1', 1),
('a1', 15),
('a4', 15),
('i', 15),
('f3', 15),
('h3', 15);
INSERT INTO `kategorie` (`id`, `eltern_id`, `name`, `bildname`) VALUES
(1, NULL, 'Aktionen', 'kat_aktionen.png'),
(2, NULL, 'Menus', 'kat_menu.gif'),
(3, 2, 'Hauptspeisen', 'kat_menu_haupt.bmp'),
(4, 2, 'Vorspeisen', 'kat_menu_vor.svg'),
(5, 2, 'Desserts', 'kat_menu_dessert.pic'),
(6, 1, 'Mensastars', 'kat_stars.tif'),
(7, 1, 'Erstiewoche', 'kat_erties.jpg');
INSERT INTO `gericht_hat_kategorie` (`kategorie_id`, `gericht_id`) VALUES
(3, 1), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 9), (4, 16), (4, 17), (4, 18), (5, 16), (5, 17), (5, 18);