Hallo liebes Gambio-Forum, Meinen Shop habe ich hinsichtlich der Datenbank und dem Frontend angepasst, um mir weitere Informationen anzeigen zu lassen bzw. den CSV Import zu automatisieren. Aus diesem Grund habe ich in der Tabelle "product_to_categories" die product_id auf "UNIQUE" gesetzt - eben weil jeder Artikel genauer einer Kategorie zugeordnet werden soll. Nehme ich jetzt einen importierten Artikel, verändere seine Eigenschaft und speichere dann, erhalte ich den berüchtigten SQL Error: Code: 2015-04-22 18:04:44 (4b996b50f310c7ff43719f0723200c14) SQL ERROR(1062): "Duplicate entry '5819' for key 'products_id'" in /var/www/web45/html/000/inc/xtc_db_error.inc.php:23 (Details) #4 File: /var/www/web45/html/000/inc/xtc_db_error.inc.php:23 #3 File: /var/www/web45/html/000/inc/xtc_db_query.inc.php:77 #2 File: /var/www/web45/html/000/admin/includes/classes/categories.php:2260 #1 File: /var/www/web45/html/000/admin/includes/classes/categories.php:804 #0 File: /var/www/web45/html/000/admin/categories.php:181 Request: POST /000/admin/categories.php?cPath=12_47&pID=5819&action=update_product (Details) Post: (Details) Get: (Details) Information: Query: [B]INSERT INTO products_to_categories SET products_id = '5819', categories_id = '0[/B]' Der Fehler ist eindeutig: Dadurch, dass ich keine weitere Kategorie zulasse, kann er mit dem SQL Statement auch nichts machen. Verwundert hatte mich die Tatsache, dass man beim Erstellen eines neuen Artikels diesen nicht direkt einer Kategorie zuweisen kann. Wenn ein entsprechendes Dropdown Feld verfügbar ist, würde die Fehlermeldung verschwinden - zumal ich diesen Punkt deutlich benutzerfreundlicher finde. Daher meine Frage: Gibt es bereits eine Anleitung oder ein Fix für die Kategoriezuweisung? Falls nein, sind euch etwaige andere Themen bekannt, in denen man Tipps zur eigenen Programmierung erhält? Danke und viele Grüße
Ich würd das Feld einfach nicht auf Unique setzen. Selbst wenn man wie du jeden Artikel nur in einer Kategorie haben will, löst das doch nur unnötige Fehler aus, die an keiner Stelle abgefangen werden. Als simple Alternative kann man z.B. ab und an eine einfache SQL-Abfrage auf doppelte Datensätze in der products_id machen. Per Cronjob in nem Intervall ausgeführt und der Aufwand ist auch nicht sonderlich groß. Wenn du einen Artikel manuell neu anlegst, kannst du die Kategorie festlegen indem du vorher in die entsprechende Kategorie im Adminbereich gehst und erst von dort den Artikel anlegst. Falls du neue Artikel per CSV anlegst, kannst du dort festlegen in welche Kategorie der Artikel soll.
Hallo, categories_id = 0 ist die „Top“-Kategorie, also die Empfehlungen auf der Startseite. Auf das Feature müsstest du mit dem Unique-Index auf jeden Fall verzichten.