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

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

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!"; }

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? :confused: ___ Beste Grüße, Michael

Okay, jetzt klappt’s :slight_smile: [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]