221 lines
7.9 KiB
PHP
221 lines
7.9 KiB
PHP
<?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>
|