# \[gelöst\] IMPORT: prüfen, ob Artikel bereits vorhanden

**URL:** https://forum.shopware.com/t/gelost-import-prufen-ob-artikel-bereits-vorhanden/7731
**Category:** Shopware 3.5
**Tags:** general
**Created:** [17. Juli 2012 um 12:50 UTC](https://forum.shopware.com/t/gelost-import-prufen-ob-artikel-bereits-vorhanden/7731 "2012-07-17T12:50:28Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![cxo\_michael](https://avatars.discourse-cdn.com/v4/letter/c/b77776/32.png) [@cxo\_michael](https://forum.shopware.com/u/cxo_michael)
#### Post date: [17. Juli 2012 um 12:50 UTC](https://forum.shopware.com/t/gelost-import-prufen-ob-artikel-bereits-vorhanden/7731/1 "2012-07-17T12:50:28Z")

</div>

Hallo, ich würde gerne alle neuen Artikel, die per Import reinkommen, deaktivieren. `$articles[0]['active'] = '0';` Jedoch sollen alle bereits existierenden Artikel nicht wieder deaktiviert werden. Es sollen also ausschließlich neue Artikel deaktiviert werden, die dann von der Redaktion bearbeitet und aktiviert werden können. Ich habe die Bestellnummer des angelieferten Artikels und will nun prüfen, ob dieser Artikel bereits existiert oder eben ein neuer Artikel ist, um diesen neuen zu deaktivieren. Finde ich einen bereits existierenden Artikel vielleicht hier drin? `$import =& $api-\>import-\>shopware;` Falls ja, wie frage ich den ab? \_\_\_ beste Grüße, Michael

---

<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: [17. Juli 2012 um 14:05 UTC](https://forum.shopware.com/t/gelost-import-prufen-ob-artikel-bereits-vorhanden/7731/2 "2012-07-17T14:05:54Z")

</div>

Als Workaround z.B. so: ` $artExist= Shopware()-\>Db()-\>fetchOne('Select count(id) from s\_articles\_details WHERE ordernumber="ABC123"'); if ($artExist == 0) { echo "Artikel existiert nicht!"; } else { echo "Artikel existiert!"; } `

---

<div class="post-metadata">

### Author: ![cxo\_michael](https://avatars.discourse-cdn.com/v4/letter/c/b77776/32.png) [@cxo\_michael](https://forum.shopware.com/u/cxo_michael)
#### Post date: [17. Juli 2012 um 14:22 UTC](https://forum.shopware.com/t/gelost-import-prufen-ob-artikel-bereits-vorhanden/7731/3 "2012-07-17T14:22:39Z")

</div>

Erstmal Danke, aber das ist aber unpraktisch. Also geht das nicht über einen ModelController? Denn es werden jede Nacht etwa 25-250K Datensätze angeliefert. In der Regel gleichen sie den existierenden bereits. Na ja, aber wenn es keinen schickeren Weg gibt, dann eben mit einer SQL-Abfrage. Eine Funktion, die über die Models drüberläuft, gibt es aber nicht zufällig bereits, oder? 😕 \_\_\_ Beste Grüße, Michael

---

<div class="post-metadata">

### Author: ![cxo\_michael](https://avatars.discourse-cdn.com/v4/letter/c/b77776/32.png) [@cxo\_michael](https://forum.shopware.com/u/cxo_michael)
#### Post date: [17. Juli 2012 um 15:08 UTC](https://forum.shopware.com/t/gelost-import-prufen-ob-artikel-bereits-vorhanden/7731/4 "2012-07-17T15:08:17Z")

</div>

Okay, jetzt klappt’s 🙂 [code]\<?php error\_reporting(E\_ERROR | E\_WARNING | E\_PARSE | E\_NOTICE);  
require\_once(’…/…/api.php’);  
$api = new sAPI();

$import =& $api-\>import-\>shopware; $mapping =& $api-\>convert-\>mapping; $mappingmask = array ( ‚ordernumber‘, //Bestellnummer ‚name‘, //Artikelname ‚mainnumber‘, //Hauptvariante (Bestellnummer) #‚additionaltext‘, //Variantentext ‚description‘, //Kurzbeschreibung ‚description\_long‘, //Langbeschreibung #‚keywords‘, //Schluesselwoerter ‚supplier‘, //Herstellername ‚suppliernumber‘, //Herstellernummer ‚weight‘, //Gewicht (in kg !) ‚active‘, //Aktiv (0|1) ‚shippingtime‘, //Lieferzeit (in Tagen) #‚shippingfree‘, //kostenlose Lieferung (0|1) ‚releasedate‘, //Erscheinungsdatum ‚instock‘, //Bestand ‚stockmin‘, //Mindestbestand ‚attr1‘, //Freitext-Feld ‚attr2‘, //Freitext-Feld #‚attr3‘, //Freitext-Feld #‚attr4‘, //Freitext-Feld #‚attr5‘, //Freitext-Feld #‚attr6‘, //Freitext-Feld #‚attr7‘, //Freitext-Feld #‚attr8‘, //Freitext-Feld #‚attr9‘, //Freitext-Feld #‚attr10‘, //Freitext-Feld #‚attr11‘, //Freitext-Feld #‚attr12‘, //Freitext-Feld #‚attr13‘, //Freitext-Feld #‚attr14‘, //Freitext-Feld #‚attr15‘, //Freitext-Feld #‚attr16‘, //Freitext-Feld #‚attr17‘, //Datum-Feld (YYYY-MM-DD) #‚attr18‘, //Freitext-Feld #‚attr19‘, //Freitext-Feld #‚attr20‘, //Freitext-Feld #‚image1‘, //Bild #1 #‚image2‘, //Bild #2 #‚image3‘, //Bild #3 #‚category1‘, //Kategorie #1 #‚category2‘, //Kategorie #2 #‚category3‘, //Kategorie #3 ‚price‘, //Preis #'pseudoprice ', //UVP ‚baseprice‘, //EK ‚tax‘, //MwSt (7|19|…) #'topseller ', //Artikel hervorheben (0|1) #'crossselling ', //Cross-Selling (Bestellnummer, Bestellnummer, Bestellnummer, …) #'downloads ', //Download-Links (Download-Link, Download-Link, Download-Link, …) #‚links ‚, //Links (Link, Link, Link, …) ); $mappingmask = $mapping-\>prepare\_mask ($mappingmask); $articles[0][‚ordernumber‘] = ‚test2345‘; $articles[0][‚name‘] = ‚Test 2345 (neu)‘; $articles[0][‚mainnumber‘] = ‚‘; $articles[0][‚supplier‘] = ‚Test-Hersteller‘; $articles[0][‚suppliernumber‘] = ‚Hersteller-Nummer‘; $articles[0][‚shippingtime‘] = ‚3‘; $articles[0][‚releasedate‘] = ‚2012-07-17‘; $articles[0][‚instock‘] = ‚10‘; $articles[0][‚stockmin‘] = ‚2‘; $articles[0][‚active‘] = ‚0‘; $articles[0][‚weight‘] = ‚‘; $articles[0][‚description\_long‘] = ‚Test - Langbeschreibung‘; $articles[0][‚description‘] = ‚Test - Kurzbeschreibung‘; $articles[0][‚attr1‘] = ‚etwas‘; $articles[0][‚attr2‘] = ‚anderes‘; $articles[0][‚price‘] = ‚25,99‘; $articles[0][‚baseprice‘] = ‚19,99‘; $articles[0][‚tax‘] = ‚7‘; foreach($articles as $articlekey =\> $article) { $article\_data = $mapping-\>convert\_line($mappingmask,$article,true); if(!empty($article\_data[„mainnumber“])) { unset($article\_data[„description\_long“], $article\_data[„description“],$article\_data[„name“], $article\_data[„supplier“], $article\_data[„supplier“]); } //check existing article if(Shopware()-\>Db()-\>fetchOne(‚SELECT s\_articles.active FROM s\_articles\_details LEFT JOIN s\_articles ON (s\_articles\_details.articleID = s\_articles.id) WHERE s\_articles\_details.ordernumber="‘.mysql\_real\_escape\_string($article\_data[‚ordernumber‘]).‘"‘)) { $article\_data[‚active‘] = ‚1‘; } //Artikel Stammdaten speichern und neue ArtikelID und ArticledetailsID in $article\_data speichern $article\_data = array\_merge($article\_data, $import-\>sArticle($article\_data));y\_merge($article\_data, $import-\>sArticle($article\_data)); } ?\>[/code]
