vimael Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Hei Jeg har laget ett spørreskjema. Det er naturlig nok kun interessant om alle punkter er besvart. Jeg har fått inn i scriptet at resultatet ikke skal lagre seg om ett felt er glemt, men jeg kunne tenkt meg en errormelding i form av en ny side eller pop-up som forteller at ett felt er glemt. Nå kan jo den som tar testet være i god tro å ha levert uten at han har det. Koden som unngår å lagre ufullstendig resultat er: if($_REQUEST['tegnet']!="") Jeg kan da føre opp denne linje så mange ganger jeg vil å legge til ett nytt felt hver gang. Hele koden er: <? if($_REQUEST['tegnet']!="") { if($alder=="")$alder="NULL"; $tegnet=htmlentities($_REQUEST['tegnet']); $fylke=htmlentities($_REQUEST['fylke']); $alder=htmlentities($_REQUEST['alder']); $kjonn=htmlentities($_REQUEST['kjonn']); $inntekt=htmlentities($_REQUEST['inntekt']); $barn=htmlentities($_REQUEST['barn']); $tilstand=htmlentities($_REQUEST['tilstand']); $visdom=htmlentities($_REQUEST['visdom']); $hull=htmlentities($_REQUEST['hull']); $regulering=htmlentities($_REQUEST['regulering']); $sjekk=htmlentities($_REQUEST['sjekk']); $utsetter=htmlentities($_REQUEST['utsetter']); $besok=htmlentities($_REQUEST['besok']); $mange=htmlentities($_REQUEST['mange']); $kostnad=htmlentities($_REQUEST['kostnad']); $priser=htmlentities($_REQUEST['priser']); $betale=htmlentities($_REQUEST['betale']); $tlf=htmlentities($_REQUEST['tlf']); $epost=htmlentities($_REQUEST['epost']); $kommentar=htmlentities($_REQUEST['kommentar']); mysql_query("INSERT INTO cds (tegnet,fylke,alder,kjonn,inntekt,barn,tilstand,visdom,hull,regulering,sjekk,utsetter,b sok,mange,kostnad,priser,betale,tlf,epost,kommentar) VALUES('$tegnet','$fylke','$alder','$kjonn','$inntekt','$barn','$tilstand','$visdom','$hull','$regulering','$sjekk','$utsetter','$besok','$mange','$kostnad','$priser','$betale','$tlf','$epost','$kommentar');"); } if($_REQUEST['action']=="del") { mysql_query("DELETE FROM cds WHERE tann_id={$_REQUEST['tann_id']};"); } $result=mysql_query("SELECT tann_id,tegnet,fylke,alder,kjonn,inntekt,barn,tilstand,visdom,hull,regulering,sjekk,utsett r,besok,mange,kostnad,priser,betale,tlf,epost,kommentar FROM cds ORDER BY tegnet;"); $i=0; while( $row=mysql_fetch_array($result) ) { if($i>0) { } $i++; } ?> Håper noen av dere kan hjelpe meg med dette: Takk! Mvh Vidar Mæland Lenke til kommentar
WiRRE Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Java script onsubmit er jo første fase her.. så kan du validere vidre i php (hvis noen har skrudd av java script) evt sende de tilbake til utgangspunktet med http://no.php.net/header , sleng på nonen get verdier der, som forteller om feilen, og legg inn noen if'er som displayer meldinga hvis de er spesifisert. Lenke til kommentar
vimael Skrevet 11. februar 2009 Forfatter Del Skrevet 11. februar 2009 Hei igjen Jeg er en newbie så jeg trenger en nøyaktig løsning. Jeg vet at det skal gå med noen if'er og slik, men jeg vet ikke hvor jeg skal plassere de og hva som nøyaktig må stå der. Men takk uansett. Lenke til kommentar
vimael Skrevet 11. februar 2009 Forfatter Del Skrevet 11. februar 2009 Hei igjen Jeg er en newbie så jeg trenger en nøyaktig løsning. Jeg vet at det skal gå med noen if'er og slik, men jeg vet ikke hvor jeg skal plassere de og hva som nøyaktig må stå der. Men takk uansett. Problem løst! Jeg fant denne koden og det fungerte: // validation $validationOK=true; if (Trim($tegnet)=="") $validationOK=false; if (Trim($alder)=="") $validationOK=false; if (Trim($fylke)=="") $validationOK=false; if (Trim($kjonn)=="") $validationOK=false; if (Trim($tilstand)=="") $validationOK=false; if (Trim($inntekt)=="") $validationOK=false; if (Trim($barn)=="") $validationOK=false; if (Trim($betale)=="") $validationOK=false; if (Trim($utsetter)=="") $validationOK=false; if (Trim($sjekk)=="") $validationOK=false; if (Trim($besok)=="") $validationOK=false; if (!$validationOK) { print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; exit; } Lenke til kommentar
nree Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 $tegnet = trim(htmlentities($_REQUEST['tegnet'])); $fylke = trim(htmlentities($_REQUEST['fylke'])); $alder = trim(htmlentities($_REQUEST['alder'])); $kjonn = trim(htmlentities($_REQUEST['kjonn'])); $inntekt = trim(htmlentities($_REQUEST['inntekt'])); $barn = trim(htmlentities($_REQUEST['barn'])); $tilstand = trim(htmlentities($_REQUEST['tilstand'])); $visdom = trim(htmlentities($_REQUEST['visdom'])); $hull = trim(htmlentities($_REQUEST['hull'])); $regulering = trim(htmlentities($_REQUEST['regulering'])); $sjekk = trim(htmlentities($_REQUEST['sjekk'])); $utsetter = trim(htmlentities($_REQUEST['utsetter'])); $besok = trim(htmlentities($_REQUEST['besok'])); $mange = trim(htmlentities($_REQUEST['mange'])); $kostnad = trim(htmlentities($_REQUEST['kostnad'])); $priser = trim(htmlentities($_REQUEST['priser'])); $betale = trim(htmlentities($_REQUEST['betale'])); $tlf = trim(htmlentities($_REQUEST['tlf'])); $epost = trim(htmlentities($_REQUEST['epost'])); $kommentar = trim(htmlentities($_REQUEST['kommentar'])); Slik burde det være i scriptet der variablene blir satt. Ikke bruk if, if, if osv. det påfører serveren store belastninger. Det skal i så fall benyttes for å fortelle brukeren hvilke felt som må fylles ut med f.eks. en rød border rundt tekstfeltet eller lignende. For å sjekke at variablene er satt kan du gjøre slik: if(empty($alder)) { $valid = false; } elseif(empty($fylke)) { $valid = false; } elseif(empty($kjonn)) { $valid = false; } elseif(empty($tilstand)){ $valid = false; } elseif(empty($inntekt)) { $valid = false; } elseif(empty($barn)) { $valid = false; } elseif(empty($betale)) { $valid = false; } elseif(empty($utsetter)) { $valid = false; } elseif(empty($sjekk)) { $valid = false; } elseif(empty($besok)) { $valid = false; } if($valid == false) { header("Location: error.html"); } else { // Sett inn i databasen } Lenke til kommentar
WiRRE Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 (endret) Eller du kan skriver: $valid = false; } elseif(empty($fylke)) { $valid = "fylke"; } elseif(empty($kjonn)) { $valid = "kjønn"; } elseif(empty($tilstand)){ $valid = "tilstand"; } elseif(empty($inntekt)) { $valid = "inntekt"; } elseif(empty($barn)) { $valid = "barn"; } elseif(empty($betale)) { $valid = "betale"; } elseif(empty($utsetter)) { $valid = "utsetter"; } elseif(empty($sjekk)) { $valid = "sjekk"; } elseif(empty($besok)) { $valid = "besok"; } if($valid != false) { header("Location: error.php?errormsg='urlencode($valid)'"); }else{ //skriv til database etc... } så kan du legge inn på toppen i php: $errormsg = $_GET['errormsg']; echo "Feil med: ".$errormsg. "! Husk å fylle ut alle feltene!"; Har ikke testet dette, men det skal fungere. Endret 11. februar 2009 av WiRRE Lenke til kommentar
nree Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Da burde man hatt $valid .= ""; og if forran alle. Slik at man får opp melding om alle feltene som ikke var utfylt: Du fylte ikke ut: - felt 1 - felt 2 - felt 3 osv.. Lenke til kommentar
Jonas Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 (endret) Hvorfor gjøre alt så utrolig lite dynamisk? Hardkode masse lister og nesten identiske koder er ikke fint og kan alltid gjøres bedre. <?php $errors = array (); $fields = array ( 'fylke', 'kjonn', 'tilstand' ); foreach ( $fields as $field ) if ( empty ( $_POST[$field] ) ) $errors[] = $field; if ( !empty ( $errors ) ) { echo 'Vennligst fyll ut følgende felter:'; echo '<ul><li>' . implode ( '</li><li>', $errors ) . '</li></ul>'; } ?> Endret 11. februar 2009 av Jonas Lenke til kommentar
Alex Moran Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Jeg foretrekker personlig å bruke mulighetene for arrays i input-names: <input type="text" name="data[field_name]" id="field_name" /> I PHP blir det da enkelt: <?php $data = $_POST['data']; $errors = array(); foreach ($data as $key => $value) { if (empty($value)) { $errors[] = $key; } } if (count($errors) > 0) { echo 'Fyll ut alle feltene'; } Lenke til kommentar
Jonas Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Kodesnutten vil ikke kunne validere input som tilsynelatende ikke eksisterer. Problemet oppstår da når man selv setter sammen et post-request og bare utelater å sende med f.eks. telefonnr. Lenke til kommentar
OIS Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 (endret) *uhu* Som Jonas sa, loop på det du vet skal være der, ikke på usikker/manglende data fra klienten. empty bør heller ikke brukes da man ikke kan sende inn tallet 0. Endret 11. februar 2009 av OIS Lenke til kommentar
Wackamole Skrevet 12. februar 2009 Del Skrevet 12. februar 2009 WiRRE på scriptet ditt vil du få feilmelding mest sannsynlig en "headers allready sent.." Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå