[GastForen Programmierung/Entwicklung PHP und MySQL Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

StefanB
Beiträge gesamt:

22. Okt 2004, 13:56
Beitrag # 1 von 8
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe eine PHP-Zielseite, auf die man per Submit-Button gelangt. Dort wird dann ein Datensatz mit INSERT eingetragen. Wenn ich nun den Browser-Refresh betätige, wird jedes Mal ein weiterer, nicht gewünschter Datenbankeintrag vorgenommen.

Wie kann man das verhindern? Ich habe es z.B. mit
<?
if(isset($formularvariable))//oder: if($formularvariable!="")
{
mysql_query("INSERT INTO usw...");
}
?>
versucht, aber das nützt nix, weil ja alle Variablen beim Refresh erhalten bleiben...

Danke, Stefan
X

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

Intermedia
Beiträge gesamt: 1287

22. Okt 2004, 14:27
Beitrag # 2 von 8
Beitrag ID: #117940
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

jetzt kommt es auf die Anwendung drauf an, aber du kannst eine Reloadsperre machen in dem du die IP oder die Sessionnummer mit zum Datensatz abspeicherst und vorher abfragst ob diese schon da ist.

Eine weitere Idee wäre vor dem Eintragen in die Datenbank abzufragen ob es den Datensatz schon gibt.

Gruß Sven


als Antwort auf: [#117931]

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

Pozor
Beiträge gesamt: 892

22. Okt 2004, 16:43
Beitrag # 3 von 8
Beitrag ID: #117994
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich hatte auch schon mal dieses Problem.
lösen lässt es sich relativ einfach:

erzeuge ein Datensatz beim laden der Seite mit dem submit button,
lese die id des leeren Eintrags heraus (last inserted id) und
füll damit ein hidden input feld in deinem formular.

danach kann der user unendlich viel mal den Submitbutton drücken,
es wird immer in den gleichen datensatz eingetragen (update).

Es gibt da das Problem, wenn jemand auf die submitseite geht ohne
wirklich daten zu senden hatt man ein leeren Eintrag.

Meine lösung zu diesem Problem:

in der Tabelle eine Spalte status (0= normal, 1= gelöscht, 2 =temporär)

mit diesem Ansatz kann auch gleich ein löschen rückgängig realisiert werden...

viel spass gruss StefanB
http://www.boelsterli.biz


als Antwort auf: [#117931]

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

StefanB
Beiträge gesamt:

22. Okt 2004, 17:25
Beitrag # 4 von 8
Beitrag ID: #118009
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, liebe Mitstreiter, für die Tipps!

Ich habe inzwischen auch eine Lösung, weiß aber nicht, ob sie so 'sauber' ist:

Ich gebe einfach unmittelbar vor dem INSERT-Befehl ein DELETE mit den gleichen Daten ein, und schon habe ich immer nur einen Datensatz, denn wo vorher nix war, kann mySQL ja auch nichts löschen. Wenn es aber schon existiert, dann weg damit und neu eingetragen.

Oder ist das 'unfein'?

Das ginge natürlich eleganter mit UPDATE, aber wenn vorher kein Eintrag existiert, hängt man wieder am Fliegenfänger...

Danke jedenfalls, Stefan


als Antwort auf: [#117931]

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

Intermedia
Beiträge gesamt: 1287

22. Okt 2004, 18:09
Beitrag # 5 von 8
Beitrag ID: #118021
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

na ja, zu funktionieren scheint es.;-) Glaube so elegant ist es nicht.
Wenn du ein Autoincrement Feld hast wird jedesmal der Datensatz
gelöscht und beim Neueintrag ein neuer mit einem neuen Wert erzeugt.
Das Feld mit dieser Nummer erhöht sich ständig.

Gruß Sven

P.S. oesi50 mal fragen, er kann sehr gute Tips geben


als Antwort auf: [#117931]

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

Miro Dietiker
Beiträge gesamt: 699

23. Okt 2004, 00:13
Beitrag # 6 von 8
Beitrag ID: #118095
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Angenommen du hast einen Verweis auf einen Eintrag (natürlich auf
die ID) so wirst du diesen verlieren!
Die ID wird damit gelöscht und eine neue erstellt.
BSP: Während dem speichern wird irgendein Bezugsdatensatz auch
generiert (Log, ...)
Dadurch hängst du diese ab und machst es nichtmehr nachvollziehbar!

Solche Probleme scheinst du aber nicht zu haben?

GrEeZ: Miro Dietiker


als Antwort auf: [#117931]

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

randy
Beiträge gesamt: 436

23. Okt 2004, 11:51
Beitrag # 7 von 8
Beitrag ID: #118119
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
was hälst du denn von einer weiterleitung?
sprich seite a, hat formular, lenkt auf b, und b geht bei erfolgt auf c oder zurück zu a (mit fehlermeldung über session variable), machbar über header("location

gruss randy
<adobe promotor>


als Antwort auf: [#117931]

Wie kann ich einen wiederholten Datenbankeintrag bei Refresh verhindern?

StefanB
Beiträge gesamt:

25. Okt 2004, 15:56
Beitrag # 8 von 8
Beitrag ID: #118478
Bewertung:
(4090 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Tipps!

Ich habe es mit der von randy vorgeschlagenen Weiterleitung gelöst - das schien mir am einfachsten und elegantesten.

Viele Grüße, Stefan


als Antwort auf: [#117931]
X