Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在输入字段旁边显示错误_Php_Html_Forms - Fatal编程技术网

Php 在输入字段旁边显示错误

Php 在输入字段旁边显示错误,php,html,forms,Php,Html,Forms,我知道在同一个问题上有很多问题,但我太执着了。我很难弄明白出了什么问题。我尝试过谷歌的很多东西,但都没有成功。我试图让验证错误显示在相关输入字段的旁边,而不是仅仅显示在表单顶部。这个表格很大,所以我将只发布一个“样本” HTML格式: <form action="register.php" method="POST"> <table> <th class="topLine"> <label for="for

我知道在同一个问题上有很多问题,但我太执着了。我很难弄明白出了什么问题。我尝试过谷歌的很多东西,但都没有成功。我试图让验证错误显示在相关输入字段的旁边,而不是仅仅显示在表单顶部。这个表格很大,所以我将只发布一个“样本”

HTML格式:

<form action="register.php" method="POST">
    <table>
        <th class="topLine">
            <label for="form_login" >Login
        </th>

        <td>
            <div class="form_input_bg">
                <input type="text" name="username" value="" maxlength="16" size="16"/>
                <?php echo $username;?>
            </div>
        </td>
    </tr>


    <tr>
        <th class="topLine">Password
            <p style="font-size:9px;">8-16 Character (only a-Z,0-9)</p>
        </th>
        <td>
            <div class="form_input_bg">
                <input type="password" name="pass" value="" maxlength="16" size="16"/>
            </div>
        </td>
    </tr>
    <tr>

登录
密码
8-16个字符(仅a-Z,0-9)

PHP验证,恰巧是这样,仍然是一个示例(不想伤害你的眼睛)


我建议您将验证与显示html分开,如下所示:

// validation
$error = array();
if (strlen($username) < 5)
    $error['username'] = 'Login must be longer than 4 characters';


// html
<input type="text" name="username" value="" maxlength="16" size="16"/><?php echo $username;?>
<?php if (isset($error['username'])) : ?>
    <p class="error"><?php echo $error['username'] ?></p>
<?php endif ?>
<!-- other markup -->
<form>
    <table>
        <tr>
            <td>
            <?php
                if(strlen($_POST['username'])<5) {
                    echo '<div class="message">Login must be longer than 4 characters</div>';
                }
            ?>
            <!-- login form element -->
            </td>
        </tr>
        <!-- repeat for other form elements -->
    </table>
</form>
//验证
$error=array();
if(strlen($username)<5)
$error['username']='登录长度必须超过4个字符';
//html


这两段代码如何相互关联?像这样

<?php
    // other code
    elseif(strlen($_POST['username'])<5) {
        echo '<div class="message">Login must be longer than 4 characters</div></div><p>
    // other code
?>
<!-- other markup -->
<form>
    <table>
        <!-- form elements -->
    </table>
</form>

整个代码文件自上而下按顺序处理。将一个元素放在标记的中间某个地方,代码需要代码>回声< /代码>它在标记的那一点。

也许你可以试试这样。

<dl>
   <dt>Login:</dt>
   <dd><input type="text" name="username" value="" maxlength="16" size="16"/>
   <?php echo ($message['username'] == "" ? "" : $message['username']) ?></dd>
   <dt>Password:</dt>
   <dd><input type="text" name="password" value="" maxlength="16" size="16"/>
   <?php echo ($message['username'] == "" ? "" : $message['username']) ?></dd>
</dl>

登录:
密码:
由于布局原因,不应使用选项卡。(定义列表的表格)

对于另一部分,生成一个

<?PHP
$message = array();
...
elseif(strlen($_POST['username'])<=5) {
$message['username']'<div class="message">Login must be longer than 4 characters</div>    
?>
试试这个

<!DOCTYPE HTML> 
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body> 
<?php
$nameErr = $emailErr = "";
$name = $email = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{

if (strlen($_POST["name"])<5)
{$nameErr = "Username must be longer than 4 characters";}
else
 {$name = $_POST["name"];}
if (empty($_POST["email"]))
 {$emailErr = "Email is required";}
else
 {$email = $_POST["email"];}
}
?>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo($_SERVER["PHP_SELF"]);?>"> 
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>
</body>
</html>

.错误{color:#FF0000;}
*必填字段


您是否愿意修复实际工作的代码示例,并展示您对如何工作的基本想法?提供的答案都很好,尤其是Andrey的答案。但是我有一个问题,错误不会一次显示出来,我的意思是,如果用户名和电子邮件有无效的输入,它首先显示用户名,在用户验证后,显示另一个电子邮件错误。。我当时如何向用户显示它们呢?你没把我弄明白。我想说的是,我希望这些错误显示在error@user3413809:我的例子在什么方面没有做到这一点?对于每个字段,回显该字段旁边的验证错误。@user3413809为什么不允许您使用
?他们使用了

,但您只需将其更改为
,甚至将其添加到变量->
$error['username']='登录长度必须超过4个字符
,我正在尝试。我一会儿给你回电话。不过非常感谢:)使用我的错误样式,通常是和div类,使错误显示在输入表单下面。。任何解决方案??将错误消息放到另一个表列,这样它就会显示在输入的右侧。提供的答案都很好,尤其是Andrey的答案。但我有一个问题,错误不会在时间显示,我的意思是如果用户名和电子邮件有无效的输入,它首先显示用户名,在用户验证后,显示另一个电子邮件错误。。我当时如何向用户显示它们?
<!DOCTYPE HTML> 
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body> 
<?php
$nameErr = $emailErr = "";
$name = $email = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{

if (strlen($_POST["name"])<5)
{$nameErr = "Username must be longer than 4 characters";}
else
 {$name = $_POST["name"];}
if (empty($_POST["email"]))
 {$emailErr = "Email is required";}
else
 {$email = $_POST["email"];}
}
?>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo($_SERVER["PHP_SELF"]);?>"> 
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>
</body>
</html>