Verplichte invoervelden rode rand geven bij vergeten in te vullen ipv tekst...?

Status
Niet open voor verdere reacties.

richard5000

Gebruiker
Lid geworden
24 mrt 2012
Berichten
161
Ik heb een script geschreven en als iemand een verplicht invulveld vergeet, krijgt men een foutmelding te zien op een andere pagina en kan men terug om dit aan te passen. Heb getracht het lettertype aan te passen van de meldingen, zoals lettertype op website, maar dit lukt mij niet.

Nu zou ik graag willen dat men op de pagina blijft van het formulier en alleen het vergeten invoerveld of invoervelden een kleine rode rand geven, maar weet niet de PHP code hiervoor en waar ik deze in het script moet plaatsen, iemand.....?

Mocht iemand weten hoe het lettertype aan te passen mag dit ook uiteraard, of zelfs beiden codes, helemaal top...!

Hieronder het script:
PHP:
<?php
$mailsupport= "info@mijndomeinnaam.nl";
$titel= "www.mijndomeinnaam.nl - " . 
$_POST['onderwerp'];

// set datum
$datum = date("d.m.Y H:i");

// set ip
$ip = $_SERVER['REMOTE_ADDR'];

if (isset ($_POST['informatie'])) 
{
	$informatie="Ja, wel informatie";
}
else
{
	$informatie="Nee, geen informatie";
}

// Bericht
$mssg .= "Ingevuld Contact Formulier \n\n";
$mssg .= "Naam: " .$_POST['naam'] . "\n";
$mssg .= "E-mailadres: " .$_POST['mail'] . "\n";
$mssg .= "Onderwerp: " .$_POST['onderwerp'] . "\n";
$mssg .= "Workshop informatie ? : " .$informatie . "\n";
$mssg .= "Tijdstip: ".$_POST['tijdstip'] . "\n";
$mssg .= "Bericht:" . "\n";$mssg .= $_POST['bericht'] . "\n" . "\n";
$mssg .= "Dit bericht is verstuurd op $datum van het ip adres " . $ip . ".";

//Afzender
$headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
if (empty($_POST['naam']) or empty($_POST['mail']) or empty($_POST['onderwerp']) or empty($_POST['bericht'])) { 

//Validatie

/** Validate naam */
    $naamPattern = '~^[a-z .\'-]+$~Di';
    if ( !isset( $_POST['naam'] ) or !preg_match( $naamPattern, $_POST['naam'] ) )
    {
        echo "De naam is niet geldig!<br> \n";
    }

/** Validate e-mail address */
    $mailPattern = '~^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$~Di';
    if ( !isset( $_POST['mail'] ) or !preg_match( $mailPattern, $_POST['mail'] ) )
    {
        print "Het e-mailadres is niet geldig!<br> \n";       
	}

/** Validate onderwerp */
    $onderwerpPattern = '~^[a-z .\'-]+$~Di';
    if ( !isset( $_POST['onderwerp'] ) or !preg_match( $onderwerpPattern, $_POST['onderwerp'] ) )
    {
        echo "Het onderwerp is niet geldig!<br> \n"; 
    }

/** Validate bericht */
    if ( !isset( $_POST['bericht'] ) or strlen( trim( $_POST['bericht'] ) ) < 2 )
    {
        echo "Het bericht moet minimaal 2 tekens lang zijn!<br><br> \n";
    }

echo "Sorry, maar helaas ben u iets vergeten, of heeft u iets verkeerd ingevuld!!<br><br>\n";
echo '<button type="button" onclick="history.go(-1);">Terug naar formulier</button>';
} else { 
mail ($mailsupport, $titel, $mssg, $headers);
header ("Refresh: 0; URL=verzonden.php");
}
}
?>
 
Laatst bewerkt:
wat u zal moeten doen is
uw form en validatie samen plaatsen in één zo kan je de validatie laten zien door de css aan te laten wassen
 
Ik wil het formulier niet in een hebben, werk met een ander programma vandaar omtrent website bouwen, dus op zoek naar een code om de velden een rode lijn te geven, denk ik... iemand een ander idee?
 
Wat je dan kunt doen is een soort voorcontrole, waarbij je kijkt of het formulier is ingevuld voordat PHP er mee aan de slag gaat. Er zijn twee manieren om dit te doen.
Als je site het HTML5 doctype gebruikt is het heel simpel, in iedere <input> die ingevuld móet worden, zet je simpelweg required="required", als de bezoeker dan probeert het formulier te verzenden zonder dat veld in te vullen zal de browser een waarschuwing laten zien, niet precies een rood randje, maar de waarschuwing komt wel naast het ontbrekende veld te staan.

Gebruik je een ander doctype dan zou je javascript kunnen gebruiken om het formulier te valideren, het script kan bijvoorbeeld de class van lege velden aanpassen.

NB: Bovenstaande is niet bedoelt als beveiliging, het kan door de bezoeker makkelijk omzeilt worden als die dat wil, het is alleen geschikt om je formulieren gebruiksvriendelijker te maken, uiteindelijk moet je nog steeds met PHP controleren of alles in orde is.
 
@Naarling, bedankt voor de input, maar ik ben hier totaal niet in thuis, heb als hobby zo'n script in elkaar weten te krijgen.

Ben inmiddels al even aan het stoeien geweest en heb de PHP file in een soort HTML pagina gezet, maar toch als send.php opgeslagen.

Het mooie is dat ik nu de achtergrond kleur van de PHP pagina kan aanpassen en ook het lettertype aan de website, dit is dus gelukt.

Nu ga ik verder met uitzoeken hoe ik er een veld in krijg met cijfers die de bezoeker ter controle moet invullen en dat hij kan aangeven een kopie van ingevuld formulier wenst te ontvangen, zoiets als stuur mij een kopie.

Mocht iemand dit weten heel graag....!

Gr. Richard
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan