AJAX / XML / PHP - 比较两个查询的结果并显示它们

时间:2011-09-30 16:20:10

标签: php javascript ajax

现在我有一个查询返回结果列表,并使用AJAX将它们作为链接显示在页面上。我有另一个工作查询,我想用它来比较第一个,但我不确定如何做到这一点(新的AJAX)。

我最终要做的是在两个查询的结果中找到匹配并格式化匹配的链接($(“#judgeveCompleted”)。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; "

希望这是有道理的。

2 个答案:

答案 0 :(得分:1)

我会用PHP来解决这个问题:

  • 运行第一个查询,将结果保存到数组(A1)
  • 运行第二个查询,将其结果保存到另一个数组(A2)
  • (你可以把它写成一个查询来减轻数据库负载,如果这是一个问题)

第一个数组的结果比第二个数组多,所以迭代A1。在每个值上,检查它是否存在于A2中。当你去的时候,将匹配混合到一个XML节点中,然后错过另一个XML节点。

使用AJAX抓取XML并分离出两个节点(匹配和未命中),然后根据需要遍历每个节点以应用样式。

答案 1 :(得分:0)

您可以尝试UNION这2个查询并在javascript中实现比较逻辑。