371 lines
11 KiB
PHP
371 lines
11 KiB
PHP
<?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)
|
|
//);
|
|
|
|
$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
|
|
|
|
//Aktuelle Besucher Zahl
|
|
$sql_besucher = "SELECT besucher FROM besucher_counter WHERE id=1";
|
|
$result_sql_besucher = mysqli_query($link, $sql_besucher);
|
|
$besucher = mysqli_fetch_assoc($result_sql_besucher);
|
|
|
|
//Updatet Besucher Zahl
|
|
$besucherCount = $besucher["besucher"] + 1;
|
|
$sql_besucher = "UPDATE besucher_counter SET besucher =".$besucherCount;
|
|
$result_sql_besucher = mysqli_query($link, $sql_besucher);
|
|
|
|
//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);
|
|
}
|
|
|
|
//Newletter Anmeldung
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
|
$name = $_POST['name'];
|
|
$email = $_POST['email'];
|
|
$language = $_POST['language'];
|
|
$terms = $_POST['terms'];
|
|
|
|
$errors = array();
|
|
//Error handling
|
|
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 writing
|
|
$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
|
|
//Gerichte aus Datenbank
|
|
$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>" . $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;
|
|
|
|
// 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>".$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
|
|
$sql_gerichte = "SELECT COUNT(id) FROM gericht";
|
|
$result_sql_gerichte = mysqli_query($link, $sql_gerichte);
|
|
$ausgabe = mysqli_fetch_assoc($result_sql_gerichte);
|
|
echo $ausgabe["COUNT(id)"];
|
|
?>
|
|
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>
|