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
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
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.