Gå til innhold

Error-melding når ett felt ikke er utfyllt


Anbefalte innlegg

Skrevet

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

Videoannonse
Annonse
Skrevet

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.

Skrevet

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.

Skrevet
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;
}

Skrevet

$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

}

Skrevet (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 av WiRRE
Skrevet

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..

Skrevet (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 av Jonas
Skrevet

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';
}

Skrevet

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.

Skrevet (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 av OIS

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...