prepare("SELECT productID FROM products WHERE productID = ?");
$checkStmt->bind_param("i", $productId);
$checkStmt->execute();
$checkResult = $checkStmt->get_result();
if ($checkResult->num_rows === 0) {
include __DIR__ . '/404.php';
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_review']) && isset($_POST['delete_review_id'])) {
if (!empty($_SESSION['user_roles']) && in_array('ADMIN', $_SESSION['user_roles'], true)) {
$deleteId = (int)$_POST['delete_review_id'];
$delStmt = $conn->prepare("DELETE FROM reviews WHERE reviewID = ?");
$delStmt->bind_param("i", $deleteId);
$delStmt->execute();
$delStmt->close();
echo "";
exit;
}
}
?>
prepare("
SELECT
a.name,
a.unit,
a.dataType,
pa.valueString,
pa.valueNumber,
pa.valueBool,
p.model,
p.description,
p.imagePath
FROM products p
INNER JOIN categoryAttributes ca
ON p.categoryID = ca.categoryID
INNER JOIN attributes a
ON ca.attributeID = a.attributeID
LEFT JOIN productAttributes pa
ON pa.productID = p.productID
AND pa.attributeID = a.attributeID
WHERE p.productID = ?
ORDER BY a.attributeID
");
$stmt->bind_param("i", $productId);
$stmt->execute();
$result = $stmt->get_result();
$product = $result->fetch_assoc();
$alreadyInWishlist = false;
if (isset($_SESSION['user_id'])) {
$stmtCheck = mysqli_prepare(
$conn,
"SELECT 1 FROM userFavorites
WHERE userID = ? AND productID = ?
LIMIT 1"
);
if ($stmtCheck) {
mysqli_stmt_bind_param(
$stmtCheck,
"ii",
$_SESSION['user_id'],
$productId
);
mysqli_stmt_execute($stmtCheck);
mysqli_stmt_store_result($stmtCheck);
if (mysqli_stmt_num_rows($stmtCheck) > 0) {
$alreadyInWishlist = true;
}
mysqli_stmt_close($stmtCheck);
}
}
?>
bind_param("i", $productId);
$stmtRevOv->execute();
$resultRevOv = $stmtRevOv->get_result();
$reviewOverview = $resultRevOv->fetch_assoc();
// Falls NULL zurückkommt (keine Bewertungen), auf 0 setzen
if ($reviewOverview['reviewCount'] === null) {
$reviewOverview['reviewCount'] = 0;
}
?>
0): ?>
(int)$reviewOverview['fiveStarCount'],
4 => (int)$reviewOverview['fourStarCount'],
3 => (int)$reviewOverview['threeStarCount'],
2 => (int)$reviewOverview['twoStarCount'],
1 => (int)$reviewOverview['oneStarCount']
];
foreach ($starCounts as $stars => $count):
// Prozentwert für den Balken berechnen
$percent = ($reviewOverview['reviewCount'] > 0) ? round(($count / $reviewOverview['reviewCount']) * 100) : 0;
?>
= $stars ?> Sterne
= $count ?>
Noch keine Bewertungen vorhanden.
= htmlspecialchars($product['model'] ?? 'Produkt') ?>
= htmlspecialchars($product['description']) ?>
fetch_assoc()) {
echo "
{$row['name']}: ";
if (!empty($row['valueString'])) echo $row['valueString'];
if (!empty($row['valueNumber'])) echo $row['valueNumber'] . " " . $row['unit'];
if (!is_null($row['valueBool'])) echo $row['valueBool'] ? "Ja" : "Nein";
echo "
";
}
?>
0) {
$urlColumn = 'productURL';
} else {
$colCheck2 = mysqli_query($conn, "SHOW COLUMNS FROM offers LIKE 'offerURL'");
if ($colCheck2 && mysqli_num_rows($colCheck2) > 0) {
$urlColumn = 'offerURL';
}
}
$urlSelect = $urlColumn !== '' ? ("offers." . $urlColumn . " AS offerURL") : "'' AS offerURL";
$stmt = mysqli_prepare($conn,
"SELECT price, shippingCost, inStock, shops.name, $urlSelect, shops.logoPath, shops.shippingTime
FROM offers
INNER JOIN shops ON
offers.shopID = shops.shopID WHERE offers.productID = ? ORDER BY offers.price ASC");
$stmt->bind_param("i", $productId);
$stmt->execute();
$result = $stmt->get_result();
$shopInfo = [];
while ($row = $result->fetch_assoc()) {
$shopInfo[] = $row;
}
?>
Versand: = htmlspecialchars($shop['shippingCost']) ?> €      
Lieferzeit: = htmlspecialchars($shop['shippingTime']) ?> Werktage
= $shop['inStock'] ? "Lagernd" : "Nicht lagernd" ?>
Preis: = htmlspecialchars($shop['price']) ?> €
Keine Shops bieten dieses Produkt an.
close(); ?>
bind_param("i", $productId);
$stmt->execute();
$result = $stmt->get_result();
$reviews = [];
while ($row = $result->fetch_assoc()) {
$reviews[] = $row;
}
?>
Bewertungen
Es gibt noch keine Bewertungen.
Füge deine Bewertung hinzu!
0) {
$userHasReviewed = true;
}
mysqli_stmt_close($stmtCheckRev);
}
// 2. Bewertung speichern (NUR wenn noch keine existiert!)
if (
$_SERVER['REQUEST_METHOD'] === 'POST' &&
isset($_POST['submit_review']) &&
isset($_SESSION['user_id']) &&
!$userHasReviewed
) {
$rating = (int)$_POST['rating'];
$comment = trim($_POST['comment']);
$userID = $_SESSION['user_id'];
if ($rating >= 1 && $rating <= 5 && !empty($comment)) {
$stmtInsertRev = mysqli_prepare(
$conn,
"INSERT INTO reviews (userID, productID, rating, comment) VALUES (?, ?, ?, ?)"
);
if ($stmtInsertRev) {
mysqli_stmt_bind_param(
$stmtInsertRev,
"iiis",
$userID,
$productId,
$rating,
$comment
);
mysqli_stmt_execute($stmtInsertRev);
mysqli_stmt_close($stmtInsertRev);
// JS Weiterleitung
echo "";
exit;
}
}
}
?>
Du hast dieses Produkt bereits bewertet. Vielen Dank!