好的,所以我正在尝试创建一个基于PHP的购物车,从目录的XML文件中读取。唯一的问题是当我将信息打印到我的网站上时,它会在XML文件中打印出所有内容。我需要将它们分类(即鞋子,服装等)并且只打印出被叫类别。
XML文件的结构如此(为组织目的添加了额外的空格):
<items>
<product>
<id> TSHIRT01 </id>
<title> Red T-Shirt </title>
<category> apparel </category>
<description> T-Shirt designed by Sassafrass </description>
<img> ../images/apparel1.jpg </img>
<price> 5.99 </price>
</product>
</items>
我使用以下代码将信息打印到我的网站上:
<?php echo render_products_from_xml(); ?>
这是PHP命令的功能,它只是设置输出到网站本身的结构:
function render_products_from_xml(){
$counter=0;
$output = '<table class="products"> <tr>';
foreach(get_xml_catalog() as $product)
{
$counter++;
$output .='
<td>
<div class="title">
<h2> '.$product->title.' </h2>
</div>
<div class="cells">
<img src="'.$product->img.'" height="220" width="170" />
</div>
<div class="description">
<span>
'.$product->description.'
</span>
</div>
<div class="price">
$'.$product->price.'
</div>
<div class="addToCart">
<a href="addToCart.php?id='.$product->id.'">Add To Cart</a>
</div>
</td>';
if($counter%4 == 0)
{
$output .='<tr>';
}
}
$output .='</tr></table>';
return $output;}
我希望PHP函数最终看起来像这样(所有大写的更改):
<?php echo render_products_from_xml($CATEGORY=='APPAREL'); ?>
或类似的东西:
<?php echo render_APPAREL_products_from_xml(); ?>
只需要一些提示,我可以添加一些函数来帮助分类从XML文件中读取的信息。 此外,我不想为每个类别创建新的XML文件,因为我需要复制所有代码以从单独的XML文件中提取信息,并将所有产品合并到一个购物车中。我正在寻找一些更容易管理的东西。
最后一点,我有很多后台功能在后面工作只是抓取信息并设置实际的购物车本身,所以如果你觉得我需要给你更多的代码,请问!此外,如果我对任何事情都含糊不清,请不要犹豫告诉我,以便我(希望)能够纠正问题或回答你的问题。
非常感谢您提供的所有帮助!对此,我真的非常感激。 :)
答案 0 :(得分:0)
您的代码未显示函数get_xml_catalog()
,这显然是在获取XML。
因此,使用您提供的代码,您可以对函数render_products_from_xml()
进行相对较小的更改:
function render_products_from_xml($category) {
$counter=0;
$output = '<table class="products"> <tr>';
foreach (get_xml_catalog() as $product) {
if ((string)$product->category == $category || $category == '') {
$counter++;
$output .= 'all that stuff';
if ($counter % 4 == 0) $output .= '<tr>';
} // if
} // foreach
$output .='</tr></table>';
return $output;
}
评论:
(1)现在通过传递参数$category
:
echo render_products_from_xml('apparel');
(2)在foreach
循环中,只有<product>
及其类别== $category
被添加到$output
。
(3)如果$category
为空字符串,则每<product>
都会添加到$output
。
<强>替代:强>
更改功能get_xml_catalog($category)
以在该位置进行选择。这可能最适合xpath
。