2013-11-26 77 views
0

我在表單中有這個php代碼。我用pdo進入mysql數據庫並插入數據。一個簡單的表單,用戶輸入他的姓名,電子郵件,評論和複選框。我在jQuery的移動環境中使用它。 ?如何在成功提交後使用php PDO清除表單

<?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(); 
} 

>

這是我使用的形式:

<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="[email protected]" 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。我是一個新手。謝謝。

回答

0

成功提交後,使用header函數將http重定向到表單頁面,這是一個相當新的請求,它應該以空狀態查看頁面中的表單元素,就像用戶第一次訪問此頁面一樣。

在打開此頁面時爲用戶查看成功消息也很好,以便了解他先前的請求已成功處理。

+0

謝謝您的即時回覆。我一定會嘗試這個選項。一旦我完成代碼,我會進行檢查。 – Synod

+0

謝謝@ Ma'moon Al-Akash,我不僅做了一次成功的清算,而且還通過將UX重定向到一個thnx頁面來改進用戶體驗(稍後我會做,但我一舉兩得)。放置標題一直是個挑戰,但我能夠通過使用邏輯和反覆試驗來找到它。 – Synod

+0

還有一件事,我注意到我應該在表單標籤中放置data-ajax =「false」才能使其工作。 – Synod

相關問題