Probleem met input

Status
Niet open voor verdere reacties.

codlevi

Gebruiker
Lid geworden
13 jul 2010
Berichten
88
Hallo allemaal

Ik heb een probleem met PHP form validatie, met de code hieronder zal ik het wat duidelijker maken.

Ik heb een test.php:

PHP:
<!DOCTYPE HTML>
<html>
<head>
<?php
	$een = $_POST['1'];
	$twee = $_POST['2'];
	if(isset($een) || isset($twee)) {
		if(empty($een)) {
			echo('veld 1 niet ingevuld!');
		}
		if(empty($twee)) {
			echo('<br />veld 2 niet ingevuld!');
		}
		else {
			header('location:volgende_pagina.php');
		}
	}
?>
<title>test</title>
</head>
<body>
<form method="post" action="test.php">
<input type="text" name="1" value="<?php echo($een); ?>" />
<input type="text" name="2" value="<?php echo($twee); ?>" />
<input type="submit" value="submit" />
</form>
</body>
</html>

Als ik de beide niet invul, krijgt ik wat ik wil, 2 foutmeldingen. Als ik het eerste veld niet invul, krijg ik ook wat ik wil, 1 foutmelding dat de eerste niet is ingevuld. Maar als ik de tweede veld niet invul, krijg ik geen foutmelding dat de eerste niet is ingevuld en redirect hij me naar de volgende pagina.

Kan iemand mij hier mee helpen?

Codlevi
 
Doe het zo:
Het zou moeten werken (Niet uitgeprobeerd):

PHP:
<!DOCTYPE HTML>
<html>
<head>
<?php
    $een = $_POST['1'];
    $twee = $_POST['2'];
        if(isset($een == "") {
            echo('veld 1 niet ingevuld!');
        }
        if(isset($twee) == "") {
            echo('<br />veld 2 niet ingevuld!');
        }
        else {
            header('location:volgende_pagina.php');
        }
?>
<title>test</title>
</head>
<body>
<form method="post" action="test.php">
<input type="text" name="1" value="<?php echo($een); ?>" />
<input type="text" name="2" value="<?php echo($twee); ?>" />
<input type="submit" value="submit" />
</form>
</body>
</html>
 
Laatst bewerkt:
ik zou
lijn7 : if(!isset($een) || trim($een) == "") {

dan zorg je ook dat als er alleen een space word verzonden
 
Nee ik bedoel dat niet, die isset is om te zien of er überhaupt iets is ingevuld in het formulier, als dat zo is, checkt hij het formulier.
Maar als ik het 2de veld invul en het eerste niet, checkt ie het eerste veld niet meer en gaat ie verder naar de volgende pagina terwijl het eerste veld leeg is. Als ik beide velden niet invul, geeft ie een foutmelding dat ze beide niet zijn ingevuld en als ik het eerste invul geeft ie een foutmelding dat dat de tweede niet is ingevuld. Maar als ik de eerste niet invul, en de tweede wel, geeft ie geen foutmelding en gaat ie gewoon verder naar de volgende pagina.
 
Laatst bewerkt:
Maar als ik de eerste niet invul, en de tweede wel, geeft ie geen foutmelding en gaat ie gewoon verder naar de volgende pagina.

Dat is precies het tegenovergestelde van wat je in de eerste post beschrijft. De reden hiervoor is dat het else-gedeelte wat bezoekers doorstuurt alleen hoort bij de controle op veld 2. Als veld 2 niet leeg is wordt de bezoeker doorgestuurd, onafhankelijk van de andere velden. Dit kan je het best oplossen met een boolean die bijhoudt of er een foutmelding is gegeven:
PHP:
$fout = false;
if(isset($een) || isset($twee)) {
     if(empty($een)) {
         echo('veld 1 niet ingevuld!');
         $fout = true;
     }
     if(empty($twee)) {
         echo('<br />veld 2 niet ingevuld!');
         $fout = true;
     }

     if (!$fout) {
         header('location:volgende_pagina.php');
     }
}
 
Dat is precies het tegenovergestelde van wat je in de eerste post beschrijft. De reden hiervoor is dat het else-gedeelte wat bezoekers doorstuurt alleen hoort bij de controle op veld 2. Als veld 2 niet leeg is wordt de bezoeker doorgestuurd, onafhankelijk van de andere velden. Dit kan je het best oplossen met een boolean die bijhoudt of er een foutmelding is gegeven:
PHP:
$fout = false;
if(isset($een) || isset($twee)) {
     if(empty($een)) {
         echo('veld 1 niet ingevuld!');
         $fout = true;
     }
     if(empty($twee)) {
         echo('<br />veld 2 niet ingevuld!');
         $fout = true;
     }

     if (!$fout) {
         header('location:volgende_pagina.php');
     }
}


Precies wat ik zocht, bedankt!:thumb:
 
En voor een foutmelding kan je natuurlijk dit doen:
Code:
$fout = false;if(isset($een) || isset($twee)) {
* * *if(empty($een)) {
* * * * *echo('veld 1 niet ingevuld!');
* * * * *$fout = true;
* * *}
* * *if(empty($twee)) {
* * * * *echo('<br />veld 2 niet ingevuld!');
* * * * *$fout = true;
* * *}
*
* * *if (!$fout) {
* * * * *header('location:volgende_pagina.php');
* * *}elseif ($fout == "true"){
echo 'Je hebt een veld fout ingevuld.';
}
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan