Gå til innhold

Error-melding når ett felt ikke er utfyllt


Anbefalte innlegg

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
Videoannonse
Annonse
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

$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

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
Lenke til kommentar

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
Lenke til kommentar

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

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å
×
×
  • Opprett ny...