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!
je kon hier niets vinden? ik zit vrijwel nooit in de scripts database, maar lijkt mij dat er toch wel wat te vinden moet zijn.

je kunt gewoon met een if statement checken of een bepaald veld leeg is.

<?php
if (empty($_POST['veld']))
{
    echo('U heeft veld .... niet ingevuld!');
}
else
{
    //uitvoeren van actie als alles ingevuld is
}
?>


eventueel kun je het ook met javascript doen, dat is in principe mooier aangezien je inhoud niet gewist zal worden, maar het is ook weer zo dat sommige mensen dit uit hebben staan en zodoende dit dus ook niet zal werken.

Ga toch stiekem liever voor Javascript.
Michiel Haverlag schreef op 10.10.2006 21:08

Ga toch stiekem liever voor Javascript.
En dan zet iemand de JS uit en heb je geen validatie meer... JS is een leuk extraatje voor de bezoeker, maar volkomen onbetrouwbaar. Jij, als eigenaar van de site, hebt er in elk geval helemaal niets aan. Je zult altijd met PHP de boel (nogmaals) moeten controleren.
Ik gebruik er helemaal geen JS meer voor. Een pagina met 1 formulier reload je in no time en PHP controle is serverside, dus veel veiliger.
Ik heb trouwens iets voor je gemaakt. Het is een minimale opzet, maar geeft wel de werkwijze aan:

<?php
	ini_set ('display_errors', 1);
	error_reporting (E_ALL);
	$errors = array ();
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
		foreach ($_POST as $key => $value) {
			$tmp = trim ($value);
			if (empty ($tmp)) {
				$errors[$key] = 'error';
			}
		}	
	}
?>


<html>
<head>
	<title>Formcheck met PHP</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<style type="text/css">
		input.error {
			border: 1px solid red;
		}
	</style>
</head>

<body>
	<form method="post" action="#">
		<p>
			<label for="input1">input 1:</label>
			<input id="input1" name="input1" type="text"<?php if (isset ($errors['input1'])) echo ' class="error"'; if (isset ($_POST['input1'])) echo ' value="' . $_POST['input1'] . '"';?>>
		</p>
		<p>
			<label for="input2">input 2:</label>
			<input id="input2" name="input2" type="text"<?php if (isset ($errors['input2'])) echo ' class="error"'; if (isset ($_POST['input2'])) echo ' value="' . $_POST['input2'] . '"';?>>
		</p>
		<p>
			<label for="input3">input 3:</label>
			<input id="input3" name="input3" type="text"<?php if (isset ($errors['input3'])) echo ' class="error"'; if (isset ($_POST['input3'])) echo ' value="' . $_POST['input3'] . '"';?>>
			<input type="submit" value="verzenden">
		</p>
	</form>
</body>
</html>
Precies ja. Ziet er mooi uit. Alleen ik heb wel een action. Ik heb dit namelijk nog in de form tag staan:

action="docs/content_beheerovereenkomst.php" method="POST" target="_blank"


Hoe zorg ik er voor dat die het dan:

A. wel doet
B. pas die nieuwe pagina opent nadat alles gecontroleerd is?
Ik zou alles dan controleren op die nieuwe pagina. En als er dan iets van de ingevulde waarden niet klopt, de gebruiker terugsturen. Kortom, het stukje php code van Jan gebruiken op die andere pagina...
Kun je me dat beter uitleggen? Voorbeeld misschien? Snap je idee niet helemaal.
Stel je hebt een pagina form.php waarop het formulier staan. De action van dat formulier verwijst naar content_beheerovereenkomst.php. Alle input van dat formulier wordt dus gepost naar die pagina.

Op die pagina kun je dan controleren of alle gegevens ingevuld zijn. Zo ja, dan verwerk je het formulier verder. Zo niet, dan geef je een foutmelding en laat je de bezoeker terugkeren naar de vorige pagina (form.php).

Echter de manier van Jan, waarbij alles in 1 pagina staat, is een stuk makkelijker. Je kunt errors meteen op dezelfde pagina weergeven, je kunt zoals in het script van Jan gebeurt eenvoudig een rood randje om een input veld maken. Het is een denk ik meer werk om alles over 2 pagina's te verdelen...

Reageren