Opdatering af siden sender oplysningerne igen!

Tags:    php

Jeg har en gæstebog som jeg har skrevet, men hver gang siden opdateres sendes oplysningerne igen til databsen og pludselig ligger der 10 stk ens oplysninger med forskellig autoID.

Jeg har allerede sagt at den kun skal sende til databasen hvis strlen > 0.

$name = $_POST["name_txt"];
$name_len = strlen($name);

IF ($name_len > 0)
{
INSERT INTO.....
}

Det virker også fint nok, men når siden opdateres sendes oplysningerne igen..

Help please!

Mvh
Simon Mortensen




3 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Det er ganske enkelt sådan det fungerer. Opdatering af en side, der sender et _POST signal, sender _POST signalet en gang til. Det er der ikke noget at gøre ved.



Normalt løser man det ved at have en seperat side til at behandle data fra $_POST, derefter bliver man så videresendt til en tredje side hvor der så står at man dataene er blevet behandlet.

Så det fungerer f.eks. sådan her:


a.php - her indtaster man data i formen
<form method="POST" action="b.php"> formen går videre til b.php


b.php - her bliver dataen indsat i en database eller hvad man nu vil.
header("Location: a.php?datainserted=1") vi videresender brugeren tilbage til a.php


a.php - her tjekker man så om isset($_GET['datainserted']) og skriver "oplysningerne er ændret" eller hvad man nu vil.

Trykker man nu opdater vil der ikke ske noget fordi vi ikke længere er på siden b.php



Du kan evt bruge et script, der checker om informationer allerede er indsat i db? A la:

//skal ind i et while-loop hvis $db først skal hentes ned fra fx mysql
foreach($db as $key =>$value){
if($name_len>0&&$value==$name){
break;
}else{
INSERT INTO....
}
}

$name skal naturligvis være unik - eller er der fx kun info om én Thomas eller Henrik, der bliver gemt ... Men i princippet er der intet til hinder for at checke på samtlige variable, der bliver POST-et.



t