09. januar 2006 - 12:20Der er
9 kommentarer og 1 løsning
Validering af flere felter
Hej. Jeg er ved at lave et lille kørselsregnskab i PHP og MySQL. Brugerens indtastninger vil jeg gerne have valideret, så jeg sikrer, at de bliver gemt korrekt i MySQL. Jeg har 2 filer, nemlig indtastningsformularen og PHP-filen der gemmer indtastningerne: Følgende kontroller ønskes: Alle felter skal være udfyldt Dato skal eksistere. I PHP-filen kan jeg lave tjekket med "Checkdate", men det var smartere, at det skette ifm. índtastningen. Antal_km skal være positive og helt tal
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg har fundet en masse gode tutorials, og jeg kan ogå finde ud af, at få 1 til at virke, men flere det kniber gevaldigt. Til inspiration (hvis det overhovedet er nødvendigt, har jeg fundet disse:
-- og jeg glemte at indsætte fokus på første felt-tingen, så du skal indsætte dette i javascript-blokken, f.eks. efter den sidste tuborg og før </script>:
Når jeg trykker på Submit-knappen, forsætter den bare til min php-fil. Der kontrolleres ikke! Koden ser sådan her ud: <head> <script type="text/javascript"> function checkDate(elm){ var d = elm.value.split(/[\/-]/); if(d.length == 1){ alert("Fejl i datoformat"); return false; } var dato = new Date(d[2],d[1]-1,d[0]); if(dato.getFullYear() != d[2] || dato.getMonth()+1 != d[1] || dato.getDate() != d[0]){ alert("Ugyldig dato"); return false; } return true; } function valider(f){ if(!checkDate(f.dato)){ f.dato.select(); f.dato.focus(); return false; } if(!f.antal_km.value.match(/^\d+$/)){ alert("Kilometertal skal udfyldes"); f.antal_km.select(); f.antal_km.focus(); return false; } if(f.formaal.value==""){ alert("Formål skal udfyldes"); f.formaal.select(); f.formaal.focus(); return false; } if(f.destinationer.value==""){ alert("Destinationer skal udfyldes"); f.destinationer.select(); f.destinationer.focus(); return false; }
Ok - det hjalp og ser interessant ud. Lige et par ting: 1. Datoen kan jeg splitte med "-" og "/". For at gemme korrekt i MySQL vil jeg gerne, at der kun kan splittes med "-". 2. Kan km. feltet tjekkes, så der maksimalt indtastes 3 cifre. Lige nu kan jeg indtaste mange flere. 3. Er det muligt, at lave en validering, så der ikke indtastes mere end 999 km. og at indtastningen er i hele tal. Hvis jeg skriver med decimaler, er valideringssvaret, "Km. tal skal udfyldes". Her passer det bedre med: "Km. tal skal angives i hele tal".
Tusind tak for hjælpen - du kan bare sende et svar, så jeg kan give dig nogle velfortjente point. (Det kan være, at jeg senere opretter et nyt spørgsmål om en anden slags validering - eksempelvis på email - men som du skriver foroven, kan jeg nøjes med at "ofre" 30 point)
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.