如何在成功提交后使用php PDO清除表单

时间:2013-11-26 05:26:56

标签: php jquery-mobile

我在我的表单中有这个PHP代码。我用pdo进入mysql数据库并插入数据。一个简单的表单,其中使用输入他的名字,电子邮件,评论和复选框。我在jquery移动环境中使用它。

<?php
    $hostname = 'localhost';
    $username = 'root';
    $password = '';
    $dbName = 'database';

try
    {
        $dbh = new PDO("mysql:host=$hostname;dbname=$dbName", $username, $password);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $dbh->exec('SET NAMES "utf8"');
    }
        catch(PDOException $e) 
    {
        echo "Sorry, you are experiencing server Error: ".$e->getMessage();
        exit(); 
    }     

if(isset($_POST['sendEmail'])) 
{
  try
  {
      $senderName   = $_POST['sendName'];
      $senderEmail  = $_POST['sendEmail'];
      $comments     = $_POST['comments'];
      if (isset($_POST['offer'])) {
           $offer = 1;   
      } else {
           $offer = 0;   
      }
      $dateTimeSent = date('Y-m-d H:i:s');

      $q= "INSERT INTO comments(sendName, sendEmail, comments, offer, dateTimeSent) VALUES (:sendName, :sendEmail, :comments, :offer, :dateTimeSent);";
      $query    = $dbh  ->prepare($q);
      $results  = $query->execute(array(
          ":senderName"=>$sendName,
          ":senderEmail"=>$sendEmail,
          ":comments"=>$comments,
          ":dateTimeSent"=>$dateTimeSent,
          ":offer"=>$offer,
      ));
  }
    catch (PDOException $e)
  {
    $error = 'Error adding elements to database: ' . $e->getMessage();
    include 'error.html.php';
    exit();
  }

  exit();
}

&GT;

这是我使用的表格:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" name="comments" id="comments">  

<div data-role="fieldcontain">
    <label for="sendName">From: </label>
    <input type="text" name="sendName" class="validate[required"] id="sendName" data-clear-btn="true" placeholder="Enter name" required >
</div>

<div data-role="fieldcontain">
    <label for="sendEmail">Email: </label>
    <input type="email" name="sendEmail" id="sendEmail" class="validate[required,custom[email]]"  data-clear-btn="true" placeholder="valid_email@true.com" required >
</div>

<label for="comments"></label>
    <textarea name="comments" id="comments" value="comments"></textarea> 
<label for="offer">

<label for="offer">
    <input name="offer" type="checkbox" id="offercheckbox">Please check</label>
</label>

<input type="button" name="Send Email" value="Submit" id="suggestSubmit" onclick="submitForm()"> 

</form>

我的问题是我试图找出如何在成功提交后清除表单字段。我找到了使用Jquery onclick函数的选项。我在表单标记结尾之前插入了这段代码:

<script>
  function submitForm() {
    $('form[name="comments"]').submit();
    $('input[type="email"], textarea').val('');
    $('input[type="text"], textarea').val('');
  }
</script>

但是,如果表单已提交但在jquery验证中失败,即使提交失败,所有字段也将被清除,因为但不限于表单验证。因此,用户在修复错误时必须重新输入所有表单字段中的所有数据。不好。

我在这里检查了其他答案和其他在线资源,但我似乎无法使其工作。

如果我在jquery mobile中使用PHP-PDO,那么在成功提交后清除表单字段的最佳方法是什么?

PS。我是新手。谢谢。

1 个答案:

答案 0 :(得分:0)

成功提交后,http使用header函数重定向到表单页面,这是一个非常新的请求,应该查看页面中具有空状态的表单元素,就像用户访问此页面一样第一次。

在打开此页面时查看用户的成功消息也很好,以便了解他之前的请求已成功处理。