DragonHunter Geschrieben 11. April 2002 Teilen Geschrieben 11. April 2002 Hallo, wie kann ich eine Textformvariable wieder resetet, also praktisch auf nichts zurückgesetzt ? Habe eine Funktion mit der Form drinne: wenn ich den Submit Button gedrückt hab, möchte ich, das die Variable des Text Feldes (in diesem Falle $kategorie) wieder auf nichts gesetzt wird... hab es schon mit unset($kategorie); oder $kategorie = "" versucht. Wenn ich jetzt einen Wert eingegeben habe und auf abschicken gedrückt hab, wird der Wert $Kategorie in die DB eingetragen. Wenn ich jetzt aber den Browser aktualisere, schreibt er den gleichen Wert nocheinmal in die DB, da ich die Variable nicht unset'ten kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thomee Geschrieben 11. April 2002 Teilen Geschrieben 11. April 2002 Hallo, ich glaube, da dein Problem ist einfach ein logischer Fehler: Bei jedem Senden eines Formulares an ein Skript wird dieses neu gestartet und das Formular verarbeitet. Ich vermute, der Browser hat die Formulardaten noch gespeichert, und wenn du aktualisieren drückst, wird das Formular wieder gesendet und der Datensatz geschrieben. Es gibt meiner Meinung nach zwei Lösungen. 1. Du machst nach Schreiben des Datensatzes einen redirect auf eine andere Seite: (header ("Location:$absoluteurl"); ) 2. Du überprüfst, ob genau dieser Datensatz vorher schon geschrieben wurde und schreibst ihn dann einfach nicht mehr. ich hoffe das korrekt durchblickt zu haben. ciao, Thomas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DragonHunter Geschrieben 11. April 2002 Autor Teilen Geschrieben 11. April 2002 doch, du hast es genau richtig verstanden ich glaube ich mache einen Redirect auf eine andere Seite, oder kennst du einen Sql Befehl wo ich schauen kann ob genau der Datensatz schon einmal eingefügt wurde ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
thomee Geschrieben 11. April 2002 Teilen Geschrieben 11. April 2002 Nun ja, spontan würd mir eine Möglichkeit einfallen: Du legst im Formular ein "Hidden"-Field an, mit einer eindeutigen ID, die du per skript für jedes Formular einträgst: <input type="hidden" name="id" value="34kdkjfie34"> der "value" muss für jedes Formular neu erzeugt werden. Diese ID kannst du dann gleich als primary key für die Tabelle nehmen. Oder du legst ein zusätzliches Feld in der Tabelle an. Wenn du jetzt auf aktualisieren klickst dann ist der Wert für das Feld ID derselbe wie beim ersten Aufruf. Die Werte für alle anderen Felder sind ja auch dieselben geblieben. Jetzt mußt du nur noch prüfen, ob es schon einen Eintrag mit ID gibt. Wenn ja, dann schreib ihn nicht mehr. Falls du ID als Primary Key benutzt, schlägst du zwei Fliegen mit einer Klappe. In diesem Fall wird der Eintrag nie 2 mal geschrieben, da kannst du dir sogar den select sparen. Cu, Thomas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lapso Geschrieben 11. April 2002 Teilen Geschrieben 11. April 2002 Original geschrieben von DragonHunter ich glaube ich mache einen Redirect auf eine andere Seite, oder kennst du einen Sql Befehl wo ich schauen kann ob genau der Datensatz schon einmal eingefügt wurde? Wenn Du abfragen willst, ob ein Datensatz mit den Daten des Requests bereits existiert, brauchst du doch nur ein SELECT mit den Daten gegen die DB zu prügeln, schon weißt du´s. Ist aber nicht so sinnvoll. Am allersichersten ist es natürlich, dem Formular eine ID zu geben, die nur einmal verwendet werden kann und danch ungültig wird. Das ist aber auch nicht mehr ganz so simpel. Gruss Matze Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.