DragonHunter Geschrieben 11. April 2002 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.
thomee Geschrieben 11. April 2002 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
DragonHunter Geschrieben 11. April 2002 Autor 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 ?
thomee Geschrieben 11. April 2002 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
lapso Geschrieben 11. April 2002 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden