基本的php问题

时间:2010-03-07 22:36:29

标签: 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>

3 个答案:

答案 0 :(得分: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>

或者,正如萨维奇曼指出的那样

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>

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

在字段名称后面命名error数组的键。 E.g。

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; ?>