Anledning till ditt problem är att du säger bara åt scriptet att skriva ut text om det hittas några fel, men du säger inte åt det att samtidigt inte lägga in uppgifterna i databasen. Ett enkelt sätt du kan göra är att innan din a if-satser sätta
$error = FALSE; och i varje if-sats, under felmeddelandet, sätta
$error = TRUE;. När det väl är dags att skicka uppgifterna till databasen gör du:
Kod:
if ($error === FALSE) {
... kod som ska köras om inga fel hittats ...
}
Ett annan strategi, som jag ofta använder, är att stoppa varje felmeddelande i en vektor. Då kan du på slutet antingen godkänna uppgifterna eller lista ALLA fel. Ett exempel tillsammans med din kod skulle kunna vara följande för dina if-satser:
Kod:
if ($nicklength > 15) {
$error[] = 'Nickname was too long.';
}
if ($nicklength < 3) {
$error[] = 'Nickname was too short.';
}
if ($messagelength > 200) {
$error[] = 'Message was too long.';
}
if ($messagelength < 5) {
$error[] = 'Message was too short.';
}
if (isset($nick) && empty($message)) {
$error[] = 'Please fill in both fields.';
}
Följande för att godkänna eller lista fel:
Kod:
if (count($error) == 0) {
... inga fel ...
} else {
echo 'The following errors were found in your submission:';
echo '<ul>';
foreach ($error as $fel) {
echo '<li>' . $fel . '</li>';
}
echo '</ul>'
}