From 5c8c0287398672ec00bcf1da29b11dfd23084a16 Mon Sep 17 00:00:00 2001 From: AI Bot Date: Wed, 8 Jul 2026 10:33:35 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20Verhindere=20Duplicate=20entry=20Fehler?= =?UTF-8?q?=20f=C3=BCr=20Hersteller=20und=20Kategorien=20bei=20Artikelerst?= =?UTF-8?q?ellung/-bearbeitung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/add_article.php | 40 ++++++++++++++++++++++++++++++---------- src/edit_article.php | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/add_article.php b/src/add_article.php index 2d987b6..10dd5c9 100644 --- a/src/add_article.php +++ b/src/add_article.php @@ -152,21 +152,41 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST['manufacturer_id']) && $_POST['manufacturer_id'] === 'new') { $new_manufacturer_name = trim($_POST['new_manufacturer_name']); if (!empty($new_manufacturer_name)) { - $stmt_man = $conn->prepare("INSERT INTO manufacturers (name, user_id) VALUES (?, ?)"); - $stmt_man->bind_param("si", $new_manufacturer_name, $current_user_id); - if ($stmt_man->execute()) { $manufacturer_id = $conn->insert_id; } - $stmt_man->close(); - } + $stmt_check = $conn->prepare("SELECT id FROM manufacturers WHERE name = ? AND user_id IN ($placeholders)"); + $check_params = array_merge([$new_manufacturer_name], $household_member_ids); + $stmt_check->bind_param("s" . $types, ...$check_params); + $stmt_check->execute(); + $res_check = $stmt_check->get_result(); + if ($res_check->num_rows > 0) { + $manufacturer_id = $res_check->fetch_assoc()['id']; + } else { + $stmt_man = $conn->prepare("INSERT INTO manufacturers (name, user_id) VALUES (?, ?)"); + $stmt_man->bind_param("si", $new_manufacturer_name, $current_user_id); + if ($stmt_man->execute()) { $manufacturer_id = $conn->insert_id; } + $stmt_man->close(); + } + $stmt_check->close(); + } else { $manufacturer_id = NULL; } } else { $manufacturer_id = !empty($_POST['manufacturer_id']) ? intval($_POST['manufacturer_id']) : NULL; } if (isset($_POST['category_id']) && $_POST['category_id'] === 'new') { $new_category_name = trim($_POST['new_category_name']); if (!empty($new_category_name)) { - $stmt_cat = $conn->prepare("INSERT INTO categories (name, user_id) VALUES (?, ?)"); - $stmt_cat->bind_param("si", $new_category_name, $current_user_id); - if($stmt_cat->execute()){ $category_id = $conn->insert_id; } - $stmt_cat->close(); - } + $stmt_check = $conn->prepare("SELECT id FROM categories WHERE name = ? AND user_id IN ($placeholders)"); + $check_params = array_merge([$new_category_name], $household_member_ids); + $stmt_check->bind_param("s" . $types, ...$check_params); + $stmt_check->execute(); + $res_check = $stmt_check->get_result(); + if ($res_check->num_rows > 0) { + $category_id = $res_check->fetch_assoc()['id']; + } else { + $stmt_cat = $conn->prepare("INSERT INTO categories (name, user_id) VALUES (?, ?)"); + $stmt_cat->bind_param("si", $new_category_name, $current_user_id); + if($stmt_cat->execute()){ $category_id = $conn->insert_id; } + $stmt_cat->close(); + } + $stmt_check->close(); + } else { $category_id = NULL; } } else { $category_id = !empty($_POST['category_id']) ? intval($_POST['category_id']) : NULL; } $image_url_for_db = NULL; diff --git a/src/edit_article.php b/src/edit_article.php index 2a7a4cc..84c5a28 100644 --- a/src/edit_article.php +++ b/src/edit_article.php @@ -257,20 +257,40 @@ elseif ($_SERVER["REQUEST_METHOD"] == "POST" && $can_edit) { if (isset($_POST['manufacturer_id']) && $_POST['manufacturer_id'] === 'new') { $new_manufacturer_name = trim($_POST['new_manufacturer_name']); if (!empty($new_manufacturer_name)) { - $stmt_man = $conn->prepare("INSERT INTO manufacturers (name, user_id) VALUES (?, ?)"); - $stmt_man->bind_param("si", $new_manufacturer_name, $current_user_id); - if ($stmt_man->execute()) { $manufacturer_id = $conn->insert_id; } - $stmt_man->close(); + $stmt_check = $conn->prepare("SELECT id FROM manufacturers WHERE name = ? AND user_id IN ($placeholders)"); + $check_params = array_merge([$new_manufacturer_name], $household_member_ids); + $stmt_check->bind_param("s" . $types, ...$check_params); + $stmt_check->execute(); + $res_check = $stmt_check->get_result(); + if ($res_check->num_rows > 0) { + $manufacturer_id = $res_check->fetch_assoc()['id']; + } else { + $stmt_man = $conn->prepare("INSERT INTO manufacturers (name, user_id) VALUES (?, ?)"); + $stmt_man->bind_param("si", $new_manufacturer_name, $current_user_id); + if ($stmt_man->execute()) { $manufacturer_id = $conn->insert_id; } + $stmt_man->close(); + } + $stmt_check->close(); } else { $manufacturer_id = NULL; } } else { $manufacturer_id = !empty($_POST['manufacturer_id']) ? intval($_POST['manufacturer_id']) : NULL; } if (isset($_POST['category_id']) && $_POST['category_id'] === 'new') { $new_category_name = trim($_POST['new_category_name']); if (!empty($new_category_name)) { - $stmt_cat = $conn->prepare("INSERT INTO categories (name, user_id) VALUES (?, ?)"); - $stmt_cat->bind_param("si", $new_category_name, $current_user_id); - if($stmt_cat->execute()){ $category_id = $conn->insert_id; } - $stmt_cat->close(); + $stmt_check = $conn->prepare("SELECT id FROM categories WHERE name = ? AND user_id IN ($placeholders)"); + $check_params = array_merge([$new_category_name], $household_member_ids); + $stmt_check->bind_param("s" . $types, ...$check_params); + $stmt_check->execute(); + $res_check = $stmt_check->get_result(); + if ($res_check->num_rows > 0) { + $category_id = $res_check->fetch_assoc()['id']; + } else { + $stmt_cat = $conn->prepare("INSERT INTO categories (name, user_id) VALUES (?, ?)"); + $stmt_cat->bind_param("si", $new_category_name, $current_user_id); + if($stmt_cat->execute()){ $category_id = $conn->insert_id; } + $stmt_cat->close(); + } + $stmt_check->close(); } else { $category_id = NULL; } } else { $category_id = !empty($_POST['category_id']) ? intval($_POST['category_id']) : NULL; }