2010-03-07 77 views
2

对不起,我可怜的称号,但我不是一个experinced程序员,我能想到的一个更好的基本的PHP问题

而不是存储在阵列中的错误,然后显示在我的一些形式的错误列表我会喜欢在输入栏旁边显示他们。它太性感了!

你会建议我怎么做?

设置一个变量,如$ wrongemail = 1; $ tooshortpass = 1;如果错误是错误的,然后检查表格?

if (!preg_match($regex, $email)) 
$errors[] = "Invalid email address"; 

if (strlen($password) < 4) 
$errors[] = "Password too short"; 

// No errors? 
if (count($errors) == 0) 
{ 
// success 
} 

else 
{ 
    foreach ($errors as $error) 
    echo '<li>'.$error.'</li>'; 
} 



<table cellspacing="5" cellpadding="0"> 

<tr> 
<td width="70px">Email:</td> 
<td><input type="text" name="email" class="textinput" /></td> 
<td class="red"><?php if error with email print here ?></td> 
</tr> 

<tr> 
<td>Password:</td> 
<td><input type="text" name="password" class="textinput" /></td> 
<td class="red"><?php if error with password print here ?></td> 
</tr> 

<tr> 
<td>&nbsp;</td> 
<td><input type="submit" /></td> 
</tr> 

</table> 
+0

这不是性感,但它是一个好主意。 – 2010-03-07 22:39:40

+0

建议的标题“在PHP中显示内联错误消息” – 2010-03-07 22:40:15

回答

2
if (!preg_match($regex, $email)) 
$errors['email'] = "Invalid email address"; 

if (strlen($password) < 4) 
$errors['password'] = "Password too short"; 

// No errors? 
if (count($errors) == 0) 
{ 
// success 
} 



<table cellspacing="5" cellpadding="0"> 

<tr> 
<td width="70px">Email:</td> 
<td><input type="text" name="email" class="textinput" /></td> 
<td class="red"><?php if(isset($errors['email'])){ echo $errors['email']; } ?></td> 
</tr> 

<tr> 
<td>Password:</td> 
<td><input type="text" name="password" class="textinput" /></td> 
<td class="red"><?php if(isset($errors['password'])){ echo $errors['password']; } ?></td> 
</tr> 

或者,如Savageman指出

if (!preg_match($regex, $email)) 
$errors['email'][] = "Invalid email address"; 

if (strlen($password) < 4) 
$errors['password'][] = "Password too short"; 

// No errors? 
if (count($errors) == 0) 
{ 
// success 
} 

function print_errors($error_array) 
{ 
    foreach($error_array as $error) 
    { 
     echo $error; 
    } 
} 



<table cellspacing="5" cellpadding="0"> 

<tr> 
<td width="70px">Email:</td> 
<td><input type="text" name="email" class="textinput" /></td> 
<td class="red"><?php if(isset($errors['email'])){ print_errors($errors['email']); } ?></td> 
</tr> 

<tr> 
<td>Password:</td> 
<td><input type="text" name="password" class="textinput" /></td> 
<td class="red"><?php if(isset($errors['password'])){ print_errors($errors['password']); } ?></td> 
</tr> 
0

嗯,这可能是一种可能性。但我会建议使用数组。

$errors['email'][] = 'blabla'; 
$errors['password'][] = 'blabla'; 

这种方式更具可扩展性,因为您可以更轻松地为每个字段添加更多的错误。

0

将字段名称后面的error数组的名称命名。例如。

if (!preg_match($regex, $email)) 
$errors['email'] = "Invalid email address"; 

if (strlen($password) < 4) 
$errors['password'] = "Password too short"; 

然后检查是否为这个领域中存在错误,并显示:

<td><input type="text" name="email" class="textinput" /></td> 
<?php if(array_key_exists($errors['email'])): ?> 
    <td class="red"><?php echo $errors['email']; ?></td> 
<?php endif; ?>