XML と php を使用して製品を並べ替えようとしてい
ます。次のような方法で結果をページに表示したいと考えています。
A) まず、コードはフィールド (Code) に基づいて urisegment に従って XML データを抽出し、segment($id) に従って関連する特定の製品を提供します。
B) 次に、上記の製品を再度表示することなく、同じカテゴリに属するすべての製品を同じページに表示できます。
私のクエリ文字列は次のようになります: http://myspec.com/productspec/listings/10004/EDEN%2046cmTROUGH
<?
$list = groupBy(file_get_contents('XML/output.xml'), "WhatMoreProductSubRange");
$id=urldecode($this->uri->segment(4)); // URL values for WhatMoreProductSubRange
$id2=urldecode($this->uri->segment(3)); // URL values for Code
foreach ($list[$id] as $product )
{
if ($id2==$product->Code)
{
$subcat=$product->WhatMoreProductSubRange;
?>
<h1><?=$product->Name?> </h1>
<?
}
else {
?>
<h2><?=$product->Name?> </h2>
<?
}
}
?>
<?
function groupBy($xml, $categoryName) {
$xml = new \SimpleXMLElement($xml);
$category = array();
foreach ( $xml as $row ) {
$attr = $row->attributes();
if (! isset($attr->$categoryName)) {
trigger_error("$categoryName does not exist in XML");
break;
}
$category[(string) $attr->$categoryName][] = $attr;
}
return $category;
}
?>
XML : output.xml
<?xml version="1.0" standalone="yes"?>
<Rows>
<Row Code="1002" Name="EDEN TROUGH Terracotta Blue" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
<Row Code="1003" Name="EDEN TROUGH Terracotta Black" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
<Row Code="1004" Name="EDEN TROUGH Terracotta Orange" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
<Row Code="1005" Name="EDEN TROUGH Terracotta blue" WhatMoreProductRange="Eden"
WhatMoreProductSubRange="EDEN 46cmTROUGH" WhatMoreWebCategory="Garden Products" />
</Rows>
このコードは、その WhatMoreProductSubRange に属するすべての製品を出力しますが、製品リスト (パート B で言及) で製品 (パート A で言及) を繰り返したくありません。 xml 解析へ。親切に私を助けてください。