[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:
(3837 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:
(3837 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:
(3837 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:
(3837 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:
(3837 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:
(3837 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:
(3837 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:
(3837 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

Aktuell

Web / SEO / Blockchain / Betriebssystem
unsplash_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022