2011-06-06 100 views
1

我有两个名为'nodes'和'joinTable'的MySQL表,如下所示。我需要基于一个节点ID的AJAX/jQuery的/ MySQL的调用(在第一个表)返回以下和推动或地方的数据分成两个JavaScript数组和一些变量:?AJAX,连接表和复杂查询

  1. 回报“类型”和'文本'从 节点表。这些将被放置在 一个单独的变量以及id。
  2. SELECT to_ FROM joinTable WHERE 从_ =“$ ID”,然后......经过 节点表,以获取所有相关 “类型”和“文本”每个“_from”的 和场所或 将这些数据推送到一个javascript数组 ,以及 nodeID。
  3. SELECT from_ FROM joinTable WHERE到_ =“$ ID”和 然后......经过的节点表 让所有对每个“_TO”和 地方的相关“类型”和 “文”或者将它们与nodeID一起推入名为'pointsFrom' 的 javascript数组。

节点:

nodeID type text 
0   1 Dr. Joelson 
1   1 Ms. Appletree 
2   1 Mr. Miller 
3   1 Dr. Wilson 
4   0 Pediatrician 
5   0 Teacher 
6   0 Waiter 
... 

joinTable:

recordID from_ to_ weight type typeText 
0    0 4  1  1  isa 
1    1 5  4  1  isa 
2    2 6  3  1  isa 
... 

这AJAX选项overwelming我,我没有做一个MySQL之前调用此 复杂。我不介意更多地了解适用的jQuery方法,但可以采用不同的方法。


编辑: 服务器正在运行PHP。

+0

啊...我不认为Javascript可以访问MySQL。什么是您的网络服务器运行? PHP? JSP? – 2011-06-06 21:14:16

+0

服务器正在运行php。 AJAX技术访问MySQL。 – 2011-06-06 21:16:35

回答

1

您需要先选择像PHP这样的服务器端语言来查询数据库并将JSON响应发送回客户端。在另一端,使用像jQuery JavaScript框架,使一个AJAX调用说,从你的JavaScript代码在服务器上的PHP脚本:

// Get your nodeId from the user 
var id = 2; 

$.post("/scripts/doTheQuery.php",{ 
    nodeId: id 
},function (result) { 
    // when query finishes 
    // do stuff with result 
    console.log(result); 
} 

至于你的SQL问题: 1. SELECT type,text FROM nodes WHERE nodeID = {$nodeIDinQuestion}

我会踢联合查询,并让你获得第一。

+0

谢谢mikermcneil。这与我的基本设置非常相似 - 我已经解析了一个字符串以获取页面上的输出,并提供了问题1的基本解决方案。我很欣赏这一点,因为它表明我可能走在正确的道路上。 ......我不确定解析字符串是否是最好的(或唯一的)方法。我需要查找'JSON'。 – 2011-06-06 21:22:45

+0

JSON代表Javascript对象表示法,仅仅是一种用于传输数据的编码,如XML。您可以定义javascript对象(具有更具体的规则),而不是XML实体。PHP有一个名为encode_json的类,它将PHP对象或关联数组转换为有效的JSON。例如, {“success”:true,“users”:[{“name”:“mike”},{“name”,“john”}]} – mikermcneil 2011-06-07 06:33:49

+0

再次感谢mikermcneil。我把我的MySQL查询传递回页面。它通过'json_encode(...)'作为php数组发送,并通过jQuery的'parseJSON'在页面中找到。如果我理解正确,细微的区别是它可以像数组那样访问,它是一个对象(例如object [3] [1])。像推,弹出,长度等数组功能将无法正常工作。所以我做的很好,但会研究将JavaScript对象转换为JavaScript数组。再次感谢! – 2011-06-07 15:38:53