Avatar billede gulvflaesk Nybegynder
23. marts 2011 - 18:37 Der er 7 kommentarer og
1 løsning

Felter er tomme ved fejlbesked

Hej Eksperter,

Jeg har nogle tekstfelter jeg validerer på denne måde:

if($_POST[kategorinavn] == "") { header("Location: opretkategori.php?fejl=1"); die(); }
if($_POST[sortering] == "") { header("Location: opretkategori.php?fejl=2"); die();

Hvis man så ikke har udfyld 'sortering', og bliver sendt tilbage med fejlbesked - så er 'kategorinavn' også tomt og man skal starte forfra.

Hvordan kan jeg undgå dette?

De bedste hilsner,
Martin
Avatar billede ksoren Nybegynder
23. marts 2011 - 18:44 #1
Du kan f.eks. vælge at gemme data i en session. Så kan du hente dataene frem derfra.
Avatar billede apocs Nybegynder
23. marts 2011 - 18:45 #2
Send kategorien med fra forrige side så du sender videre sådan her:

if($_POST[sortering] == "") { header("Location: opretkategori.php?fejl=2&kategori=".$_POST['kategori']); die();
Avatar billede gulvflaesk Nybegynder
24. marts 2011 - 19:10 #3
Det virker umiddelbart ikke for mig?

Kan godt se at jeg gav udtryk for at der kun var to felter, men har flere, og derfor vil denne ikke virke (tror jeg). Den stopper jo ved første fejl, så er der vel kun et felt som "bliver husket"?

Findes der ikke en anden måde?
Avatar billede apocs Nybegynder
26. marts 2011 - 22:23 #4
prøv evt dette så:

if($_POST[sortering] == "") { header("Location: opretkategori.php?fejl=2&".http_build_query($_POST); die();

så henter du bare dine værdier igen med $_GET
Avatar billede gulvflaesk Nybegynder
30. marts 2011 - 15:08 #5
Kære apocs,

DU ER EN STJERNE!!

Det virker fuldstændig perfekt - tusinde tak!
Avatar billede apocs Nybegynder
30. marts 2011 - 15:22 #6
Så lidt da :)

lige en hurtig mere... nu ved jeg ikke hvordan du laver dit check, men en nem måde kunne jo være:

<?php
foreach($_POST as $feltnavn => $feltvaerdi){
    if(empty(trim($feltvaerdi))){
        $error_description = $feltnavn.' kan ikke være tomt - prøv igen';

        header('Location: opretkategori.php?error=1&err_desc='.urlencode($error_description).'&http_build_query($_POST));
    }

    // Her kunne det måske være en idé at beskytte dine data, hvis de skal i en db:

    $feltnavn = mysql_real_escape_string($feltvardi); // Kræver tidl. sat connection
}
?>

Ovenstående kræver dog, at du har nogle "pæne" feltnavne

Men det giver dig friheden til at benytte dine egne feltnavne senere i koden, uden at bruge $_POST-arrayet :)

Nu kan du tilgå værdien i $_POST['kategorinavn'] ved bare at kalde $kategorinavn
Avatar billede apocs Nybegynder
30. marts 2011 - 15:23 #7
Header skal self. være

header('Location: opretkategori.php?error=1&err_desc='.urlencode($error_description).'&'.http_build_query($_POST));

i stedet for :)
Avatar billede gulvflaesk Nybegynder
30. marts 2011 - 16:05 #8
Det ser jeg lige på :-)

Endnu engang tak!
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