Ik zoek een goeie form validatie. Het mooiste vind ik dat als je op submit klikt, maar een bepaald input niet is ingevuld, het kopje dan dikgedrukt rood wordt.

In principe heb ik alleen maar inputs en 1 keer een select. Die select hoeft nou ook niet perse gecheckt worden, ik weet dat dat lastig is (zou mooi zijn).

Maar heeft iemand of weet iemand nog een goed script? Ik heb al gezocht hier @ PHPhulp, maar kan niet iets vinden wat er op lijkt. Weet iemand anders een website waar ik 't kan 'rippen'?

Alvast bedankt!
Heb nog een vraag. Kan je ook nog iets inplanten dat je bij postcode cijfers en letters alleen cijfers en letters kan invullen? Daarnaast moet er ook zo zijn dat er minimaal 4 cijfers en 2 letters moeten ingevuld bij de postcode velden. Zo niet moet ik ook een error melding krijgen.

Hylke, zou je er naar kunnen kijken voor me? Alvast bedankt!
<?
preg_match('^[A-Za-z0-9]+$',$string);
?>
Ik doe het doormiddel van een gedeelte lijke "gejate" van Formhandler. Daarnaast nog erg aangepast..

Voorbeeld:
<?php
include('../includes/validate.php');
include('../includes/database.php');
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$method = array();
$method[] = 'string';
$method[] = 'empty';
$errors = val::validate_field($_POST,$method);
if(!is_array($errors)){
$_POST['date'] = '';
$_POST['author'] = AUTHOR;
$out = db::insert_row(PREFIX.'weblog',$_POST,3,$rLink);
if($out > 0){
echo '<div class="succes"><p>De log is met succes geplaatst</p></div>';
}else{
echo '<div class="error"><p>Er is een fout op getreden tijdens het invoegen in de database</p></div>';
}
}else{
//geneer een echo en show form
}
?>
Class:
<?php
//class validate
class val{
/*Van Formhandler*/
/**
* val::IsString()
*
* Any string that doesn't have control characters (ASCII 0 - 31) but spaces are allowed
*
* @param string $value: The string to check
* @return bool
*/
function IsString($value)
{
return preg_match("/^[^\x-\x1F]+$/", $value);
}

/**
* val::_IsString()
*
* Public: same as IsString, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsString($value)
{
return StrLen($value) == 0 || val::IsString($value);
}

/**
* val::IsAlpha()
*
* Public: only letters a-z and A-Z
*
* @param string $value
* @return bool
*/
function IsAlpha($value)
{
return preg_match("/^[a-z]+$/i", $value);
}

/**
* val::_IsAlpha()
*
* Public: same as IsAlpha, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsAlpha($value)
{
return StrLen($value) == 0 || val::IsAlpha($value);
}

/**
* val::IsDigit()
*
* Public: only numbers 0-9
*
* @param string $value
* @return bool
*/
function IsDigit($value)
{
return (bool) preg_match("/^[0-9]+$/", $value);
}

/**
* val::_IsDigit()
*
* Public: same as IsDigit, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsDigit($value)
{
return StrLen($value) == 0 || val::IsDigit($value);
}

/**
* val::IsAlphaNum()
*
* Public: letters and numbers
*
* @param string $value
* @return bool
*/
function IsAlphaNum($value)
{
return preg_match("/^[a-z0-9]+$/i", $value);
}

/**
* val::_IsAlphaNum()
*
* Public: same as IsAlphaNum, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsAlphaNum($value)
{
return StrLen($value) == 0 || val::IsAlphaNum($value);
}

/**
* val::IsFloat()
*
* Public: only numbers 0-9 and an optional - (minus) sign (in the beginning only)
*
* @param string $value
* @return bool
*/
function IsFloat($value)
{
return (bool) preg_match("/^-?([0-9]*\.?,?[0-9]+)$/", $value);
}

/**
* val::_IsFloat()
*
* Public: same as IsFloat, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsFloat($value)
{
return StrLen($value) == 0 || val::IsFloat($value);
}

/**
* val::IsInteger()
*
* Public: only numbers 0-9 and an optional - (minus) sign (in the beginning only)
*
* @param string $value
* @return bool
*/
function IsInteger($value)
{
return (bool) preg_match("/^-?[0-9]+$/", $value);
}

/**
* val::_IsInteger()
*
* Public: same as IsInteger, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsInteger($value)
{
return StrLen($value) == 0 || val::IsInteger($value);
}


/**
* val::IsBool()
*
* Public: a boolean (case-insensitive "true"/"1" or "false"/"0")
*
* @param string $value
* @return bool
*/
function IsBool(&$value)
{
if(preg_match("/^true$|^1|^false|^0$/i", $value))
{
$value = true;
return true;
}
else
{
return false;
}
}

/**
* val::_IsBool()
*
* Public: same as IsBool, only now the value is also valid if it is empty
*
* @param string $value
* @return bool
*/
function _IsBool($value)
{
return StrLen($value) == 0 || val::IsBool($value);
}

// check for a valid url
// TODO: see http://www.formhandler.net/index.php?pg=9&id=2979
function IsURL ( $value )
{
$regex = '/^((http|ftp|https):\/{2})?(([0-9a-zA-Z_-]+\.)+[a-zA-Z]+)((:[0-9]+)?)((\/([0-9a-zA-Z%\.\/_-]+)?(\?[0-9a-zA-Z%\/&=_-]+)?)?)$/';
$result = preg_match( $regex, $value, $match );

return $result;
}

function _IsURL($value)
{
return StrLen($value) == 0 || val::IsURL($value);
}

// a valid email address (only checks for valid format: [email protected])
function IsEmail($value)
{
return preg_match("/^[a-z0-9_\.-]+@([a-z0-9]+([\-]+[a-z0-9]+)*\.)+[a-z]{2,7}$/i", $value);
}

function _IsEmail($value)
{
return StrLen($value) == 0 || val::IsEmail($value);
}

// like IsString, but newline characters and tabs are allowed
function IsText($value)
{
return 1; //preg_match("/^([^\x-\x1F]|[\r\n\t])+$/", $value);
}

function _IsText($value)
{
return StrLen($value) == 0 || val::IsText($value);
}



// check if the value is not empty
function notEmpty($value)
{
if(!is_array($value))
{
$value = trim($value);
return !empty($value);
}
else
{
return (bool) (count($value) > 0);
}
}
/*Eigen code*/
function validate_field($fields,$methods){
$valid = array();
$i = 0;
foreach($fields as $field => $value){
switch($methods[$i]){
case 'string':
$valid[$field] = val::IsString($value);
break;
case '_string':
$valid[$field] = val::_IsString($value);
break;
case 'alpha':
$valid[$field] = val::IsAlpha($value);
break;
case '_alpha':
$valid[$field] = val::_IsAlpha($value);
break;
case 'digit':
$valid[$field] = val::IsDigit($value);
break;
case '_digit':
$valid[$field] = val::_IsDigit($value);
break;
case 'AlphaNum':
$valid[$field] = val::IsAlphaNum($value);
break;
case '_AlphaNum':
$valid[$field] = val::_IsAlphaNum($value);
break;
case 'float':
$valid[$field] = val::IsFloat($value);
break;
case '_float':
$valid[$field] = val::_IsFloat($value);
break;
case 'int':
$valid[$field] = val::IsInteger($value);
break;
case '_int':
$valid[$field] = val::_IsInteger($value);
break;
case 'bool':
$valid[$field] = val::IsBool($value);
break;
case '_bool':
$valid[$field] = val::_IsBool($value);
break;
case 'url':
$valid[$field] = val::IsUrl($value);
break;
case '_url':
$valid[$field] = val::_IsUrl($value);
break;
case 'email':
$valid[$field] = val::IsEmail($value);
break;
case '_email':
$valid[$field] = val::_IsEmail($value);
break;
case 'text':
$valid[$field] = val::IsText($value);
break;
case '_text':
$valid[$field] = val::_IsText($value);
break;
case 'empty':
$valid[$field] = val::notEmpty($value);
break;
default:
$valid[$field] = true;
}
$i++;
}
$val = false;
foreach($valid as $var){
if($var == 0){
$val = true;
}
}
if($val == true){
return $valid;
}else{
return true;
}
}
}

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Formulier Openingsbrief Todaysbeheer</title>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode; 
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}
//  End -->
</script>
<script type="text/javascript">
    function init () {
        if (document.forms.length > 0) {
            var n = document.forms[0].elements.length;
            for (i = 0; i < n; i++) {
                if (document.forms[0].elements[i].type == 'text') {
                    var first_field = document.forms[0].elements[i];
                    first_field.blur ();
                    first_field.focus ();
                    first_field.select ();
                    break;
                }
            }
        }
    }

    window.onload = init;
</script>
</head>
<body>
<h1>Vragenlijst</h1>
<script>
function checkForm()
{
    var error = new Array();
    var numerror = "0";
    var valid = "true";
    var select1 = document.getElementById("1").value;
    var select2 = document.getElementById("3").value;
    var name1 = document.getElementById("2").value;
    var name2 = document.getElementById("4").value;
    var addressA = document.getElementById("5A").value;
    var addressB = document.getElementById("5B").value;
    var postcodenum = document.getElementById("6").value;
    var postcodelet = document.getElementById("7").value;
    var city = document.getElementById("8").value;
    var phonenumber = document.getElementById("9").value;

    if(select1 == "0")
    {
        error["noselect1"] = "true";
        valid = "false";
        numerror++;
    }

    if(name1 == "")
    {
        error["noname1"] = "true";
        valid = "false";
        numerror++;
    }

    if(select2 == "0")
    {
        error["noselect2"] = "true";
        valid = "false";
        numerror++;
    }

    if(name2 == "")
    {
        error["noname2"] = "true";
        valid = "false";
        numerror++;
    }

    if(addressA == "")
    {
        error["noaddressA"] = "true";
        valid = "false";
        numerror++;
    }

    if(addressB == "")
    {
        error["noaddressB"] = "true";
        valid = "false";
        numerror++;
    }

    if(postcodenum.length != "4")
    {
        error["nopostcodenuma"] = "true";
        valid = "false";
        numerror++;
    }
    else if(isNaN(postcodenum))
    {
	error["nopostcodenumb"] = "true";
	valid = "false";
	numerror++;
    }

    if(postcodelet.length != "2")
    {
        error["nopostcodeleta"] = "true";
        valid = "false";
        numerror++;
    }
    else
    {
	var postcodeletarray = new Array();
	postcodeletarray = postcodelet.split("");
	var postcodenumforlet = 0;

	for(i = 0; i <= postcodeletarray.length; i++)
	{
	    if(!isNaN(postcodeletarray[i]))
	    {
		postcodenumforlet++;
	    }
	}

	if(postcodenumforlet != "0")
	{
		valid = "false";
		error["nopostcodeletb"] = "true";
		numerror++;
	}
    }

    if(city == "")
    {
        error["nocity"] = "true";
        valid = "false";
        numerror++;
    }

    if(phonenumber == "")
    {
        error["nophonenumber"] = "true";
        valid = "false";
        numerror++;
    }
    
    if(valid == "true")
    {
        document.getElementById("form").submit();
    }
    else
    {
        if(numerror == "1")
        {
            numerror = "mankeert " + numerror + " ding";
        }
        else
        {
            numerror = "mankeren " + numerror + " dingen";
        }

        var errormessage = "Er " + numerror + " met uw ingevulde formulier:\n";

        if(error["noselect1"] == "true")
        {
            errormessage = errormessage + "\n  *Er is geen aanhef geselecteerd voor de 1e rekeninghouder.";
        }
        if(error["noname1"] == "true")
        {
            errormessage = errormessage + "\n  *Er zijn geen voorletters en naam ingevuld voor de 1e rekeninghouder.";
        }
        if(error["noselect2"] == "true")
        {
            errormessage = errormessage + "\n  *Er is geen aanhef geselecteerd voor de 2e rekeninghouder.";
        }
        if(error["noname2"] == "true")
        {
            errormessage = errormessage + "\n  *Er zijn geen voorletters en naam ingevuld voor de 2e rekeninghouder.";
        }
        if(error["noaddressA"] == "true")
        {
            errormessage = errormessage + "\n  *Er is geen straat ingevuld bij het adres.";
        }
        if(error["noaddressB"] == "true")
        {
            errormessage = errormessage + "\n  *Er is geen huisnummer ingevuld bij het adres.";
        }
        if(error["nopostcodenuma"] == "true")
        {
            errormessage = errormessage + "\n  *Er zijn niet vier postcodecijfers ingevuld.";
        }
	if(error["nopostcodenumb"] == "true")
	{
	    errormessage = errormessage + "\n  *Er zijn letters ingevuld bij de postcodecijfers.";
	}
        if(error["nopostcodeleta"] == "true")
        {
            errormessage = errormessage + "\n  *Er zijn geen twee postcodeletters ingevuld.";
        }
	if(error["nopostcodeletb"] == "true")
	{ 
	    errormessage = errormessage + "\n  *Er zijn cijfers ingevuld in plaats van postcodeletters.";
	}
        if(error["nocity"] == "true")
        {
            errormessage = errormessage + "\n  *Er is geen woonplaats ingevuld.";
        }
        if(error["nophonenumber"] == "true")
        {
            errormessage = errormessage + "\n  *Er is geen telefoonnummer ingevuld.";
        }
        alert(errormessage);
    }
}
</script>
<form id = "form" action="docs/content_vragenlijst.php" method="POST" target="_blank">
Aanhef 1e rekeninghouder:<br>
<select id = "1" name="1">
<option value="0">Maak uw keuze</option>
<option value="1">De heer</option>
<option value="2">Mevrouw</option>
</select><br>
<br>
Voorletters &amp; naam 1e rekeninghouder:<br>
<input id = "2" type="text" name="2"><br>
<br>
Aanhef 2e rekeninghouder:<br>
<select id = "3" name="3">
<option value="0">Maak uw keuze</option>
<option value="1">De heer</option>
<option value="2">Mevrouw</option>
</select>
<br>
<br>
Voorletters &amp; naam 2e rekeninghouder:<br>
<input id = "4" type="text" name="4">
<br><br>
Adres, nummer &amp; toevoeging:<br>
<input id = "5A" type="text" name="5">
<input id = "5B" type="text" name="5B" size="2">
<input type="text" name="5C" size="1"><br><br>
Postcode:<br>
<input id = "6" type="text" name="6" maxlength="4" size="2" onKeyUp="return autoTab(this, 4, event);"> 
<input id = "7" type="text" name="7" maxlength="2" size="1" style="text-transform: uppercase" onKeyUp="return autoTab(this, 2, event);"><br><br>
Woonplaats:<br>
<input id = "8" type="text" name="8" style="text-transform: uppercase"><br>
<br>
Telefoon:<br>
<input id = "9" type="text" name="9" size="20" maxlength="10"><br><br>
<input type = "button" onclick="checkForm();" value="GENEREER"><input type="reset" value="OPNIEUW">
</form>
</body>
</html> 


=D asjeblieft
Michiel Haverlag schreef op 18.10.2006 14:36
...toekomst maar heb vandaag wat nodig. .....


Dus julie kunnen wel ophouden met complete scripten voor hem te schrijven hij heeft het niet meer nodig. :)

Oftewel Michiel volgens mij moet je nu zelf eens aan het werk
Remco van Arkelen schreef op 18.10.2006 13:03
http://www.formhandler.net

Ik gebruik weinig anders meer voor m'n forms :)


Nou ik ben weer overgestapt naar plain html.. :) formhandler maakt het wel makkelijk maar niet beter bewerkbaar, en nog niet alle functies werken.. ;)
Idd, Ik heb er ook een tijdje mee gewerkt. heb er alleen een paar functies die hadnig zijn er uit gesloopt.

Was altijd een half uur bezig om die fromhandler naar mijn eigen wensen te maken...

Reageren