umgestellt auf Docker
This commit is contained in:
220
main.php
Normal file
220
main.php
Normal file
@@ -0,0 +1,220 @@
|
||||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
function makeClickableLinks($text) {
|
||||
$pattern = '/(?:(?:https?:\/\/)|(?:www\.))[^\s<>"\'()]+/i';
|
||||
$replacement = '<a href="$0" target="_blank">$0</a>';
|
||||
return preg_replace($pattern, $replacement, $text);
|
||||
}
|
||||
|
||||
// Datenbankverbindung
|
||||
require_once 'db_connection.php';
|
||||
if ($link->connect_error) {
|
||||
die('<p>Verbindung fehlgeschlagen: '. $link->connect_error .'</p>');
|
||||
}
|
||||
|
||||
// ID aus der URL abrufen
|
||||
$rezept_id = isset($_GET['id']) ? intval($_GET['id']) : 0;
|
||||
|
||||
// Rezeptdaten abrufen
|
||||
$stmt_rezept = $link->prepare("SELECT * FROM Rezepte WHERE id = ?");
|
||||
$stmt_rezept->bind_param("i", $rezept_id);
|
||||
$stmt_rezept->execute();
|
||||
$rezept = $stmt_rezept->get_result()->fetch_assoc();
|
||||
if (!$rezept) {
|
||||
die("Rezept mit ID $rezept_id nicht gefunden.");
|
||||
}
|
||||
|
||||
// Rezeptnummer holen und auf 3 Stellen auffüllen
|
||||
$rezeptnummer_int = intval($rezept['Rezeptnummer']);
|
||||
$rezeptnummer = 'R' . str_pad($rezeptnummer_int, 3, '0', STR_PAD_LEFT);
|
||||
|
||||
// Zutaten abrufen
|
||||
$stmt_zutaten = $link->prepare("SELECT ingr FROM ingredients WHERE rezeptnr = ?");
|
||||
$stmt_zutaten->bind_param("s", $rezeptnummer);
|
||||
$stmt_zutaten->execute();
|
||||
$zutaten_result = $stmt_zutaten->get_result(); // Hier war der Fehler behoben
|
||||
$zutaten_text = "";
|
||||
if ($row = $zutaten_result->fetch_assoc()) {
|
||||
$zutaten_text = $row['ingr'];
|
||||
}
|
||||
|
||||
// Zubereitung abrufen
|
||||
$stmt_zubereitung = $link->prepare("SELECT * FROM Zubereitung WHERE rezeptnummer = ? ORDER BY schritt");
|
||||
$stmt_zubereitung->bind_param("s", $rezeptnummer);
|
||||
$stmt_zubereitung->execute();
|
||||
$zubereitung_result = $stmt_zubereitung->get_result();
|
||||
$zubereitung = $zubereitung_result->fetch_all(MYSQLI_ASSOC);
|
||||
if (empty($zubereitung)) {
|
||||
$zubereitung = [];
|
||||
}
|
||||
|
||||
// Bilder abrufen
|
||||
$stmt_bilder = $link->prepare("SELECT * FROM rezepte_bilder WHERE rezepte_id = ? ORDER BY id");
|
||||
$stmt_bilder->bind_param("i", $rezept_id);
|
||||
$stmt_bilder->execute();
|
||||
$bilder_result = $stmt_bilder->get_result();
|
||||
$bilder = $bilder_result->fetch_all(MYSQLI_ASSOC);
|
||||
if (empty($bilder)) {
|
||||
$bilder = [];
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background: #fcf6e3;
|
||||
}
|
||||
table {
|
||||
background: white;
|
||||
}
|
||||
@import url('https://fonts.googleapis.com/css?family=Roboto');
|
||||
td.Kateg { width: 20%; height: 20%; text-align: center; }
|
||||
td.ueber { font-size: 1.4em; }
|
||||
td.unter { font-size: 1.4em; }
|
||||
body.sans { font-family: Arial, sans-serif; }
|
||||
img { width: 200px; }
|
||||
img.oben { width: 500px; }
|
||||
img.vergroesserbar { cursor: pointer; }
|
||||
img.vergroessert { width: 400px !important; transition: width 0.3s ease; }
|
||||
pre.zutaten {
|
||||
font-size: 1.2em;
|
||||
font-family: Arial, sans-serif;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.edit-button {
|
||||
display: inline-block;
|
||||
padding: 10px 20px;
|
||||
background-color: #bb7e19;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 1em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.custom-button {
|
||||
display: inline-block;
|
||||
padding: 10px 20px;
|
||||
background-color: #bb7e19;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 1em;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
text-align: center;
|
||||
}
|
||||
.custom-button:hover {
|
||||
background-color: #a06f15;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class='sans' >
|
||||
<table width='800px' align='center' border='0'>
|
||||
<tr><td>
|
||||
<a href="./index.php" class="custom-button">Zurück zur Übersicht</a>
|
||||
<a href="Edit.php?id=<?= htmlspecialchars($rezept_id) ?>" class="custom-button">Rezept editieren</a>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table align='left' border='0'>
|
||||
<tr>
|
||||
<td style='font-size:1.6em'><?= htmlspecialchars($rezeptnummer) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style='font-size:1.6em'><?= htmlspecialchars($rezept['Bezeichnung']) ?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='unter'><?= makeClickableLinks($rezept['Beschreibung']) ?><br><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align='left'>
|
||||
<?php if (!empty($bilder)): ?>
|
||||
<img class='oben' src="<?= htmlspecialchars($bilder[0]['datei_pfad']) ?>">
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if (!empty(trim($rezept['Vorbereitung']))): ?>
|
||||
<tr>
|
||||
<td class='unter'><br>Vorbereitung: <span style="font-size:0.9em;"><?= makeClickableLinks($rezept['Vorbereitung']) ?></span></td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<?php if (!empty(trim($zutaten_text))): ?>
|
||||
<tr>
|
||||
<td class='unter'><br>Zutaten
|
||||
<?php if (!empty($rezept['Anzahl'])): ?>
|
||||
<style='font-size: 1.2em;">für <?= htmlspecialchars($rezept['Anzahl']) ?> Personen:</span>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
</td></tr>
|
||||
<?php if (!empty(trim($zutaten_text))): ?>
|
||||
<tr><td>
|
||||
<table align='center' border='0'>
|
||||
<tr>
|
||||
<th align='left'></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><pre class="zutaten"><?= $zutaten_text ?></pre></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<?php endif; ?>
|
||||
<?php if (!empty($zubereitung) || !empty($bilder)): ?>
|
||||
<tr><td>
|
||||
<table align='left' border='0'>
|
||||
<tr>
|
||||
<td class='unter' align='left' colspan='2'><br>Zubereitung<br><br></td>
|
||||
</tr>
|
||||
<?php
|
||||
// Bestimme die maximale Anzahl an Schritten (basierend auf $zubereitung oder $bilder)
|
||||
$maxSteps = max(count($zubereitung), count($bilder));
|
||||
for ($i = 0; $i < $maxSteps; $i++):
|
||||
$currentIndex = $i + 1; // Da $bilder[$index + 1] im Originalcode verwendet wird
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<?php if (!empty($bilder[$currentIndex])): ?>
|
||||
<img class='vergroesserbar' src='<?= htmlspecialchars($bilder[$currentIndex]['datei_pfad']) ?>'>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
<td style='text-align:justify;padding:20px;font-size: 1.2em;'>
|
||||
<?= !empty($zubereitung[$i]['text']) ? htmlspecialchars($zubereitung[$i]['text']) : ' ' ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endfor; ?>
|
||||
</table>
|
||||
</td></tr>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty(trim($rezept['Kommentar']))): ?>
|
||||
<tr><td>
|
||||
<table>
|
||||
<tr><td><br><br><span style='font-size:1.4em'>Kommentar</span><br><br><span style='font-size: 1.2em; display: block;'><?= makeClickableLinks($rezept['Kommentar']) ?></span></td></tr>
|
||||
|
||||
<?php endif; ?>
|
||||
</table>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const bilder = document.querySelectorAll('img.vergroesserbar');
|
||||
bilder.forEach(function(bild) {
|
||||
bild.addEventListener('click', function() {
|
||||
if (this.classList.contains('vergroessert')) {
|
||||
this.classList.remove('vergroessert');
|
||||
} else {
|
||||
this.classList.add('vergroessert');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user