2010-03-07 82 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; ?>