149 lines
5.9 KiB
PHP
149 lines
5.9 KiB
PHP
<?php
|
|
include('include/headscript.php');
|
|
|
|
$dbHandler = DBHandlerSelect::getInstance();
|
|
$pdo = $dbHandler->getConnection();
|
|
|
|
$product_id = $_GET['product_id'] ?? 0;
|
|
|
|
// Recupera i dettagli del prodotto
|
|
$stmt = $pdo->prepare("
|
|
SELECT p.id, p.name AS product_name,
|
|
c.name AS class_name, c.description AS class_description, c.photo AS class_photo
|
|
FROM products p
|
|
LEFT JOIN product_class_types pct ON p.id = pct.product_id AND pct.variation_id IS NULL
|
|
LEFT JOIN class_types ct ON pct.class_type_id = ct.id
|
|
LEFT JOIN classes c ON ct.class_id = c.id
|
|
WHERE p.id = ?
|
|
GROUP BY p.id
|
|
");
|
|
$stmt->execute([$product_id]);
|
|
$product = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$product) {
|
|
die("Prodotto non trovato.");
|
|
}
|
|
|
|
// Recupera le variazioni del prodotto
|
|
$stmt = $pdo->prepare("
|
|
SELECT id, name, price
|
|
FROM product_variations
|
|
WHERE product_id = ? AND status = 'active'
|
|
");
|
|
$stmt->execute([$product_id]);
|
|
$variations = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Recupera le variazioni delle classi associate al prodotto
|
|
$stmt = $pdo->prepare("
|
|
SELECT ct.id, ct.level, ct.day_of_week
|
|
FROM product_class_types pct
|
|
JOIN class_types ct ON pct.class_type_id = ct.id
|
|
WHERE pct.product_id = ? AND pct.variation_id IS NULL
|
|
");
|
|
$stmt->execute([$product_id]);
|
|
$class_types = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
?>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="it">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Dettaglio Prodotto - <?php echo htmlspecialchars($product['product_name']); ?></title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<style>
|
|
.product-image {
|
|
width: 100%;
|
|
height: 300px;
|
|
object-fit: cover;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.price-display {
|
|
font-size: 1.5rem;
|
|
color: #28a745;
|
|
margin-top: 10px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="container mt-5">
|
|
<h1 class="mb-4"><?php echo htmlspecialchars($product['product_name']); ?></h1>
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<img src="<?php echo htmlspecialchars($product['class_photo'] ?: 'default_class_image.jpg'); ?>" alt="<?php echo htmlspecialchars($product['class_name']); ?>" class="product-image">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<h3><?php echo htmlspecialchars($product['class_name']); ?></h3>
|
|
<p><?php echo htmlspecialchars($product['class_description']); ?></p>
|
|
|
|
<div class="mb-3">
|
|
<label for="variation_select" class="form-label">Seleziona Variazione Prodotto:</label>
|
|
<select id="variation_select" class="form-select">
|
|
<option value="">-- Seleziona --</option>
|
|
<?php foreach ($variations as $variation): ?>
|
|
<option value="<?php echo $variation['id']; ?>" data-price="<?php echo $variation['price']; ?>">
|
|
<?php echo htmlspecialchars($variation['name']); ?> (<?php echo $variation['price']; ?>€)
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="class_type_select" class="form-label">Seleziona Variazione Classe:</label>
|
|
<select id="class_type_select" class="form-select">
|
|
<option value="">-- Seleziona --</option>
|
|
<?php foreach ($class_types as $class_type): ?>
|
|
<option value="<?php echo $class_type['id']; ?>">
|
|
<?php echo htmlspecialchars($class_type['level'] . ' (' . $class_type['day_of_week'] . ')'); ?>
|
|
</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
|
|
<div class="price-display" id="price_display">Prezzo: -- €</div>
|
|
|
|
<button id="add_to_cart" class="btn btn-success mt-3" disabled>Aggiungi al Carrello</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
const variationSelect = $('#variation_select');
|
|
const classTypeSelect = $('#class_type_select');
|
|
const priceDisplay = $('#price_display');
|
|
const addToCartButton = $('#add_to_cart');
|
|
|
|
function updatePriceAndButton() {
|
|
const selectedVariation = variationSelect.val();
|
|
const selectedClassType = classTypeSelect.val();
|
|
|
|
if (selectedVariation && selectedClassType) {
|
|
const price = variationSelect.find('option:selected').data('price');
|
|
priceDisplay.text(`Prezzo: ${price}€`);
|
|
addToCartButton.prop('disabled', false);
|
|
} else {
|
|
priceDisplay.text('Prezzo: -- €');
|
|
addToCartButton.prop('disabled', true);
|
|
}
|
|
}
|
|
|
|
variationSelect.on('change', updatePriceAndButton);
|
|
classTypeSelect.on('change', updatePriceAndButton);
|
|
|
|
addToCartButton.on('click', function() {
|
|
const variationId = variationSelect.val();
|
|
const classTypeId = classTypeSelect.val();
|
|
alert(`Prodotto aggiunto al carrello!\nVariazione: ${variationSelect.find('option:selected').text()}\nClasse: ${classTypeSelect.find('option:selected').text()}`);
|
|
// Qui puoi aggiungere una chiamata AJAX per aggiungere al carrello
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|