Avatar billede learner Praktikant
09. august 2004 - 06:53 Der er 13 kommentarer og
1 løsning

hvordan gør man sådan at der ikke bliver sendt igen v opdater

Jeg har et par steder hvor man går igennem nogle sider for at slutte op med at sende til mysql. problemet er hvis man går tilbage til siden eller trykker opdater, så sender den igen til databasen, hvilket betyder der kommer rod i tingene. hvad kan jeg gøre for at hindre dette?
Avatar billede michael_stim Ekspert
09. august 2004 - 07:37 #1
Kan du ikke sätte en knap ind på sidste side? og så: if(isset($_POST['submit'])){...}
Avatar billede slott_hansen Nybegynder
09. august 2004 - 08:46 #2
Der er meget man kan gøre.

her er 2 forslag.

1. Lav databasen med unique keys, så den ikke acceptere data med dubletter (meget nemt)
2. Sæt en session variabel $_SESSION['<formname>IsPosted'] = true; og så kan du tjekke for om den er sat inden du skriver til db'en.
Avatar billede erikjacobsen Ekspert
09. august 2004 - 09:13 #3
3. Når din side har sat ind i databasen efter en POST laver du en redirect til
samme side (eller en anden) og viser brugeren resultatet. Så vil en "opdater" ikke
gensende POST data.
Avatar billede learner Praktikant
09. august 2004 - 09:24 #4
erikjacobsen: dit foreslag lyder mest brugbart i mit tilfælde :-)

Men hvad nu hvis brugeren bruger tilbage-knappen så?
Avatar billede erikjacobsen Ekspert
09. august 2004 - 09:27 #5
Så skal han jo selv trykke på knappen for at sende igen. Du kan bruge 1. som svarer
til det eksperten.dk bruger ("vis kilde")
Avatar billede learner Praktikant
09. august 2004 - 09:34 #6
Jeg troede man måske kunne disable opdater-funktionen på en måde eller disable tilbage-funktionen på en måde???
Avatar billede learner Praktikant
09. august 2004 - 09:35 #7
eller sætte dem til at gøre noget andet end normalt...

såsom hvis man trykker tilbage, så ryger man 2 tilbage

og hvis man trykker opdater, så ryger den ud eller et andet sted hen
Avatar billede erikjacobsen Ekspert
09. august 2004 - 09:46 #8
Prøv bare 3. og se hvor slemt det er i dit tilfælde, og brug 1. hvis du synes.
Avatar billede learner Praktikant
09. august 2004 - 12:40 #9
ok, hvor finder jeg noget om:
Lav databasen med unique keys, så den ikke acceptere data med dubletter (meget nemt)

:-)
Avatar billede learner Praktikant
09. august 2004 - 12:45 #10
feks
Der sættes brugerid og  countryid ind i entabel og hver brugerid må gerne vælge flere countryid'er, men de må ikke gentages i fuldstændig samme værdi!

entabel:
brugerid  3  3  4  5  8
countryid 1  2  6  1  1
Avatar billede learner Praktikant
09. august 2004 - 12:54 #11
og hvad sker der hvis man så forsøger alligevel? melder den fejl eller hvad?
Avatar billede detox Nybegynder
09. august 2004 - 12:56 #12
Du kan lave en kombineret unique key på de to felter:

ALTER TABLE `entabel` ADD UNIQUE `unik`(`brugerid` , `countryid`)
Avatar billede detox Nybegynder
09. august 2004 - 12:59 #13
Du får kun fejlmelding, hvis du ønsker det. Fx med: or die(mysql_error));
Avatar billede learner Praktikant
09. august 2004 - 13:05 #14
okay, jeg tror jeg vælger at sætte en session med et id, som den så tjekker om eksisterer inden den gemmer i tabellerne. Det er nok det smarteste i mit tilfælde...

Takker allesammen! :o)

point'ene går til slott_hansen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester