Datenbankeintrag bei Refresh der Seite nicht neu durchführen
BxBender
- datenbank
0 David Tibbe
Hallo.
Ich habe da ein Problem mit PHP und MYSQL.
Wenn ich in einer PHP-Datei auf die MQSQL-Datenbank zugreife, Werte auslesen lasse, einige kleine Berechnungen durchführen lasse, und dann einige dieser Werte wieder neu abspeichern möchte (Werte ersetzen), gibt es Probleme, wenn man nach dem Aufruf dieser PHP-Seite im Browser auf Refresh klickt.
Der soeben neu abgespeicherte Wert wird erneut aus der Datenbank herausgelesen und nochmals neu bearbeitet.
Wenn man dieses mehrmals wiederholt, kann man so einige der eingetragenen Werte bis ins unermessliche steigern.
MEINE FRAGE: Besteht da eine Möglichkeit, der Software mitzuteilen, dass nach einem Refresh der Seite im Browser kein neues Datenbankupdate durchgeführt werden soll?
Dieses sollte vielleicht auch nur auf einen bestimmten Bereich der PHP-Seite einsetzbar sein.
Bei meiner Sache handelt es sich um ein Rollenspielsystem auf meinem Board. Da werden die Statuswerte des Charakters auf einer Seite abgerufen. Bei einem Levelaufstieg soll der Rechner automatisch die Grundwerte des Helden vornehmen. Das geht auch, nur drückt man dann noch auf refresh, dann verdoppeln sich die hinzugewonnenen Statuswerte. Son Mist.
Bitte helft mir.
Danke
Gruß
BxBender
(http://www.bxbender.space-4you.com/wbboard/portal.php)
(alexandermertz@web.de)
Hier ein Auszug vom Code (sind sonst ein paar Seiten):
$levelmodifier = $db_zugriff->query_first("SELECT hpmodifier, mamodifier, ppmodifier (<--- die Multiplikatoren für den Aufstieg der Statuswerte ---) FROM battle_options");
$opponentlevel = getlevel($oppstats[xp], $battleopt[exprate]);
$opponentmaxhp = $levelmodifier[hpmodifier] * $opponentlevel;
$opponentmaxma = $levelmodifier[mamodifier] * $opponentlevel;
$opponentmaxpp = $levelmodifier[ppmodifier] * $opponentlevel;
$opponentlevelmaxhp = $opponentmaxhp + $oppstats[maxhp] (<--- die aktuellen Statuswerte des Helden ---) ;
$opponentlevelmaxma = $opponentmaxma + $oppstats[maxma];
$opponentlevelmaxpp = $opponentmaxpp + $oppstats[maxpp];
$db_zugriff->query("UPDATE bb".$n."_user_table SET maxhp='$opponentlevelmaxhp', maxma='$opponentlevelmaxma', maxpp='$opponentlevelmaxpp' (<--- die Werte, die vorher ausgelesen wurden und nun nach Durchkalkulierung der Levelbonuses überschrieben werden ---) WHERE userid='$battle[opponentid]'");
Hallo Alexander,
hier sind zwei Links für dich in die immer hilfreichen FAQ (http://dclp-faq.de):
11.19. Wie verhindere ich mehrfaches Absenden eines Formulars?
http://www.dclp-faq.de/q/q-formular-mehrfach.html
29.17. Wie kann ich Reloads durch den User erkennen und verhindern?
http://www.dclp-faq.de/q/q-phplib-reloads.html
Grüße
David
Hiho Alexander,
schließe mich David an.
*lol* ^^
MfG
Hiho Alexander,
schließe mich David an.
*lol* ^^
MfG
Hi.
Falls es nur so geht: kann mir da jemand mit dem Anfang/Aufbau ein wenig helfen (vorspinnen) ? Ich bin noch Anfänger. Editieren klappt bei mir schon (manchmal) ganz gut. ;-).
Hallo,
Falls es nur so geht: kann mir da jemand mit dem Anfang/Aufbau ein wenig helfen (vorspinnen) ? Ich bin noch Anfänger. Editieren klappt bei mir schon (manchmal) ganz gut. ;-).
Die Quintessenz der Aussage ist meines Erachtens das Du nach einem erfolgreichen Update der Daten (wie das geschieht ist unerheblich) per header()-Funktion auf eine andere Seite weiterleitest. Siehe auch http://de3.php.net/manual/de/function.header.php falls Du noch nie was mit header() gemacht hast...
Gruss AndreD
Hallo Alexander,
hier sind zwei Links für dich in die immer hilfreichen FAQ (http://dclp-faq.de):
11.19. Wie verhindere ich mehrfaches Absenden eines Formulars?
http://www.dclp-faq.de/q/q-formular-mehrfach.html29.17. Wie kann ich Reloads durch den User erkennen und verhindern?
http://www.dclp-faq.de/q/q-phplib-reloads.htmlGrüße
David
Hi.
Hmmm, ich glaube, dass ist noch nicht ganz das, was ich suche.
Die Stats werden bei mir automatisch upgedatet, nicht erst über ein Formular. Trotzdem danke, für den Ansatz. Gibts da noch ne Alternative, oder geht das nur so? Muss ich das mit dem Updaten anders aufbauen?