# Artikel-Art herausfinden

**URL:** <https://forum.shopware.com/t/artikel-art-herausfinden/2530>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [20. April 2011 um 12:05 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530 "2011-04-20T12:05:04Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 12:05 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/1 "2011-04-20T12:05:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![SebastianKloepper](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sebastiankloepper/32/21435_2.png) [@SebastianKloepper](https://forum.shopware.com/u/SebastianKloepper)\
**Post date:** [20. April 2011 um 12:16 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/2 "2011-04-20T12:16:50Z")

</div>

Hi, schau mal hier: [http://www.shopware.de/wiki/Uebersicht\_detail\_239.html](http://www.shopware.de/wiki/Uebersicht%5C_detail%5C_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.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 13:03 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/3 "2011-04-20T13:03:11Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 13:15 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/4 "2011-04-20T13:15:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 14:05 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/5 "2011-04-20T14:05:53Z")

</div>

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 `

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [20. April 2011 um 14:21 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/6 "2011-04-20T14:21:29Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 15:21 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/7 "2011-04-20T15:21:43Z")

</div>

Hey Stefan, du meinst diesen Artikel, oder? [http://www.shopware.de/wiki/\_detail\_608.html](http://www.shopware.de/wiki/%5C_detail%5C_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)); `

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [20. April 2011 um 15:43 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/8 "2011-04-20T15:43:38Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 15:59 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/9 "2011-04-20T15:59:05Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [20. April 2011 um 16:02 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/10 "2011-04-20T16:02:50Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [20. April 2011 um 23:06 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/11 "2011-04-20T23:06:56Z")

</div>

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 `

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [4. Mai 2011 um 17:39 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/12 "2011-05-04T17:39:54Z")

</div>

Lösung ist gut. Query aber nicht 😉 [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.

---

<div class="post-metadata">

**Author:** ![ottscho](https://avatars.discourse-cdn.com/v4/letter/o/7ba0ec/32.png) [@ottscho](https://forum.shopware.com/u/ottscho)\
**Post date:** [5. Mai 2011 um 11:48 UTC](https://forum.shopware.com/t/artikel-art-herausfinden/2530/13 "2011-05-05T11:48:44Z")

</div>

> [@Stefan Hamann](#):
>
> Lösung ist gut. Query aber nicht 😉 [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.
