2011-04-18 47 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是否成功执行操作。