beste mensen, ik heb een vraagje.

ik heb hier een stuk php code uit me script alleen werkt het niet goed.
als ik een naam invoer die nog niet in de database bestaat, als ik dan op verzenden druk krijg ik een wit scherm. ik kom er zelf niet uit.

<?php
$error = array();

if (empty($naam))
{
$error[] = 'Er is geen naam ingevoerd!';
}
elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
{
$error[] = 'Oeps de gebruikersnaam bestaat al.';
}
elseif (strlen($naam) > 50)
{
$error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
}

if (empty($email))
{
$error[] = 'Er is geen e-mail adres ingevoerd!';
}
elseif (!check_mail($email))
{
$error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
}

elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
{
$error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
}

if (empty($wachtwoord1))
{
$error[] = "Er is geen wachtwoord ingevuld!";
}
elseif ($wachtwoord1 =! $wachtwoord2)
{
$error[] = 'De wachtworderen komen niet overeen';
}

if ($error == '')
{
echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
foreach($error as $fout)
{
echo ' <li>'. $fout .'</li>';
}
echo '</ul> ';
}
else
{
echo 'yes gelukt '.$naam.'';
}
?>
verander regel 40:

<?php
if ($error == '')
?>

eens in

<?php
if (!empty($error))
?>
Beter is:
<?php
if (count($error) > 0) {
}
?>
Empty doet hetzelfde hoor Wouter.
Beste Wouter en Ozzie.

ik heb beide geprobeerd maar het probleem blijft zich voordoen. Ik dacht het zal vast wel een stom foutje zijn maar als je er na een uur nog niet hebt gevonden dacht ik post het hier maar!
<?php
if (count(array_keys($error, true)) == 0){
    // GEEN FOUTEN
} else {
    // FOUTEN
}
?>
sorry ik heb het veranderd maar het probleem blijft aanwezig! ik zal het vanmiddag even uploaden dan kunnen jullie ook zien wat ik bedoel!
<?

$error = array();

if (empty($naam))
{
$error[] = 'Er is geen naam ingevoerd!';
}
elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
{
$error[] = 'Oeps de gebruikersnaam bestaat al.';
}
elseif (strlen($naam) > 50)
{
$error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
}

if (empty($email))
{
$error[] = 'Er is geen e-mail adres ingevoerd!';
}
elseif (!check_mail($email))
{
$error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
}

elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
{
$error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
}

if (empty($wachtwoord1))
{
$error[] = "Er is geen wachtwoord ingevuld!";
}
elseif ($wachtwoord1 =! $wachtwoord2)
{
$error[] = 'De wachtworderen komen niet overeen';
}

if (count(array_keys($error, true)) == 0)
{
echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
foreach($error as $fout)
{
echo ' <li>'. $fout .'</li>';
}
echo '</ul> ';
}
else
{
echo 'yes gelukt '.$naam.'';
}
?>

[size=xsmall]Toevoeging op 06/11/2012 11:28:42:[/size]

sorry ik heb het veranderd maar het probleem blijft aanwezig! ik zal het vanmiddag even uploaden dan kunnen jullie ook zien wat ik bedoel!
<?

$error = array();

if (empty($naam))
{
$error[] = 'Er is geen naam ingevoerd!';
}
elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
{
$error[] = 'Oeps de gebruikersnaam bestaat al.';
}
elseif (strlen($naam) > 50)
{
$error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
}

if (empty($email))
{
$error[] = 'Er is geen e-mail adres ingevoerd!';
}
elseif (!check_mail($email))
{
$error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
}

elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
{
$error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
}

if (empty($wachtwoord1))
{
$error[] = "Er is geen wachtwoord ingevuld!";
}
elseif ($wachtwoord1 =! $wachtwoord2)
{
$error[] = 'De wachtworderen komen niet overeen';
}

if (count(array_keys($error, true)) == 0)
{
echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
foreach($error as $fout)
{
echo ' <li>'. $fout .'</li>';
}
echo '</ul> ';
}
else
{
echo 'yes gelukt '.$naam.'';
}
?>
Ozzie PHP op 06/11/2012 09:16:55

Empty doet hetzelfde hoor Wouter.

Ja, daarom zei ik ook 'beter' en niet 'je moet dit doen'. :) Het is beter om je condities zo specifiek mogelijk te maken. Ook ga je nu niet in de war raken wat $error nou is, je weet nu sowieso dat het een array is (ook zo'n programming style kwestie waar we eens een topic voor moeten maken...)
Je hebt nu: errors == 0 -> toon error. dat klopt dus niet want het moet errors > 0 -> toon error ;-) Tip
Wouter, ik denk dat empty juist beter is, omdat deze funcie ervoor gemaakt is. In jouw geval moet je eerst de array gaan tellen, en vervolgens controleren of de count groter is dan 0. Dit lijkt me slechter voor je performance.

[size=xsmall]Toevoeging op 06/11/2012 11:34:55:[/size]

[offtopic]
Wouter J op 06/11/2012 11:31:40

(ook zo'n programming style kwestie waar we eens een topic voor moeten maken...)

Nu je het zegt ja :)
[/offtopic]
Kun je de functie controlle_dubbelle_info() eens laten zien? Er staat hier niets in dat een wit scherm kan veroorzaken voor zover ik weet.

[offtopic]
Ik ga zelf ook voor empty() wanneer ik moet controleren of een array leeg is over het algemeen.
[/offtopic]

Reageren