Avatar billede kroning Nybegynder
28. januar 2012 - 19:24 Der er 8 kommentarer og
1 løsning

Husk indtastninger i formular

Jeg har en formular som brugeren indtaster i, efter tryk på send knappen valideres brugerens indtastninger i php koden og hvis der er fejl returneres til formularen men nu er alle brugerens indtastninger væk. Hvad er den letteste/bedste metode til at "huske" brugerens indtastninger.
Avatar billede olebole Juniormester
28. januar 2012 - 20:05 #1
<ole>

Det kommer anpå din struktur, men måske en cookie kan være en løsning(?)

/mvh
</bole>
Avatar billede olebole Juniormester
28. januar 2012 - 20:05 #2
Sorry ... jeg mente en session  =)
Avatar billede squazz Novice
28. januar 2012 - 20:10 #3
Der er to mulige løsninger.
1. Hvis brugeren sendes til samme side, med PHP validation i toppen af siden (før HTML):

Gem dine post data som variabler. Og sæt dem så ind som value i din HTML form inputs:

$var = $_POST[name];

<form method="POST" action="">
  <input name="name" value="<?= $var ?>">
</form>


2. Hvis validation sker på en anden side:
Kender du til brugen af sessions?

Jeg har valgt at indsætte alle de data jeg vil huske indsættes i sessions, som så loades som value i mine form felter.

$_SESSION[name] = $_POST[name];

<form method="POST" action="">
  <input name="name" value="<?= $_SESSION[name] ?>">
</form>

Hvis så der ikke er en fejl, cleares sessions:
<?php
session_unregister($_SESSION[name]);
unset($_SESSION[name]);
?>


Håber det kunne bruges, og ikke var for indviklet :)
Avatar billede olebole Juniormester
28. januar 2012 - 20:29 #4
@squazz: Jeg er bange for, din PHP-opsætning er tussegammel, hvis du kan få det til at virke. Og husk i øvrigt at bruge apostroffer i array kald. PHP kan (somregel) godt finde ud af det uden, men det er risikabelt og skidt kodeskik at undlade dem  =)

Syntaksen <?= $var ?> har ikke været muligt i en standard PHP-opsætning i adskillige år.

Sådan ser syntaksen ud for langt de fleste: <?php echo $var ?>
Avatar billede squazz Novice
29. januar 2012 - 02:32 #5
Hmm, jeg havde ellers fået at vide at det var en nemmere og mindre krævende metode at lave det på :) Og det virker nu også fint på min surftown server der kører PHP 5.3.
Men det er da taget til efterretning, og vil jeg da gøre fremover :)

Ang. apostroffer så har du nok ret :) Igen, vil jeg tage det op til overvejelse.
Avatar billede olebole Juniormester
30. januar 2012 - 17:02 #6
Sorry, det er heller ikke rigtigt, hvad jeg skrev. Det er stadig en mulighed at bruge i standardopsætninger, men bliver disabled på en del hoteller.

Årsagen er, at syntaksen somme tider laver ged. F.eks. kan den ikke umiddelbart bruges sammen med XML. Derfor blev den disabled mange steder, da XHTML så ud til at blive fremtidens standard.

Der er ikke forskel i performance, så i princippet kan det være ligemeget, hvilken syntaks man vælger. Personligt vælger jeg at fortsætte med den, der virker i alle situationer - og på alle hoteller. Der er ingen grund til at sætte vand over til problemer  =)
Avatar billede squazz Novice
30. januar 2012 - 17:05 #7
Nu er det ikke for at køre det offtopic og grave i det, men hvis der ikke er forskel på hastighed, må <= metoden vel være en smule hurtigere da der er færre byte der skal læses? ;)
Avatar billede squazz Novice
30. januar 2012 - 17:07 #8
Det glæder mig at se at du fik det til at virke kroning :)
Avatar billede olebole Juniormester
30. januar 2012 - 17:15 #9
Ja, indlæsningen af siden er uden tvivl 0,000000000000001 picosekund hurtigere med 600 udskrivninger i dokumentet - men der er ikke forskel i udførelsen af handlingen  =)
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