|
hombo13
Level 1 (86 %)
Posts: 5 |
ID #209
Schon seit über einem 1 Tag beschäftige ich mich mit dem Shop. Das kann doch nicht so schwer sein, ist es aber. Nachdem endlich - mangels Anleitung - der Shop installiert war, hat die Darstellung und die Bestellung auch geklappt. Nach dem Absenden der Bestellung hätte der potentielle Kunde vielleicht noch einen Wunsch. Er geht zurück zum Shop und bestellt sich gleich noch ein ähnliches oder gleiches Produkt. Im Warenkorb angelangt, klappt alles noch bestens. Jetzt gehts zur Bezahlung/Senden Formular -- und jetzt kommt eben das Problem: da ist noch die Bestellung vom letzten Mal drinn. Das ist falsch.
Nach etwas Forschen in den Tiefen des Codes habe ich die Session-Time-Out runter auf 10 Minuten gesetzt. Die Daten sollen ja nicht 24 Std. in der DB lagern, man muss doch weiter bestellen können. Gut - also habe im File class.tx_mhsimpleshop_pi1.php die Funktion function displayBasket($pid) gefunden und dort den Wert von -3600 (1 Stunde) auf -600 gedreht. Nach erfolgreichem Hundespaziergang hätte ich erwartet, dass alles geleert ist. Ist aber nicht.
Ich hoffe sehr, dass man das in Griff bekommen kann, ansonsten müsste man dem Simple Shop das Prädikat unbrauchbar anhängen.
Noch eine Frage: Was muss man eigentlich im Feld session_id im Datensatz Warenkorb eintragen? Ich habe hier mal eine 1 gesetzt - spielt das eine Rolle? Und Warum sind im Datensatz Warenkorb nochmals die Preisfelder drinnen? Die Preise gibt man doch beim Produkt ein?
Was muss ich im Warenkorb einsetzen? Und warum kommt immer 10 wenn man im Feld Stck. 1 eingibt? Ich schnalls nicht...
Grüsse Chris
This Post was edited 3 times so far, last change on 15. November 09
|
|
Martin Hesse
Level 9 (55 %)
Posts: 150 |
ID #210
Hallo hombo13,
mir gefällt dein leichter \\\"Neben\\\"-Ton nicht. Wie du vielleicht bemerkt hast, gibt es den Shop (noch) nicht offiziell, deswegen gibt es auch (noch) keine Anleitung, weil ich bisher einfach keine Zeit dafür hatte. Klingt logisch, oder? Ich spare mit weitere Kommentare darüber.
Bei mir war die Bestellung eben auch noch drinne, nachdem ich aber den Cache geleert hatte, war sie weg (Schonmal probiert die Seite nicht cachen zu lassen?)
Die Variabel $validTime ist nur für den Warenkorb verantwortlich. Sie sagt aus, wie lange ein Produkt im Warenkorb gespeichert werden soll.
Im übrigen, alle Benutzer werden über die IP ermittelt, d.h die Bestellungen werden über die IP zugeordnet.
Warenkorb != Kasse
Normal ist es ja so, dass man erst über den Warenkorb zur Kasse kommt. Im Feldversuch hatte das soweit auch immer geklappt.
Du kannst natürlich aber auch die $validTime Variable in der Kasse einbauen. Einfach die Var mit oben anhängen und an das Query hängen:
Language: PHP function displayCheckout($pid)
{
#$session = $GLOBALS[\\\'TSFE\\\']->fe_user->id;
$session = $_SERVER[\\\'REMOTE_ADDR\\\'];
$piVar_formId = t3lib_div::_GP(\\\'formId\\\');
$piVar_simpleshop = t3lib_div::_GP(\\\'tx_mhsimpleshop\\\');
$validTime = time()-3600;
$random = rand(1000,9999);
$order_number = date(\\\'Y\\\', time()) . \\\'-\\\' . $random;
$res = $GLOBALS[\\\'TYPO3_DB\\\']->sql(TYPO3_db, \\\"
SELECT
b.tstamp, b.product, b.piece, b.value, b.tax, b.session_id, b.uid,
p.title as productTitle, p.description, p.category, p.picture,
c.title as catTitle
FROM
\\\" . $this->dbTable3 . \\\" b
JOIN \\\" . $this->dbTable2 . \\\" p ON b.product = p.uid
JOIN \\\" . $this->dbTable1 . \\\" c ON p.category = c.uid
WHERE
b.session_id = \\\'\\\" . $session . \\\"\\\'
AND
b.piece > 0
AND
b.tstamp > \\\" . $validTime
);
$res2 = $GLOBALS[\\\'TYPO3_DB\\\']->sql(TYPO3_db, \\\"
SELECT
b.tstamp, b.product, b.piece, b.value, b.tax, b.session_id, b.uid,
p.title as productTitle, p.description, p.category, p.picture,
c.title as catTitle
FROM
\\\" . $this->dbTable3 . \\\" b
JOIN \\\" . $this->dbTable2 . \\\" p ON b.product = p.uid
JOIN \\\" . $this->dbTable1 . \\\" c ON p.category = c.uid
WHERE
b.session_id = \\\'\\\" . $session . \\\"\\\'
AND
b.piece > 0
AND
b.tstamp > \\\" . $validTime
);
# ....
Sollte funktionieren.
Was muss man eigentlich im Feld session_id im Datensatz Warenkorb eintragen?
Du redest jetzt von der Datenbank-Ebene, oder? Ich kann mich nicht entsinnen, das es da ein Feld im FE für gibt. Dort wird die IP gespeichert von dem Benutzer
Warum sind im Datensatz Warenkorb nochmals die Preisfelder drinne?
Um uns ein erneute Abfrage mit der DB zu sparen, werden die Preise mit in den Warenkorb übertragen, sobald man ein Produkt in sein Warenkorb legt. Ja ich weiß, das hat Vor- und Nachteile, aber für den Kunden, wo ich diesen Shop gemacht hatte, war dies ausreichend. Man könnte natürlich noch ein Preis-Update einfügen, nachdem die Kasse noch einmal aufgerufen wird. Man kann aber auch dem Kunden den Preis zusichern für X Stunden (so lange wie die Waren halt im Warenkorb sind).
Was muss ich im Warenkorb einsetzen? Und warum kommt immer 10 wenn man im Feld Stck. 1 eingibt?
1. ??
2. Kann ich nicht reproduzieren. Bei meinem Test-System, wenn ich da bei Stückzahl 1 eingebe (was ja schon drinnen steht) und dann auf \\\"Warenkorb aktualisieren\\\" klicke, bleibt da 1 stehen. Auch wenn ich die Werte mal wechsel.
Hast du eventuell irgendwas in der Datenbank oder im Code verstellt?
/ Edit, vergess nicht die Slashes zu entfernen wenn du Copy & Paste machst. Hier scheint das Forum noch etwas Buggy zu sein ;-)
Die AGB müsstest du auch noch ändern, ganz oben steht noch eine Falsche Adresse drinne. Bitte ändern, möglichst bald - Danke.
Den Titel für die E-Mail an den Kunden findest du in Zeile 376
This Post was edited 1 times so far, last change on 13. November 09
|