我花了几天时间来计算和阅读如何从我的数据库中的表生成xml文件。我让它工作正常并生成一个有效的xml文件供我解析。此文件包含超过13000条记录,我只需要提取记录以显示给某个xml字段(类别)包含数据的用户。可以这样做吗?我能想到的另一种方法是通过提取记录并生成xml文件的php脚本来过滤这些记录。任何帮助表示赞赏。我的代码低于我用于创建xml和客户端jquery代码以显示xml内容。我知道我的jquery脚本只是因为测试而显示了2个xml字段。
感谢。
用于生成xml文件的PHP代码
$query = "SELECT name,test_code,cpt_code,components FROM tm_test";
$result = mysql_query($query);
$doc = new DomDocument('1.0');
header('Content-Type: application/xml; charset=ISO-8859-1');
// create root node
$root = $doc->createElement('tests');
$root = $doc->appendChild($root);
while($array = mysql_fetch_array($result)) {
// add node for each row
$occ = $doc->createElement('test');
$occ = $root->appendChild($occ);
$child = $doc->createElement('name');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['name']);
$value = $child->appendChild($value);
$child = $doc->createElement('test_code');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['test_code']);
$value = $child->appendChild($value);
$child = $doc->createElement('cpt_code');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['cpt_code']);
$value = $child->appendChild($value);
$child = $doc->createElement('components');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['components']);
$value = $child->appendChild($value);
$child = $doc->createElement('method');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['method']);
$value = $child->appendChild($value);
$child = $doc->createElement('clinical_indication');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['clinical_indication']);
$value = $child->appendChild($value);
$child = $doc->createElement('category');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($array['category']);
$value = $child->appendChild($value);
}
$doc->save('testlist.xml');
echo $doc->saveXML();
?>
jQuery脚本显示所有记录
$(document).ready(function(){
$.ajax({
type: "GET",
url: "testlist.xml",
dataType: "xml",
success: parseXml
});
function parseXml(xml) {
$(xml).find('test').each(function(){
$("#testList").append('<li><div data-role="collapsible" data-collapsed="true" data-theme="b"><h3>' + $(this).find("name").text() + '</h3>' + '<p>' + $(this).find("test_code").text() + '</p></div></li>');
});
}
});
答案 0 :(得分:0)
只需将ajax调用中所需的类别传递给PHP。
$.ajax({
type: "GET",
url: "testlist.xml",
data: "category=the_category_you_want",
dataType: "xml",
success: parseXml
});
该类别将以$_GET['category']
的形式提供给您的PHP脚本。
使用WHERE
子句更改您的SQL查询以按此类别进行过滤:
$query = "SELECT name,test_code,cpt_code,components FROM tm_test
WHERE category = ?";
并绑定变量值(以防止SQL注入)。