erneutes Senden der POST-Data nach Reload
MarkX
- programmiertechnik
Guten morgen allerseits!
Ich habe folgendes Problem (möglichst kurz erklärt):
Im mittleren Frame können Produkte ausgewählt werden. Preise und Artikel-Info werden per Formular (POST) an das dritte Frame geschickt, wenn jemand einen Artikel in den Warenkorb legen will. Dieses Frame realisiert den Datenbankeintrag (Access) und die Anzeige wieviele Artikel sich zu welchem Gesamtpreis im Warenkorb befinden.
Problem: legt jemand einen Artikel in den Warenkorb und drückt dann den Reload-Button, dann wird der Artikel ein weiteres mal hinzugefügt. Dieses Verhalten zeigen zumindest die Netscape-Browser, die die Post-Data dann nochmal senden.
Nun meine Frage: hat jemand eine clevere Idee, wie ich dies lösen könnte? Und nein: ich suche nicht nach einer Möglichkeit den Reload-Button zu deaktivieren! ;-) Ist mir klar, daß das nicht geht und das würde ich auch nicht wollen!
Ein Freund hatte folgenden Lösungsvorschlag: den Datenbankeintrag in einem Pop-Up-Fenster zu machen und das dritte Frame nur zum Anzeigen der Artikelmenge verwenden. Ich mag aber keine Pop-Up-Fenster! Gibt´s nicht noch eine andere Möglichkeit?
Ich hoffe irgendjemand konnte mir folgen!
Bis denne und laßt Euch alle Euren Kaffee schmecken!
MarkX.
Moin!
Nun meine Frage: hat jemand eine clevere Idee, wie ich dies lösen könnte? Und nein: ich suche nicht nach einer Möglichkeit den Reload-Button zu deaktivieren! ;-) Ist mir klar, daß das nicht geht und das würde ich auch nicht wollen!
Ein Freund hatte folgenden Lösungsvorschlag: den Datenbankeintrag in einem Pop-Up-Fenster zu machen und das dritte Frame nur zum Anzeigen der Artikelmenge verwenden. Ich mag aber keine Pop-Up-Fenster! Gibt´s nicht noch eine andere Möglichkeit?
Fast gut. Das Skript, welches die POST-Daten verarbeitet, darf selbst keine Seitenausgabe machen, sondern muß auf eine nächste Seite weiterleiten (Redirect). Dann wird beim Reload nur diese nächste Seite neu geladen - aber nichts gemacht.
Diese "nächste Seite" könnte den Erfolg oder Mißerfolg des POST-Verarbeitens durchaus per GET-Parameter übergeben bekommen und selbst per Skript realisiert sein.
Und außerdem erschlägst du dann auch die "Zurück"-Tastenproblematik, weil der Redirect keine echte eigene Seite ist. Das ist jedenfalls meine Erfahrung mit einigen Browsern (für alle kann ich natürlich nicht sprechen).
- Sven Rautenberg
Grüß Dich!
Das klingt sehr gut! Danke für die Hilfe! Ich werde mich gleich an die Arbeit machen.
Bis denne...
MarkX.
Hi Sven!
Danke nochmal! Das Problem hat sich mit der von Dir beschriebenen Vorgehensweise lösen lassen. Leider hab ich das "Zurück-Button-Problem" dabei noch nicht erschlagen, wie Du vermutet hattest. Aber ich will nicht MarkX heißen, wenn ich das nicht schaffe... :-)
Bis denne...
MarkX.
Guten morgen allerseits!
Guten Morgen,
es gibt sicherlich mehrere Lösungen:
mir fallen spontan zwei ein, allerdings sind es nicht gerade die ergonomischsten (wird das so geschrieben?)
1. Überprüfe vor jedem DB-Eintrag (ich nehme mal an DU liest die Sachen aus ner DB aus?) ob die gleichen Daten schon drin stehen und füge sie dann eben nicht hinzu
2. speichere die Postdaten in ne session und überprüfe dort, ob die gleichen Daten schon mal angekommen sind!
3. oder aber (jetzt sind es schon 3, naja 2,5 ;)) weise der Postvariable einen Leerstring zu nach jedem DB-Eintrag (oder so was wie unset oder was weiss ich was da geht) und frage halt vor jedem DB-Eintrag ab, ob die Postvariable überhaupt gesetzt bzw. nicht leer ist. Ist glaube ich sogar die beste Vraiante, weil DU da die DB nicht noch mal bemühen musst
Bis denne und laßt Euch alle Euren Kaffee schmecken!
Kaffee bähh ich will lieber Tee ;) aber wer macht ihn mir?
MarkX.
winke winke
sagt: Romy
Guten morgen allerseits!
Guten Morgen,
ich denke, der Vorschlag von Sven ist natürlich der Beste, DB-Einträge sollten immer in einem eigenen Script, welches keine Ausgaben macht passieren, dass ich da nicht gleich draufgekommen bin!
eigentlich mach ich es ja selbst so!
:)
MarkX.
winke winke
sagt: Romy
mir fallen spontan zwei ein, allerdings sind es nicht gerade die ergonomischsten (wird das so geschrieben?) Ja, schon richtig! :-)
- Überprüfe vor jedem DB-Eintrag (ich nehme mal an DU liest die Sachen aus ner DB aus?) ob die gleichen Daten schon drin stehen und füge sie dann eben nicht hinzu
Nicht gut. Ich kann den Leuten doch nicht verbieten den selben Artikel nochmal in der Warenkorb zu legen. In diesem Fall zähle ich nämlich der Menge eins dazu.
- speichere die Postdaten in ne session und überprüfe dort, ob die gleichen Daten schon mal angekommen sind!
Auch nicht gut. Ich will eh keine Sessions. Ich will Cookies nicht voraussetzen.
- oder aber (jetzt sind es schon 3, naja 2,5 ;)) weise der Postvariable einen Leerstring zu nach jedem DB-Eintrag (oder so was wie unset oder was weiss ich was da geht) und frage halt vor jedem DB-Eintrag ab, ob die Postvariable überhaupt gesetzt bzw. nicht leer ist. Ist glaube ich sogar die beste Vraiante, weil DU da die DB nicht noch mal bemühen musst
Klingt erstmal vielversprechend. Nur: funktioniert das auch? Ich denke nein. Die Postvariable wird doch dann mit dem selben Wert nochmal gesendet, egal ob ich die vorher auf "leer" gesetzt habe, oder? Das dritte Frame weiß doch in diesem Fall nicht, ob es ein Reload war oder ob der Kunde die Ware einfach nochmal angeklickt hat!?
Kaffee bähh ich will lieber Tee ;) aber wer macht ihn mir?
Das kannste selber! Ich erklär´s Dir: Wasser heiß machen, Teebeutel in die Tasse, Wasser drüber, 5 Minuten warten, Teebeutel wieder raus, je nach Geschmack Zucker rein oder sogar Milch wie die Engländer! Jetzt erzähl mir nicht ihr habt keinen Wasserkocher in der Firma?! ;-)
winke winke
sagt: Romy
zurück winke winke!
MarkX.
ist ja schon gut, hab mich ja schon bekannt, es sind nicht immer die einfachsten Wege, die zuerst meinen Kopf überfluten
Warum auch einfach, wenn es umständlich geht :)
Das kannste selber! Ich erklär´s Dir: Wasser heiß machen,
kann ich nicht, da mache ich mir ja die kleinen Fingerchen dreckig
wo ist mein Diener? *SCNR*
Jetzt erzähl mir nicht ihr habt keinen Wasserkocher in der Firma?! ;-)
nun ja...so gesehen...bzw. nicht gesehen...wo ist er nur
hach...
ciaotschüss