0 && $iid > 0) { $qty = max(1, (int)($_POST['quantity'] ?? 1)); try { $pdo->prepare("INSERT IGNORE INTO activity_item_map (activityID,itemID,quantity) VALUES (?,?,?)") ->execute([$aid, $iid, $qty]); flash('success', 'Mapping added.'); } catch (Exception $e) { flash('error', 'Could not add mapping.'); } } if ($action === 'update' && $aid > 0 && $iid > 0) { $qty = max(1, (int)($_POST['quantity'] ?? 1)); $pdo->prepare("UPDATE activity_item_map SET quantity=? WHERE activityID=? AND itemID=?") ->execute([$qty, $aid, $iid]); flash('success', 'Quantity updated.'); } if ($action === 'remove' && $aid > 0 && $iid > 0) { $pdo->prepare("DELETE FROM activity_item_map WHERE activityID=? AND itemID=?") ->execute([$aid, $iid]); flash('success', 'Mapping removed.'); } header('Location: mappings.php' . (isset($_GET['aid']) ? '?aid=' . (int)$_GET['aid'] : '')); exit; } // Load all activities and items for selects $activities = $pdo->query(" SELECT a.activityID, a.activityName, ag.groupName FROM activities a JOIN activity_groups ag ON ag.groupID = a.groupID ORDER BY ag.sortOrder, a.sortOrder, a.activityID ")->fetchAll(); $allItems = $pdo->query(" SELECT i.itemID, i.itemName, ig.groupName FROM items i JOIN item_groups ig ON ig.groupID = i.groupID ORDER BY ig.sortOrder, i.sortOrder, i.itemID ")->fetchAll(); // Selected activity filter $selectedAid = isset($_GET['aid']) ? (int)$_GET['aid'] : 0; if (!$selectedAid && !empty($activities)) { $selectedAid = $activities[0]['activityID']; } // Get current mappings for selected activity $mappedItemIds = []; $mappedItems = []; if ($selectedAid) { $stmt = $pdo->prepare(" SELECT i.itemID, i.itemName, ig.groupName, aim.quantity FROM activity_item_map aim JOIN items i ON i.itemID = aim.itemID JOIN item_groups ig ON ig.groupID = i.groupID WHERE aim.activityID = ? ORDER BY ig.sortOrder, i.sortOrder "); $stmt->execute([$selectedAid]); $mappedItems = $stmt->fetchAll(); $mappedItemIds = array_column($mappedItems, 'itemID'); } admin_head('Mappings', 'mappings.php'); show_alerts(); ?>

Activity ↔ Item Mappings

Select Activity

Items for:

No items mapped yet.

#ItemGroupQty