【问题标题】:Inform a user they have missed a specific input field in a form通知用户他们错过了表单中的特定输入字段
【发布时间】:2015-08-11 21:28:30
【问题描述】:

我正在尝试创建一个表单,如果用户未在特定输入中输入信息,则在提交表单时,系统会提醒用户仅填写该输入字段(例如“请输入用户名”) .

目前我有一个 foreach 循环,它遍历表单的每个输入字段并分配一个与该字段同名的变量(即 $name = $_POST['name'])。

我将在我的代码中实现什么,以便我可以检查每个单独的输入字段是否为空并告诉用户这一点,但将代码保持在最低限度?

foreach ($_POST as $key => $value) {

     $$key = $_POST[$key];  //assigns variable to input.

    }

if(!empty($$key)) {

//code if all fields are not empty  

}
else {

    echo "Please fill in all fields";

}

【问题讨论】:

  • 有趣的是,您将其发布为答案stackoverflow.com/a/31952066
  • @Fred-ii- 这里有披萨吗?
  • @Dagon 不,他是个骗子。我饿了!
  • 你可以把空检查放在你的循环中杀死 2 只鸟

标签: php forms


【解决方案1】:

虽然我不同意您这样做的方式,但解决方案是将错误 array 添加到您的第一个 foreach 循环中。

foreach ($_POST as $key => $value) {
     ${$key} = $_POST[$key];

     // If the field is empty, set an error
     if( empty($value) ) {
         $errors[] = 'Please enter a ' . $key . '.';
     }
}

然后更改底部检查错误array。如果为空,请运行您的代码以完成表单提交。如果没有,请遍历错误。

if( empty($errors) ) {
    //code if all fields are not empty
}
else {
    // Loop through each error found
    foreach($errors as $error) {
        echo $error;
    }
}

【讨论】:

  • 为什么还要使用$key?我的意思是你只想输出值对吗?
  • @Script47 正确,发现了一个快速的错字 - 已更新。谢谢:)
  • 我想将每个输入的字段存储到一个变量中以供以后使用@Script47
  • @Dezmondeo 但你不需要$key。这是针对错误的,您要做的就是显示错误,因此不需要变量key。您可以将 $key 的值推送到未发生错误的 if statement 中。
  • 这很完美,正是我想要的。谢谢@RhapX
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多