0

好的,所以我正在尝试创建一个基于 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 文件中提取信息并将所有产品合并到一个购物车中。我正在寻找更容易管理的东西。

最后一点,我有很多后台功能在后面工作,只是获取信息并设置实际的购物车本身,所以如果你觉得需要我给你更多代码,请问!另外,如果我对任何事情含糊不清,请不要犹豫告诉我,以便我(希望)纠正问题或回答您的问题。

提前感谢您提供的所有帮助!对此,我真的非常感激。:)

4

1 回答 1

0

您的代码没有显示 function 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的 a 添加到$output.

(3) 如果$category是空字符串,则将every<product>添加到$output.

选择:

更改功能get_xml_catalog($category)以在该位置进行选择。这可能最好用xpath.

于 2013-07-24T19:25:12.337 回答