Avatar billede western-amigo Nybegynder
25. juni 2005 - 12:21 Der er 7 kommentarer og
1 løsning

Problem med formular

Jeg er ved at lave en online community. Dertil skal der naturligvis være en side hvor der kan oprettes en bruger, den kalder jeg opretbruger.php. Når en besøgende prøver at oprette en bruger, men fx glemmer at indtaste fornavn, vises der en "fejlbesked". Problemet er bare at når der så trykkes "Back" i browseren, vises formularen ganske vist igen, dog er alt det førindtastede indhold væk. Derfor er mit spørgsmål, hvordan sørger jeg for at det data stadig er der?
Avatar billede Slettet bruger
25. juni 2005 - 12:32 #1
Det kan du angive ved hjælp af phpén.

I value angiver du så blot $_POST[feltnavn].

Eksempelvis:
<input type="text" name="brugernavn" value="<? echo $_POST["brugernavn"]; ?>">
Avatar billede western-amigo Nybegynder
25. juni 2005 - 12:48 #2
Det virker desværre ikke.
Avatar billede nielle Nybegynder
25. juni 2005 - 12:58 #3
Da et tryk på back-knappen udelukkende involvere klienten – uden et roundtrip om serveren – må en løsning nødvendigvis baseres på clientside kode (som JavaScript) samt en metode til at gemme oplysninger clientside (cookies):

1) Når formen submittes, gemmes oplysningerne fra formen i en cookie som så skrives til klienten.
2) Når brugren klikker på back-knappen, indlæser et JavaScript de gemte oplysninger fra cookien og udfylder felterne. Dette JavaScript trickkes af en onLoad() event placeret på body.taggen fo siden.

For eksempler på hvordan du læser cookies via java script:

http://www.jsmadeeasy.com/javascripts/Cookies/Number%20Of%20Visits/index.htm
Avatar billede roenving Novice
25. juni 2005 - 13:40 #4
Hvorfor er det overhovedet nødvendigt at trykke tilbage ?-)

1. Lav en foreløbig validering med javascript, så formularen slet ikke submittes, når de mere almindelige fejl findes ...

2. Hvis du så i dit php-script alligevel fanger fejl, som ikke er fanget af javascript-funktionerne, genskriver du formen, men indsætter fejlbeskeden, så brugeren bare skal rette fejlen før formularen submittes !-)
Avatar billede thb Nybegynder
25. juni 2005 - 14:55 #5
<?
if (isset($_POST["opret"])) {
  $bruger = $_POST["brugernavn"];

  if ($bruger == "") $error[] = "Du skal skrive et brugernavn."

  if (count($error) == 0) {
  $sql = mysql_query("INSERT.... ");
  }

}
else {
  $bruger = "";
}

if (count($error) > 0) {
  print "<div style=\"color:#FF0000;\">";
  print explode("<br>", $error);
  print "</div>";
}
?>

<form action="?" method="post">
<input type="text" name="brugernavn" value="<?=$bruger?>">
<input type="submit" name="opret" value="Opret">
</form>

Det er meget hurtigt skrevet, men sådan gør jeg..

Thomas
Avatar billede nielle Nybegynder
01. juli 2005 - 19:22 #6
Hvad med lidt respons her?
Avatar billede nielle Nybegynder
11. juli 2005 - 20:03 #7
Jeg håber at du ligger et eller andet solrigt sted og nyder noget ferie. ;^)
Avatar billede western-amigo Nybegynder
21. juli 2005 - 11:07 #8
Jeg har nu fundet frem til at nogle apache servere automatisk løser mit problem, i mens den host jeg tidligere brugte åbenbart havde konfigureret apache anderledes. Hvad i konfigurationen der helt præcist var ændret ved jeg desværre ikke, men da jeg nu automatisk får løst mit problem ved alle formularer, og ikke skal sidde og kode JS ved hver eneste form, må man nok sige at det klart er den smarteste løsning...

P.S. Jeg undskylder ulejligheden når nu jeg selv fandt en løsning.
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