2011-06-06 101 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