2011-04-18 73 views
0

我想要做的是調用一個php類來更新連接的mysql數據庫,而不必更改頁面。我想我可以用Ajax來做,但我不確定。我已經看過很多使用表單的例子,但我正在尋找一個簡單的<a href="#">link</a>通過PHP中的鏈接更新MySQL數據庫

+0

單擊鏈接時調用ajax函數。 – 2011-04-18 04:36:44

+0

Ajax是要走的路,下面是jQuery中的簡化示例:'$('#elID')。click(function(){$。get('urlToChangeDB'); return false});'。如果你能更清楚些,我們可以幫助你更好。 – Khez 2011-04-18 04:37:22

+0

你想*發送*更新到mysql,或更新數據庫本身(兩者都是可能的,但有不同的實現) – 2011-04-18 04:43:06

回答

1

要擴大Khez的評論,使用jQuery你可以使用類似:

<html> 
<head> 
<script type="text/javascript" src="PathToJquery"></script> 
<script type="text/javascript"> 
$(document).ready (function() 
{ 
    $('#elID').click(function() 
    { 
     $.get('urlToChangeDB?variable=value'); 
    } 
} 
</script> 
</head> 
<body> 
<a href="#" id="elID">Link</a> 
</body> 
</html> 

您需要inlude jQuery的libray

0

最簡單的方法是使用一些Ajax,很可能通過JQuery的。一個簡單的例子是將採用這樣的形式像

form.php的

<form id="ratingform" name="ratingform">   
    <input type="text" id="id" name="id" /> 

    <input type="text" id="rating" name="rating" /> 

    <input type="submit" id="loginsubmit" name="loginsubmit" value="Submit!" /> 
</form> 

然後用一些JQuery的鏈接它攔截的形式,並將其發送到PHP文件

的jquery.js

$(document).ready(function(){ 
    $("#ratingform").submit(function(event) { 
     $.ajax({ 
      type: "POST", 
      url: "rate.php", 
      data: $('#ratingform').serialize(), 
       datatype: "json", 
      success: function(data){ 
       var ret = jQuery.parseJSON(data); 
        if(ret.result == "true") 
         // Success 
        else 
         // Failure 
      } 
    }); 
    event.preventDefault(); 
    }); 
}); 

然後,創建PHP文件,把它解釋

rate.php

$stmt = $sql->dbh->prepare("INSERT INTO `rating` (`ID`, `Rating`) VALUES (:id, :rating)"); 

$stmt->bindValue(':id', $_POST['id']); 
$stmt->bindValue(':rating', $_POST['rating']); 

$result = $stmt->execute(); 

echo json_encode(array('result' => "{$result}")); 

die(); 

實質上,JQuery的攔截表單動作和取消它,然後使用serialize()至打包的數據並將其設置爲rate.php作爲POST數據。然後rate.php將其作爲普通POST提交進行處理,並且echo()是「真」或「假」的JSON編碼結果,具體取決於SQL查詢是否成功,並返回給JQuery腳本。 JQuery解釋JSON對象,然後根據SQL Query是否成功執行操作。