petterg Skrevet 1. september 2003 Del Skrevet 1. september 2003 Finnes det noen enkle triks for å ungå at en mysql insert blir utført på nytt dersom brukeren reloader siden? i eksempelet under vill jeg at mysql select skal utføres ved reload, mens mysql insert ikke skal det. Hvordan løses dette? <?php mysql_connect(...); .... if($skjema_fylt_ut) { mysql_query("INSERT INTO ...."); } $result = mysql_query("SELECT * FROM ...."); while($row = mysql_fetch_array($result)) { print .....; } ?> <FORM .... action=$PHP_SELF...> .... </FORM> Takker, -pg Lenke til kommentar
smas190 Skrevet 1. september 2003 Del Skrevet 1. september 2003 kan jo fixe noen kaker.. selv om det ikke er det idielle.. skal fyren bare fylle ut engang.. så kan du jo registrere i databasen att fyren allerede har registrert.. og at den ikke registreres igjen.. eller så kan du jo bare fixe ett nytt script.. som du går til hvis du skal inserte første gang.. også tilbake til ett annet script som kjører listingen.. ville egentlig dele opp scriptet som jeg sa på slutten.. er det enkleste, kan du tenke på andre ting Lenke til kommentar
petterg Skrevet 2. september 2003 Forfatter Del Skrevet 2. september 2003 Har ikke lyst til å bruke kaker. Jeg ser ikke hvorden oppdeling i flere script kan gjøre noe nyttig. (Godt mulig er en god idee, men jeg skjønte den ikke.) Etter utfylling skal FORM'et holde på verdiene, slik at hvis personen (av en eller annen grunn) skulle klikke submit igjen, skal det bli dobbel posting. (Hvis han trykker reload skal det fortsatt ikke bli dobbelposting.) Kanskje man kan ha et javascript generert random tall i et hidden felt i form'et, og for hver insert setter man også inn dette random tallet til en kontroll tabel. Hvis dette random tallet allerede ligger i kontroll tabellen avbrytes insert funksjonen. Kontroll tabellen må da nullstilles regelmessig, på et eller annet vis. -pg Lenke til kommentar
BlueEAGLE Skrevet 3. september 2003 Del Skrevet 3. september 2003 Det gjør du rimelig enkelt med et slikt oppsett: Skjema.html <form method="POST" action="behandling.php"> <input type="text" name="SkrivHer"/> <input type="text" name="OgHer"/> <input type="submit" name="Send" value="Trykk her!"> </form> behandling.php <?php //først kan det være en ide å validere inputen fra formen før du bygger querien, men det er ikke det som er temaet her. $query="INSERT INTO tabell VALUES('$_POST['SkrivHer']', '$_POST['OgHer']');"; $mysql_query($query) or header("location=Feil.php"); header("location=Fullført.html"); ?> Du kan også poste en <input type="hidden" value="KildeSide"/> og bruke den til header("location=$_POST['KildeSide']"); Håper dette hjelper. Lenke til kommentar
petterg Skrevet 4. september 2003 Forfatter Del Skrevet 4. september 2003 Veldig god idee å bruke header("location:...") Mange Takk! -pg Lenke til kommentar
BlueEAGLE Skrevet 4. september 2003 Del Skrevet 4. september 2003 skriv gjerne noen ord i gjesteboken min. Lenke til kommentar
Sugx Skrevet 7. september 2003 Del Skrevet 7. september 2003 jeg har hatt enkelte problemer med å bruke location, hvis man har action f.eks script/post.php og setter location til ../index.php. Så funker ikke dette i IE, men i Opera funker det knall. Lett måte å fikse det på er å sette location til komplett url. Om noen støter borti det samme problemet ;D Lenke til kommentar
_W_ Skrevet 9. september 2003 Del Skrevet 9. september 2003 Hva med å bare ikke godta like elementer? behandling.php <?php $query="INSERT INTO tabell VALUES('$_POST['SkrivHer']', '$_POST['OgHer']','md5($_POST['SkrivHer'].$_POST['OgHer'])');"; $mysql_query($query) or header("location=Feil.php"); header("location=Fullført.html"); ?> hvor den tredje verdien er unik i tabellen Hvis det gir mer mening i databasen kan du bare ha unike elementer der (istedet for å legge til et felt for md5), eventuelt ta md5 av bare noen av verdiene. Alle tingene vil hindre at reload legger inn dobbelt, og er riktig validering (Tenk slik: er det ingen tilfeller hvor brukeren faktisk VIL reloade og legge inn likt dobbelt?) i stedet for mekking som kanskje ikke fungerer i alle nettlesere. Lenke til kommentar
petterg Skrevet 11. september 2003 Forfatter Del Skrevet 11. september 2003 Nøkkelen i tabellen er en auto_increment kolonne. Det er den eneste kolonnen som kan være unik. Tenk deg hvor mange som kan hete Ole Hansen. Man kan ikke nekte Ole Hansen å registrere seg hvis det finnes en Ole Hansen fra før. Da må man enten registrere og lagre så mye informasjon om personene at den blir unik. Det kan ikke gjøres i dette tilfellet. -pg Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå