Zum Inhalt springen

Form


Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...