M3 bis Aufgabe 5

This commit is contained in:
S170H
2023-11-22 02:56:18 +01:00
parent 8994cc40d6
commit f6f230dac7
15 changed files with 414 additions and 14 deletions

16
M2/.idea/workspace.xml generated
View File

@@ -4,19 +4,7 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="3addb60f-b39d-430d-91ac-acb76c147edc" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/../.idea/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../.idea/DBWT-Praktika.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../.idea/modules.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../.idea/php.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../.idea/vcs.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../M1/.idea/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../M1/.idea/M1.iml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../M1/.idea/modules.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../M1/.idea/php.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../M1/.idea/vcs.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.gitignore" beforeDir="false" />
</list>
<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" />
@@ -64,7 +52,7 @@
<option name="presentableId" value="Default" />
<updated>1700047295160</updated>
<workItem from="1700047298386" duration="519000" />
<workItem from="1700071102317" duration="365000" />
<workItem from="1700071102317" duration="599000" />
</task>
<servers />
</component>

BIN
M3/DBWT_M3_mysqli.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.