Warenkörbe / Angefangene Bestellungen Löschen

Hallo,

Eine (kleine?) Frage an jene die mehr Erfahrung mit OXID haben als ich.

Gegenwärtig überlege ich ob und wie ich die OXID CE an cleversten an unsere WaWi anschließe (fertige Module gibt es keine).

Als Hintergrund hier das geplante Vorgehen:

[ol]
[li]Shop Offline nehmen
[/li][li]Updates durchführen
[/li][li]Shop wieder Online nehmen
[/li][/ol]

So weit so gut.

Was mir allerdings etwas Kopfzerbrechen bereitet sind Kunden die sich währen der Updates noch im Shop befinden. Deren Warenkörbe / begonnene Bestellungen dürften wenn ich den OXID soweit richtig verstehe dann in der Datenbank zurückbleiben.

Im besten Fall wären das dann “Leichen”, im schlimmsten Fall (wenn z.B. das Update kurz genug ist) würden sich Artikel im laufenden Bestellprozess ändern (da die zugehörigen PHP Sessions noch intakt wären).

Meine Frage ist es nun: Wie kann ich dieses Problem beseitigen oder umgehen ?

Meine beste Idee ist es momentan während des Updates alle PHP Sessions zu eliminieren und gegebenenfalls oxuserbasket und oxuseritems zu leeren.

Ob das allerdings ein gangbarer Weg ist kann ich mit meiner begrenzeten OXID Erfahrung nicht sagen - auch dazu würde ich mich über Informationen freuen.

Gruß

Hi,

machst du nicht den letzten Schritt vor dem ersten ? Wenn es noch keine Anbindung gibt erstelle diese doch erstmal in einem Testshop.

In der Datenbank bleibt m.E. nach nichts über. Die Sessions ist doch auf den Client Rechner ?
Wenn das wirklich relavant sein sollte, um das was du dir da Gedanken machst würde ich die Anbindung zwischen 2 bis 4 Uhr machen. Da ist wenig Traffic.

Hi,

Danke für deine Antwort.

Ich kann leider keinen Einfluss daruf nehmen wann die Updates durchgeführt werden, das machen die Benutzer der WaWi (ich bin nur für die Technik zuständig).

Was die Sache mit dem ersten Schritt vor dem letzten Angeht:
Ein Testshop läuft schon bei mir lokal - so bin ich erst darauf aufmerksam geworden das OXID offenbar unter bestimmten Bedingungen (oder grundsätzlich ?) Warenkörbe vor dem Bestellabschluss speichert (Tabelle oxuserbaskets / oxuserbasketitems).

Ich möchte derartige Probleme nach Möglichkeit im vornherein berücksichtigen bzw. umgehen - daher die Frage.

Danke & Gruß

dann schalte dieses feature doch einfach ab - “Grundeinstellungen” => “Performance” => " Warenkörbe von angemeldeten Benutzern nicht speichern"

kopf->tisch
Vor lauter Datenbank hab ich die Einstellungen nicht mehr gesehen.

Danke ! Das sollte mein Problem lösen.

Altes Thema - aber trotzdem noch ein Frage hierzu.

Das Feature habe ich abgeschalten seit einiger Zeit.

Wie lösche ich aber die alten Einträge in der Datenbank der “offenen Warenkörbe”?
Diese sind ja bestimmt noch irgendwo eingebettet in der SQL, oder?

einfach die Tabellen leeren. ( siehe den 3. Beitrag )

Wenn ich die Merkzettel bestehen lassen will?

Oder wenn ich Merkzettel und offene Warenkörbe älter als z.B. 2012 löschen will?

Betrifft dies beide Tabellen oxuserbaskets und oxuserbasketitems?

SQL: DELETE oxuserbaskets, oxuserbasketitems FROM oxuserbaskets LEFT JOIN oxuserbasketitems ON oxuserbaskets.oxid = oxuserbasketitems.oxbasketid where DATE(oxuserbaskets.oxtimestamp) <= '2011-12-31' AND oxuserbaskets.oxtitle = "savedbasket"

Achtung, die Formatierung leidet ein wenig.

@rubbercut
Vielen Dank für die schnelle Antwort.

Bevor ich das laufen lasse:
müsste es nicht heißen <= 2011-12-31?

d.h. es bleiben die Merkzettel bestehen und nur die offenen Warenkörbe, die älter als 2012 werden gelöscht, richtig?

Ja, ich habe dann wohl “älter” mit “größer” assoziiert. Habs angepasst.
Wie immer gilt: Daten vorher sichern.

Wie muss den die Formatierung der SQL Anweisung geändert werden?
Sorry - ich bin nicht fit in diesem Thema…

Es erscheint:

"unerwartetes Zeichen. (bei ,)

DELETE oxuserbaskets, oxuserbasketitems FROM oxuserbaskets LEFT
JOIN oxuserbasketitems ON oxuserbaskets.oxid =
oxuserbasketitems.oxbasketid where DATE(oxuserbaskets.oxtimestamp) <= ‘2011-12-31’ AND oxuserbaskets.oxtitle = ‘savedbasket’

DELETE oxuserbaskets, oxuserbasketitems FROM oxuserbaskets LEFT
JOIN oxuserbasketitems ON oxuserbaskets.oxid =
oxuserbasketitems.oxbasketid where DATE(oxuserbaskets.oxtimestamp) <= “2011-12-31” AND oxuserbaskets.oxtitle = “savedbasket”

SQL Anweisung beinhaltet immer noch einen Fehler. Sorry - ohne Hilfe komme ich nicht weiter.

unerwartetes Zeichen. (bei ,)

Hier fehlt mir definitiv das Fachwissen.

@rubbercut - sorry und vielen Dank für die Hilfe.

Hier musst du definitiv beim Kopieren von Anweisungen aufpassen. Hochkomma und Anführungszeichen werden je nach Browser beim Kopieren anders übernommen als dargestellt.

OK - aber das Problem liegt in der ersten Zeile:
DELETE oxuserbaskets, oxuserbasketitems FROM oxuserbaskets LEFT

Fehlerausgabe:
3 Fehler wurden während der Analyse gefunden.

Unerwartetes Zeichen. (near “oxuserbaskets” at position 7)
Unerwartetes Zeichen. (near “,” at position 20)
Unerwartetes Zeichen. (near “oxuserbasketitems” at position 22)

Womit arbeitest Du denn?

phpMyAdmin

Die SQL-Statements sind syntaktisch korrekt, habs grade probiert.

Man muss allerdings Sonderzeichen, insbesondere die Hochkommas, manuell ersetzen, eventuell auch Leerzeichen.

Am besten die Statements in einen Texteditor kopieren und dort editieren oder von hier kopieren:

DELETE oxuserbaskets, oxuserbasketitems FROM oxuserbaskets LEFT
JOIN oxuserbasketitems ON oxuserbaskets.oxid =
oxuserbasketitems.oxbasketid where DATE(oxuserbaskets.oxtimestamp) <= '2011-12-31' AND oxuserbaskets.oxtitle = 'savedbasket';

DELETE oxuserbaskets, oxuserbasketitems FROM oxuserbaskets LEFT
JOIN oxuserbasketitems ON oxuserbaskets.oxid =
oxuserbasketitems.oxbasketid where DATE(oxuserbaskets.oxtimestamp) <= '2011-12-31' AND oxuserbaskets.oxtitle = 'savedbasket';

@m431342
@rubbercut

Vielen Dank euch zwei!
Hat nun wunderbar funktioniert.