2011-09-30 50 views
0

現在我有一個查詢返回結果列表,並將它們顯示爲使用AJAX的頁面上的鏈接。我有另一個工作查詢,我想用來比較第一個,但我不確定如何做到這一點(新的AJAX)。AJAX/XML/PHP - 比較兩個查詢的結果並顯示它們

我想要做的最終是在兩個查詢的結果中找到匹配,並格式化與不匹配風格的鏈接($(「#faramcompleted」)。append)。

PHP(xml2.php):

$query = "SELECT Name FROM judges LEFT JOIN $court 
     ON ($court.JudgeID = judges.JudgeID) 
     where Month='$month' and Year='$year' order by Name asc;"; 

$resultID = mysql_query($query, $linkID) or die("Data not found."); 

$xml_output = "<?xml version=\"1.0\"?>\n"; 
$xml_output .= "<entries>\n"; 

for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ 
    $row = mysql_fetch_assoc($resultID); 
    $xml_output .= "\t<entry>\n"; 
    $xml_output .= "\t\t<name>" . $row['Name']. "</name>\n"; 
    $xml_output .= "\t</entry>\n"; 
} 

$xml_output .= "</entries>"; 

echo $xml_output; 

AJAX/JS:

$.ajax({ 
     type: "POST", 
     url: "xml2.php", 
     data: 'court='+x, 
     dataType: "xml", 
     success: parseXml 
     }); 

function parseXml(xml) 
{ 
    $(xml).find("entry").each(function() 
    { 
    $("#judgesCompleted").append('<a href="viewreport.php">'+$(this).find("name").text()+'</a><br />'); 
    }); 
} 

我的新查詢:

$query2 = "SELECT Name FROM judges 
LEFT JOIN $court ON ($court.JudgeID = judges.judgeID) 
LEFT JOIN users ON ($court.userID = users.userID) WHERE Month='10' AND Year='2011' AND users.type = 'user' ORDER BY Name ASC; " 

希望這是有道理的。

回答

1

我做繁重在PHP:

  • 運行第一查詢,保存它導致到一個數組(A1)
  • 運行所述第二查詢,其結果保存到另一陣列(A2 )
  • (你也許可以把它寫成一個查詢,以減輕負荷DB如果這是一個問題)

第一陣列將具有比第二個結果,所以遍歷A1。在每個值上檢查它是否存在於A2中。隨着時間推移,將匹配轉換爲一個XML節點,並將未命中轉換爲另一個XML節點。

使用AJAX抓取XML並單獨退出兩個節點(匹配和未命中),然後遍歷每個節點以根據需要應用樣式。

0

您可以嘗試聯合2個查詢並在javascript中實現比較邏輯。