prepare("SELECT title, attribute_group_id FROM products WHERE id = ?"); $stmt->execute([$product_id]); $product = $stmt->fetch(); if (!$product) { die("Το προϊόν δεν βρέθηκε."); } $group_id = $product['attribute_group_id']; // Αν το προϊόν δεν έχει Attribute Group, δεν μπορούμε να βάλουμε χαρακτηριστικά if (!$group_id) { $no_group_msg = true; } else { $no_group_msg = false; // Χειρισμός Αποθήκευσης Φόρμας if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['attributes'])) { try { $pdo->beginTransaction(); // Διαγράφουμε τις παλιές τιμές για αυτό το προϊόν (ώστε να κάνουμε καθαρό update) $delStmt = $pdo->prepare("DELETE FROM product_attribute_values WHERE product_id = ?"); $delStmt->execute([$product_id]); // Εισάγουμε τις νέες τιμές $insStmt = $pdo->prepare("INSERT INTO product_attribute_values (product_id, attribute_id, value) VALUES (?, ?, ?)"); foreach ($_POST['attributes'] as $attr_id => $value) { $value = trim($value); if ($value !== '') { // Αποθηκεύουμε μόνο όσα δεν είναι κενά $insStmt->execute([$product_id, $attr_id, $value]); } } $pdo->commit(); $message = "
Τα χαρακτηριστικά αποθηκεύτηκαν επιτυχώς!
"; } catch (Exception $e) { $pdo->rollBack(); $message = "
Σφάλμα αποθήκευσης: " . $e->getMessage() . "
"; } } // 2. Φέρνουμε τα Attributes της ομάδας + Τις τρέχουσες τιμές (αν υπάρχουν ήδη καταχωρημένες) // Χρησιμοποιούμε LEFT JOIN για να ενώσουμε τα χαρακτηριστικά με τις τιμές που έχει βάλει ο χρήστης $attrStmt = $pdo->prepare(" SELECT a.id as attr_id, a.name as attr_name, a.unit, pav.value FROM attributes a LEFT JOIN product_attribute_values pav ON a.id = pav.attribute_id AND pav.product_id = ? WHERE a.group_id = ? ORDER BY a.name "); $attrStmt->execute([$product_id, $group_id]); $product_attributes = $attrStmt->fetchAll(); } ?> Χαρακτηριστικά: <?php echo htmlspecialchars($product['title']); ?>

Συμπλήρωση Χαρακτηριστικών

Προϊόν:

Αυτό το προϊόν δημιουργήθηκε χωρίς "Ομάδα Χαρακτηριστικών". Μπορείτε να του αναθέσετε μια ομάδα επεξεργάζοντας το προϊόν.
Επιστροφή στα Προϊόντα
Επιστροφή