Artikel aus online-DB importieren

Begonnen von dobra, April 13, 2014, 10:20:06

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

ich habe ein Formular gebastelt, mit dem man Artikel online erstellen kann.
Mit "Import aus Online-DB" (Option 2. Aktualisieren - Es werden Daten hinzugefügt und bestehende aktualisiert - Zuordnung "automatisch")
habe ich diese dann - komplett fertig, incl Images, PDF-Ansicht usw - im WC und nach "Shop veröffentlichen" auch online im Shop.

Problem(chen):
Beim Anlegen der Artikel frage ich die höchste SID im Verzeinis ab und schreibe "+1" in die DB:
my $sqll = qq| SELECT MAX(SID) FROM $ITEM WHERE PGID='$kategorie'|;
my $count = ssp::readSQLData($sqll, "sid");
my $sid = ssp::get_var_db ("sid");
$sid = $sid + 1;


Das funktioniert auch - wenn ich nach dem Artikel online anlegen in die DB schaue, ist der SID-Wert korrekt eingetragen.
Beispiel:
alte Artikel haben SID 10 - 19
neuer Artikel 1 - SID 20
neuer Artikel 2 - SID 21
neuer Artikel 3 - SID 22


Aber...
Artikel in WC importieren -> Shop veröffentlichen -> die SID wird überschrieben und schaut im Beispiel dann so aus
alte Artikel  SID 10 - 19 (hier ändert sich nichts)
neuer Artikel 1 - SID 9
neuer Artikel 2 - SID 9
neuer Artikel 3 - SID 9

= die Reihenfolge wird "zufällig" angezeigt

Erst wenn ich die DB neu anlege (oder die Reihenfolge der neuen Artikel im WC manuell ändere) werden die SIDs wieder korrekt geschrieben.

Man kann die SID ja leider beim Import nicht zuordnen (auch nicht bei Import mit Access) - gibt es dafür einen Grund den ich nicht nachvollziehen kann ?
bzw. wie kann ich das ohne diese Zuordnungsmöglichkeit lösen ?

Nachtrag:
XCREATED wird beim Shop veröffentlichen auch überschrieben  :(
Aber das kann man wohl nicht verhindern ?
mfG
dobra

dobra

Habe das Problem jetzt anders gelöst  ::)

Aufgabe:
die Artikel auf den Artikelseiten sollen - unabhängig davon in welcher Reihenfohe (SID) sie im WC bzw. in der DB stehen - alphabetisch sortiert werden.
(ohne "direkte DB-Abfrage" weil ich nicht alle anderen Funktionen nachbauen wollte ;) )

Lösung:
Voraussetzung: "Artikel sortieren" aus dem Styleshop (Callback:AddSQLCondition, sort.ipl etc.) ist installiert !

Ist dieses Tool im Shop bereits eingebaut, kann man die Sortierung der Artikel ganz einfach mit get_catalog_markup festlegen.
im Beispiel "alphabetisch nach DESCR" - geht aber natürlich auch mit anderer Sortierung.

<!--spmacro:module(Callback)
sub get_catalog_markup {
    $level = $_[0];
    $selecetd = $_[1];
    $first = $_[2];
    $last = $_[3];
    $link = $_[4];
    $title = $_[5];

    my $class = ("menu" . ($level));
$link =~ /show(\d+)/;
$seitennummer = $1;
$selseite = "pgnsel" . $seitennummer;
if ($selecetd) {   $class =~ s/menu/msel/;  $selseite = "pgesel" . $seitennummer;}
if ($level = 1) {$link = $link . ",,,sfield=3&sdirection=2";}

my $out = qq|<a href="$link" class="$class" id="$selseite">$title</a>\n|;

    return $out;
}
-->


if ($level = 1) -> wenn die Artikelseite auf der 2. Ebene liegt.
1. Ebene ->  $level = 0
also zum anpassen immer Ebene -1
3. Ebene -> $level = 2

{$link = $link . ",,,sfield=3&sdirection=1";}
hier wird die gewünschte Sortierung vorbelegt -> sfield für das Feld nach dem sortiert werden soll und sdirection für aufsteigend oder absteigend.

Es geht natürlich auch ohne die Sortierung vom Styleshop anzuzeigen, aber alle Scripte müssen dann trotzdem vorher im Shop installiert und bei "Dateien hinzufügen" eingetragen werden.

XCREATED war noch einfacher  :)
Habe einfach ein neues ben.def. Feld ONLINEXCREATE angelegt - der Wert wird korrekt ins WC importiert und auch nicht überschrieben.
mfG
dobra