对不起的标题感到抱歉,但由于我不是一个经验丰富的程序员,我可以想到一个更好的标题
不是在数组中存储错误,而是在我的某些表单中显示错误列表,我想在输入字段旁边显示它们。它太性感了!
你怎么建议我这样做?
设置一个变量,例如$ 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> </td>
<td><input type="submit" /></td>
</tr>
</table>
答案 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; ?>