Artikel-Art herausfinden

Hallo, wie kann ich am einfachsten herausfinden, was die Artikelnummer XZY für ein Artikel ist? Sprich, ein Standard-Artikel, Variante etc. Gibt es irgendwelche Merkmale in der DB s_articles ? Danke

Hi, schau mal hier: http://www.shopware.de/wiki/Uebersicht_detail_239.html In der Artikelübersicht wird das schon geprüft. Also ob es ein Varianten / Bundle / Konfigurator / Liveshopping - Artikel usw. ist. Du müsstest dir die Abfragen einfach in dem Backend-Modul ansehen können.

Okay danke. Die Icons werden ja dann im Gird dargestellt. Das macht es für mich dann etwas schwieriger die passende Stelle zu finden. Aber ich schau es mir mal an! Ich muss nämlich wissen/prüfen, dass es ein normaler Artikel ist andernfalls muss eine Meldung kommen. Danke

Okay, ich glaube ich hab die Datei gefunden. articlefast/fast.php Leider kann ich hier die Abfrage nicht finden. Hast du mir einen Tipp? Danke

Hey, ich habe mir jetzt noch mal die DB angeschaut und bin auf folgenden Ansatz gekommen. In der Tabelle s_articles_details stehen die Detailinformationen. Wenn ich eine Artikel-Variante oder Bundle habe, so habe ich zu der articleID mehrere Einträge. Stimmt das? Wenn das korrekt ist, frag ich die Tabelle einfach ab. Wenn das Count > 1 ist, dann ist es kein Standardartikel. kann ich das so machen? SELECT count( \* ) FROM `s_articles_details` WHERE articleID =13

Moin, schau mal in den Tutorials - extJS TUtorial - da hatte ich doch ein Beispiel-Grid wo alle “Special-Artikel” gefiltert angezeigt worden sind - da kannst du doch die Queries als Beispiel nehmen?

Hey Stefan, du meinst diesen Artikel, oder? http://www.shopware.de/wiki/_detail_608.html Meinst du dieses Query? Aber das ist doch was ganz anderes, oder? Verstehe jetzt nicht ganz, was du damit meinst. $getElements = Shopware()-\>Db()-\>fetchAll(" SELECT `description`, `valid_from`,`valid_to`,'' As mode,'Banner' AS typ FROM s\_emarketing\_banners WHERE categoryID = ? UNION SELECT `description`, `valid_from`,`valid_to`,`mode`,'Einkaufswelt' AS typ FROM s\_emarketing\_promotions WHERE category = ? UNION SELECT `description`, `start` AS `valid_from`,`end` AS `valid_to`,'' As mode,'Aktion' AS typ FROM s\_emarketing\_promotion\_main WHERE parentID = ? ",array($id,$id,$id));

Ah okay, sorry, da hatte ich was falsch verstanden. Also um zu prüfen, ob ein Artikel irgendwelche Special-Features hat, musst du etwas tiefer eingreifen. Folgende Artikel-Typen gibt es: 1.) “Normal” (Wenn keine der Bedingungen 2-5 zutrifft) 2.) Eind. Variante SELECT auf s_articles_details WHERE kind != 1 (Wenn hier ein Ergebnis zurückkommt, hat der Artikel Varianten) 3.) Mehrd. Variante SELECT auf s_articles_groups_prices / articleID wenn Match gibt es mehrdimensionale Varianten 4.) Bundle SELECT auf s_articles_bundles / articleID - wenn Match ist es ein Bundle-Artikel 5.) Liveshopping SELECT auf s_articles_live / articleID - wenn Match ist es ein LS-Artikel Kannst du alles in einer Query mit Subselects erschlagen!

[quote=„Stefan Hamann“]Ah okay, sorry, da hatte ich was falsch verstanden. Also um zu prüfen, ob ein Artikel irgendwelche Special-Features hat, musst du etwas tiefer eingreifen. Folgende Artikel-Typen gibt es: 1.) „Normal“ (Wenn keine der Bedingungen 2-5 zutrifft) 2.) Eind. Variante SELECT auf s_articles_details WHERE kind != 1 (Wenn hier ein Ergebnis zurückkommt, hat der Artikel Varianten) 3.) Mehrd. Variante SELECT auf s_articles_groups_prices / articleID wenn Match gibt es mehrdimensionale Varianten 4.) Bundle SELECT auf s_articles_bundles / articleID - wenn Match ist es ein Bundle-Artikel 5.) Liveshopping SELECT auf s_articles_live / articleID - wenn Match ist es ein LS-Artikel Kannst du alles in einer Query mit Subselects erschlagen![/quote] Super, vielen Dank. Genau das meinte ich :thumbup: Mit „wenn Match“ meinst du, wenn ein Datensatz mit der articleID vorhanden ist, oder? Spricht was dagegen, wenn ich es in einzelne Query’s abfrage oder empfiehlst du alles komplett in einer Query mit Subselects zu machen? Subselect’s hatte ich noch nie im Einsatz. Daher weiß ich aus dem EfEf nicht wie das geht.

Beispiel für Subselects: SELECT s_articles.id, s_articles.name, IF((SELECT id FROM s_articles_details WHERE articleID = s_articles.id AND kind != 1 LIMIT 1),1,0) AS hasVariants FROM s_articles Dann Analog weitere IF-Bedingungen für die anderen Tests einbauen!

1 Like

Hey Stefan, deine Query funktoniert soweit. Ich hatte nur Probleme mit 3.) Mehrd. Variante SELECT auf s_articles_groups_prices / articleID wenn Match gibt es mehrdimensionale Varianten Wenn hier ein Artikel ein Mehrd. Variante Artikel war aber diese Varianten gelöscht wurden, bleiben leider die Datensätze in der Tabelle s_articles_groups_prices erhalten. Ich habe dies nun abgeändert auf die Tabelle s_articles_groups_value Hier waren nach der Abänderung keine Datensätze mehr zu finden. Sollte also passen. Oder was meinst du dazu? SELECT s\_articles.id, IF((SELECT id FROM s\_articles\_details WHERE articleID = {$\_GET["article"]} AND kind != 1 LIMIT 1),1,0) AS hasVariants, IF((SELECT id FROM s\_articles\_groups\_value WHERE articleID = {$\_GET["article"]} LIMIT 1),1,0) AS hasDimVariants, IF((SELECT id FROM s\_articles\_bundles WHERE articleID = {$\_GET["article"]} LIMIT 1),1,0) AS hasBundles, IF((SELECT id FROM s\_articles\_live WHERE articleID = {$\_GET["article"]} LIMIT 1),1,0) AS hasLive FROM s\_articles

Lösung ist gut. Query aber nicht :wink: [quote] SELECT s_articles.id, IF((SELECT id FROM s_articles_details WHERE articleID = {\_GET["article"]} AND kind != 1 LIMIT 1),1,0) AS hasVariants, IF((SELECT id FROM s\_articles\_groups\_value WHERE articleID = {_GET[„article“]} LIMIT 1),1,0) AS hasDimVariants, IF((SELECT id FROM s_articles_bundles WHERE articleID = {\_GET["article"]} LIMIT 1),1,0) AS hasBundles, IF((SELECT id FROM s\_articles\_live WHERE articleID = {_GET[„article“]} LIMIT 1),1,0) AS hasLive FROM s_articles [/quote] NIE NIE NIE Get-Parameter direkt in der Query einbauen - das öffnet Toren und Türen für SQL-Injections. Die Parameter IMMER über Prepared-Statements in die Query einfügen. Also Platzhalter / Fragezeichen an der Match-Position und die Parameter selbst als Array an PDO übergeben.