From 7bdc421d906f469785e8d38e7310dd613bba5a0a Mon Sep 17 00:00:00 2001 From: Gemini Agent Date: Mon, 8 Dec 2025 21:40:13 +0000 Subject: [PATCH] Fix: Correct display of new templates and limit carriers to assigned users --- src/manage_packing_list_items.php | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/manage_packing_list_items.php b/src/manage_packing_list_items.php index 69c56b1..ddd6097 100644 --- a/src/manage_packing_list_items.php +++ b/src/manage_packing_list_items.php @@ -69,25 +69,32 @@ $stmt_all_articles->execute(); $all_articles_raw = $stmt_all_articles->get_result()->fetch_all(MYSQLI_ASSOC); $stmt_all_articles->close(); -$sql_items = "SELECT pli.id, pli.article_id, pli.quantity, pli.parent_packing_list_item_id, pli.carrier_user_id, pli.backpack_id, pli.backpack_compartment_id, COALESCE(a.name, pli.name) as name, a.weight_grams, a.product_designation, a.consumable, m.name as manufacturer_name +$sql_items = "SELECT pli.id, pli.article_id, pli.quantity, pli.parent_packing_list_item_id, pli.carrier_user_id, pli.backpack_id, pli.backpack_compartment_id, +COALESCE( + a.name, + bc.name, + CASE WHEN b.name IS NOT NULL THEN CONCAT('Rucksack: ', b.name) ELSE NULL END, + pli.name +) as name, +a.weight_grams, a.product_designation, a.consumable, m.name as manufacturer_name FROM packing_list_items pli LEFT JOIN articles a ON pli.article_id = a.id LEFT JOIN manufacturers m ON a.manufacturer_id = m.id +LEFT JOIN backpacks b ON pli.backpack_id = b.id +LEFT JOIN backpack_compartments bc ON pli.backpack_compartment_id = bc.id WHERE pli.packing_list_id = ? -AND (pli.carrier_user_id IN ($placeholders) OR pli.carrier_user_id IS NULL) ORDER BY pli.order_index ASC"; $stmt_items = $conn->prepare($sql_items); -$params_items = array_merge([$packing_list_id], $household_member_ids); -$types_items = 'i' . $types; -$stmt_items->bind_param($types_items, ...$params_items); +$stmt_items->bind_param("i", $packing_list_id); $stmt_items->execute(); $packed_items_raw = $stmt_items->get_result()->fetch_all(MYSQLI_ASSOC); $stmt_items->close(); $carriers_data = []; -$stmt_carriers = $conn->prepare("SELECT id, username FROM users WHERE id IN ($placeholders)"); -$stmt_carriers->bind_param($types, ...$household_member_ids); +// KORREKTUR: Nur Träger anzeigen, die dieser Liste zugewiesen sind +$stmt_carriers = $conn->prepare("SELECT u.id, u.username FROM users u JOIN packing_list_carriers plc ON u.id = plc.user_id WHERE plc.packing_list_id = ? ORDER BY u.username"); +$stmt_carriers->bind_param("i", $packing_list_id); $stmt_carriers->execute(); $carriers_result = $stmt_carriers->get_result(); while ($row = $carriers_result->fetch_assoc()) { $carriers_data[] = $row; }