【问题标题】:Pull xml records with a certain field filled?提取填充了某个字段的xml记录?
【发布时间】:2011-08-18 21:00:04
【问题描述】:

我花了几天时间研究和阅读如何从我的数据库中的表生成 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>');

                                                     });
                            }
                            });

【问题讨论】:

    标签: php jquery mysql xml


    【解决方案1】:

    只需将 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注入)。

    【讨论】:

    • 谢谢。我通过 SQL 过滤记录,只提取特定类别的记录。然后我按类别排序。
    猜你喜欢
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多