【问题标题】:Why is this enquiry form not displaying error messages?为什么这个查询表不显示错误信息?
【发布时间】:2017-01-04 00:46:58
【问题描述】:

我在使用 Material Design Lite Library 创建的页面中有一个查询表单,该表单位于页面的最后一部分。 HTML 表单代码如下:

<div class="mdl-cell mdl-cell--6-col">
     <h1 class = "enquiry--header"> Enquiry </h1>
     <form method="post" action = "index.php">
     <div class = "mdl-textfield mdl-js-textfield">
       <input type = "text" id="name" name = "name" class = "mdl-textfield__input name" value="<?php echo htmlspecialchars($_POST['name']); ?>">
        <label class="mdl-textfield__label" for="name">Name</label>
    </div>
    <?php echo "<p class = 'message'>$errName</p>";?>
    <div class = "mdl-textfield mdl-js-textfield">
        <input type = "text" id="email" name = "email" class = "mdl-textfield__input email" value="<?php echo htmlspecialchars($_POST['email']); ?>">
        <label class="mdl-textfield__label" name = "email" for="email">Email</label>
    </div>
    <?php echo "<p class = 'message'>$errEmail</p>";?>
    <div class = "mdl-textfield mdl-js-textfield">
        <textarea type = "text" id="enquiry" name = "enquiry" class = "mdl-textfield__input enquiry"  value="<?php echo htmlspecialchars($_POST['enquiry']); ?>" name = "enquiry"></textarea>
        <label class="mdl-textfield__label" for="email">Your Enquiry</label>
    </div>
    <?php echo "<p class = 'message'>$errMessage</p>";?>
    </form>
    <div id = "submit" name = "submit" type = "submit" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-color--grey-900  mdl-js-ripple-effect">
      Send
    </div>
    <?php echo $result;?>
</div>

PHP 代码:

$name = null;
$email = null;
$message = null;
$from = null;
$to = null;
$subject = null;
$errName = null;
$errEmail = null;
$errMessage = null;
$errResult = null;
    if (isset($_POST["submit"])) {
       $name = $_POST['name'];
       $email = $_POST['email'];
       $message = $_POST['message'];
       $from = 'Contact-Us'; 
       $to = 'xyz@gmail.com'; 
       $subject = 'Enquiry';

       $body = "From: $name\n E-Mail: $email\n Message:\n $message";

       // Check if name has been entered
        if (!$_POST['name']) {
           $errName = 'Please enter your name';
        }

        // Check if email has been entered and is valid
        if (!$_POST['email'] || !filter_var($_POST['email'],   FILTER_VALIDATE_EMAIL)) {
           $errEmail = 'Please enter a valid email address';
        }

        //Check if message has been entered
        if (!$_POST['message']) {
           $errMessage = 'Please enter your message';
        }


    if (!$errName && !$errEmail && !$errMessage) {
        if (mail ($to, $subject, $body, $from)) {
           $result='<div class="success">Thank You! We will reply shortly</div>';
           $_POST = array();
        } else {
           $result='<div class="error">Your message could not be sent.</div>';
        }
    }
       }
   ?>

结果 div 没有更新,也没有在提交表单时显示错误消息,因为字段留空。我正在使用 MAMP 在本地对其进行测试。

【问题讨论】:

  • &lt;div id = "submit" name = "submit"... 错误有几个原因。
  • 您还两次为您的 textarea 提供了相同的名称。继续调试。
  • 您能告诉我原因以及我应该更改哪一个以使 PHP 函数正常工作吗?
  • 您是否开启了错误?如果你只有这两个元素,你会画几个警告。您还使用 javascript 提交表单吗?你一定是因为没有提交按钮。
  • 请查阅处理表单的手册php.net/manual/en/tutorial.forms.php

标签: php html forms material-design


【解决方案1】:

尝试在&lt;?php 开始标记下直接添加error_reporting(E_ALL),以确保您的错误报告显示所有内容。

【讨论】:

  • 你没看到问题下面留下的cmets吗?另外,它已经解决了(在那里)。您的“尝试...”实际上是拉斯克拉特已经建议该人检查错误的评论。
  • 把某人送回他们已经尝试过的事情有点毫无意义。 cmets 中没有任何地方指定我建议的代码。只是被告知去进一步调查。至于@fred-ii,除了批评,你对他没有任何帮助。所以,在我看来,是为了帮助那些试图学习编码的人。也许一点帮助会让他们受益。显然,他不是“我可以拥有代码吗”用户。
  • 我认为@Fred-ii- 的意思是我告诉 OP 看看是否有错误,他们承认有,所以他们至少知道如何查看错误。他们的一点调查会发现你的建议。其次,OP 按照 cmets 中的建议进行操作,将 &lt;div 转换为 &lt;input 并将其移动到表单中。用户随后报告问题已解决,因此您的回答是多余的,并没有解决实际问题。您的回答最多应该是一条评论。
  • @JamesWalker I believe this is close enough - OP 回复 this comment 这确实意味着他们毕竟收到了通知。你的“你对他没有任何帮助,除了批评”评论,不合时宜。我已经给了他们足够的阅读量。
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2012-02-28
  • 1970-01-01
  • 2021-03-04
  • 2021-09-18
  • 2010-12-18
相关资源
最近更新 更多