Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Forms_Validation - Fatal编程技术网

如何更改php代码以在每个输入框下显示错误

如何更改php代码以在每个输入框下显示错误,php,arrays,forms,validation,Php,Arrays,Forms,Validation,我有以下代码: if(isset($_POST['submit'])){ if (! isset($_POST['firstname'])) { $error[] = "Please fill out all fields"; } if (! isset($_POST['surname'])) { $error[] = "Please fill out all fields";

我有以下代码:

    if(isset($_POST['submit'])){

        if (! isset($_POST['firstname'])) {
            $error[] = "Please fill out all fields";
        }

        if (! isset($_POST['surname'])) {
            $error[] = "Please fill out all fields";
        }
........
经验证:

if (strlen($_POST['firstname']) < 2){
        $error[] = 'First name cannot be empty';
    }
    if (strlen($_POST['surname']) < 2){
        $error[] = 'Please provide your surname';
    }

......
if(strlen($_POST['firstname'])<2){
$error[]=“名字不能为空”;
}
if(strlen($_POST['names'])<2){
$error[]=“请提供您的姓氏”;
}
......
对数据库进行了更多检查

这将检查错误并一次性显示:

if(isset($error)){
                    foreach($error as $error){
                        echo '<p class="error-login">'.$error.'</p>';
                    }
                }
if(设置($error)){
foreach($error作为$error){
echo“

”.$error.

”; } }
虽然这工作正常,但我希望在发生错误的每个输入框下都显示错误

我不想改变整个代码,只想对这个代码进行必要的修改,这是我自己无法做到的

将它们放入数组是这里唯一的方法还是有更简单的方法


谢谢。

方法是-在某个键下向
$error
添加错误,我想-输入字段的名称:

if(isset($_POST['submit'])){

    // I use key `all` for errors that don't belong to any field

    if (! isset($_POST['firstname'])) {
        $error['all'] = "Please fill out all fields";
    }

    if (! isset($_POST['surname'])) {
        $error['all'] = "Please fill out all fields";
    }

    if (strlen($_POST['surname']) < 2){
        $error['surname'] = 'Please provide your surname';
    }
if(isset($\u POST['submit'])){
//对于不属于任何字段的错误,我使用'all'键
如果(!isset($_POST['firstname'])){
$error['all']=“请填写所有字段”;
}
如果(!isset($_POST['names'])){
$error['all']=“请填写所有字段”;
}
if(strlen($_POST['names'])<2){
$error['name']='请提供您的姓氏';
}
在html标记中:

// general errors, not related to inputs
if(isset($error['all'])){
    foreach($error['all'] as $err){
        echo '<p class="error-login">'.$err.'</p>';
    }
}

<input type="text" name="surname" />
<?php
if(isset($error['surname'])){
    foreach($error['surname'] as $err){
        echo '<p class="error-login">'.$err.'</p>';
    }
}
//一般错误,与输入无关
如果(isset($error['all'])){
foreach($error['all']作为$err){
echo“

”.$err.

”; } }
错误添加一个键
$error['firstname']='…';
并在每个输入项下检查键下的错误。这似乎是解决该问题的最佳方法。谢谢,我感谢您的回答。但是,对于我的代码,我已经按照指出的那样进行了所有修改,但它不起作用。提交表单时没有显示错误,即使我填写了所有未提交的字段。我想可能会这样当它返回这个“$error[]=$e->getMessage();”时,数据库正在处理中,但我已经删除了电子邮件和密码,并且仍然是一样的。我认为在返回“”时它可能是输入值,但我已经将这些值更改为“if(isset($error['firstname')”),仍然没有任何内容。有什么想法吗?