2009-08-25 129 views
2

我正在构建一个加载我们的MySQL数据库内容进行编辑的页面。表中的每一行都位于页面上一个单独的,可编辑的textarea中。我需要用户能够更新每一行(即将其内容发送到数据库),而无需重新加载整个页面,只需单击一个负责该特定文本区域的按钮即可。使用textarea内容更新MySQL而不重新加载

我的理解是这样的过程会涉及一些JavaScript,但可悲的是,我知道没有 - 我做了所有我可以用PHP,所以我需要在这个方向的指向。基本上我的问题(我认为)是如何从已编辑的textarea中获取文本并将其发送到MySQL而无需重新加载页面。如果我朝着错误的方向前进,我会非常乐意听取其他建议。

回答

6

是的这将需要JavaScript。即一个异步调用你的PHP页面。这通常被称为AJAX。

我讨厌成为这里的“使用jquery”的答案,但学习jQuery使用基于AJAX的调用的峰值对于你从这样的调用中获得的价值是非常低的。

的文档具有great examples,其中大部分是非常简单的。

+2

没有什么错是当我读它,我在想“使用jQuery”的答案:) – Waggers 2009-08-25 10:33:39

+0

,请让别人说使用jQuery,因为我”我已经在两天内完成了两次! – Dorjan 2009-08-25 10:54:10

-1

尝试阅读关于Ajax的更多信息。它有很多的库。

2

这正是AJAX做什么:异步JavaScript和XML。它使您可以将请求发送到服务器,而无需重新加载页面。

我建议从jQuery开始,您会注意到在StackOverflow社区以及其他地方有很多支持,并且这使得跨浏览器AJAX请求变得非常容易。

随着你的页面上的jQuery脚本,你可以做这样的事情:

$("#id-of-the-button-the-user-will-click").click(function() { 
    $.post('/path/to/your/script.php', { field1: value1, field2: value2 }, function(data) { 
     // This function is called when the request is completed, so it's a good place 
     // to update your page accordingly. 
    }); 
}); 

了解细节仍需要JavaScript的一个透彻的了解,所以真的做的最好的事情是在下潜和启动编写(从而学习)很多JavaScript。 AJAX是一个很好的开始。

0

您可以JavaScript事件添加到textarea的:当用户完成编辑的文本并离开输入会发生

onblur="sendUpdate(this.value)" 

此事件。

在示例中,“this”引用当前textarea组件。

然后使用Ajax,如前所述。一个例子是:

function sendUpdate (text) { 
    $.post('script.php', {textarea_value:text},function(){}); 
} 
0

您需要从您的脚本(JavaScript)异步调用服务器。使用ajax来实现这一点。您需要查看使用XMLhttp对象与客户端脚本(javascript)与服务器/数据库进行通信。您不需要使用按钮单击来提交整个页面,而是您可以在按钮单击事件或onBlur事件或onTextChange事件等中调用javscript代码...

jQuery是一个JavaScript框架库,可帮助您减少执行此操作的代码行数。但它不一定需要使用jQuery。您可以在不使用jQuery的情况下执行ajax调用.jQuery的使用将减少行数。

入住这

http://docs.jquery.com/Ajax/jQuery.ajax

0

你一定会需要的JavaScript,并发送一个HTTP请求到PHP服务器,而无需重新加载页面的一些方法。一般来说,这就是所谓的AJAX。

这可能是最好的使用JavaScript库,因为AJAX对于开始JavaScript开发者来说有点复杂。一个不错的选择是JQueryMooTools

AJAX库通常使用XMLHttpRequestJSONP来实现HTTP请求。理解这些应该会让它更容易一些。

选择textarea元素,更新它,将需要使用DOMhttp://www.w3.org/DOM/)的。大多数JavaScript框架现在使用CSSXSLT选择器的实现来查询DOM。

0

你可以这样做精没有JavaScript。只要有各自的textarea +按钮,在自己的<形式>,然后提交表单,更新从textarea的值数据库的脚本,并返回一个:

204 No Content 

状态,而不是200 OK和一个新的页面。旧页面将保持放置状态。

+0

一般而言,即使您使用AJAX,这也是一种有趣的无JavaScript回退策略。 – 2009-08-26 17:19:53

0

您可以通过添加一个jQuery功能拿起所作的任何更改即开始:

$('#inputelement').on('input propertychange', function(){ 
      alert("Alert to test jquery working"); 
     }); 

你应该再使用AJAX来创建数据PHP脚本(如PHP是你如何更新到服务器)并使用GET或POST变量发送。然后使用该脚本文件将更改上传到您的服务器。例如

$('#yourElement').on('input propertychange', function(){ 

     $.ajax({ 
      method: "POST", 
      url: "updatedatabase.php", 
      data: {content: $("#yourElement").val()} 
     }) 
      .done(function(msg) { 
      alert("Data Saved: " + msg); 
     }); 

    }); 

脚本上传:

session_start(); 

    if(array_key_exists("content", $_POST)){ 

    include("connection.php");//link to your server 

    $query = "UPDATE `users` SET `updateColumn`= '".mysqli_real_escape_string($link, $_POST['content'])."' WHERE id= ".mysqli_real_escape_string($link, $_SESSION['id'])." LIMIT 1"; 

    if(mysqli_query($link, $query)){ 
     echo "success"; 

    }else { 
     echo "failed"; 
    } 

}