Shop Support News Archive - Shopbetreiber News -> Forum : ECB: Artikel löschen anhand von Artikelnr.
Hallo Leute, ich möchte in meinem Script die Artikelnummern mit denen in der Datenbank abgleichen und wenn eine Artikelnummer nicht vorhanden ist, diesen Artikel komplett löschen.
Was gehört alles zu einem Artikel/Artikelnummer?
Wie gehe ich am besten vor?
Hallo Leute, ich möchte in meinem Script die Artikelnummern mit denen in der Datenbank abgleichen und wenn eine Artikelnummer nicht vorhanden ist, diesen Artikel komplett löschen.
Was gehört alles zu einem Artikel/Artikelnummer?
Wie gehe ich am besten vor?
Ich würde mir die Artikel aus der DB per phpmyadmin auf den Rechner laden und mit Excel oder mit Open Office bearbeiten.
[ ]products
[ ]products_description
[ ]products_to_categories
Was soll das für ein Script sein?
Das soll ein halbautomatisches Datenabgleich-Script werden.
Dieses will ich in den Importbereich vom Backend einbauen.
Ich kann inzwischen per Klick die Wortmann-Datei von dem Wortmann-FTP in meinen Import-Ordner laden.
Ich kann per Klick eine ordentliche, utf8 formatierte Datei generieren und alle Werte richtig in ein 2d-Array laden.
Ich möchte nun noch per Klick alle neuen Artikel in die Kategorie "Unsortiert" laden und die Artikel, die nicht mehr in der Datei stehen wieder aus der Datenbank löschen.
-> Hierzu habe ich mir nun in eine Funktion den Abschnitt
// removes a product + images + more images + content
aus der admin/includes/classes/categories.php
und dazu alle Funktionen geladen die scheinbar dafür benötigt werden.
Aber leider löscht er mit remove_product($product_id); nicht den entsprechenden Artikel bei Eingabe der Artikelnummer.
Ist mein Ansatz gänzlich falsch oder habe ich etwas nicht beachtet?
MS - [ Offline ]
07.01.2010, 11:17
Wie der Parameter schon verrät brauchst du auch die Produkt-ID, nicht die Artikelnummer. Die musst du dir dann halt vorher holen.
Autsch, hab ich verwechselt, aber auch mit der richtigen Produkt-ID geht es leider nicht, habe ich gerade getestet.
Er scheint bereits beim ersten Datenbank Query zu hängen:
$product_content_query = xtc_db_query("SELECT content_file
FROM ".TABLE_PRODUCTS_CONTENT."
WHERE products_id = '".xtc_db_input($product_id)."'");
obwohl die Funktionen xtc_db_query und xtc_db_input geladen sind und die $product_id jetzt richtig ist.
MS - [ Offline ]
07.01.2010, 11:39
Hast du application_top.php geladen? Damit sparst du dir zahlreiche anderen Dateien zu laden, die du möglicherweise sonst vergessen hast.
Geht nicht, bzw. ich weiß nicht wie, weil meine Dateien bislang lediglich ein paar php Dateien in einem Unterordner von /admin sind.
MS - [ Offline ]
07.01.2010, 12:20
require_once ('includes/application_top.php');
Danke, aber ich meine mit "Funktioniert nicht", dass es nicht geht, weil ich mein Script noch nicht aus ecb, sondern direkt ausführe.
Sprich, ich bin noch nicht soweit, dass ich dieses in der Administration ausführen kann bzw. weiß noch gar nicht wie ich das mache.
Kriege nichteinmal das im ecb zum laufen, ist doch zum heulen...
Bekomme beim Import trotz einiger Anpassungen der Dateien folgenden Fehler in jeder Zeile:
ERROR: wrong action (""), line: 1 dataset:
MS - [ Offline ]
07.01.2010, 14:13
Lass dir vor allem mal die SQLs ausgeben, bevor du sie in die Datenbank feuerst.
Das löschen nach Artikelnummer funktionier nun mit folgendem Code, nun bitte ich Euch diesen so zu ergänzen, dass alle zusammengehörigen Daten, die bei einem Artikel im ecb Shop zur Artikelnummer/Artikel gehören, gelöscht werden.
$prod_id_query = mysql_query("SELECT products_id FROM products WHERE products_model='".mysql_real_escape_string($pModel)."'");
while ($del = mysql_fetch_array($prod_id_query)) {
mysql_query("DELETE FROM products_to_categories WHERE products_id='".$del['products_id']."'");
mysql_query("DELETE FROM products_content WHERE products_id='".$del['products_id']."'");
mysql_query("DELETE FROM products_attributes WHERE products_id='".$del['products_id']."'");
mysql_query("DELETE FROM products_attributes_download WHERE products_id='".$del['products_id']."'");
mysql_query("DELETE FROM products_description WHERE products_id='".$del['products_id']."'");
mysql_query("DELETE FROM products WHERE products_id='".$del['products_id']."'");
}
Guten Morgen!
Mag mir bitte jemand sagen, welche DB Tabellen im ecb shop zu einem Artikel gehören oder mir einen Verweis auf entsprechende Leselektüre geben?
vBulletin® v3.8.4, Copyright ©2000-2012, Jelsoft Enterprises Ltd.