在多级类别应用程序应用程序php mysql PDO OOP中显示来自特定类别的产品



我正在创建一个非常简单的应用与该类别相关的产品。该应用不是电子商务,它只是从数据库中摘取数据,显示该数据,当用户单击链接并将数据写入产品和类别表中时。当用户单击相应类别时,我要尝试执行的接口是显示链接产品的一种方法。唯一的问题是类别是多级的,在某些地方我完全卡住了,不知道如何传递变量或提取适当的选择语句。我的问题我一直在浏览并尝试查看吃饭的示例,这些示例显示了如何显示产品列表,而没有用于多级子类别。我需要添加一个URL,其中链接是与该产品关联的类别。我有两个简单的表和一个动态菜单。

--
-- Table structure for table `products1`
--
CREATE TABLE IF NOT EXISTS `products1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`description` text NOT NULL,
`price` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
--
-- Table structure for table `menu`
--
CREATE TABLE IF NOT EXISTS `menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 NOT NULL,
`parent_id` int(11) NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=136 ;

表菜单只是将父类别与兄弟姐妹联系起来的一种方式。由于我有超过103个类别,所有这些类别都通过其父ID相互关联,因此我不知道如何编写逻辑以在菜单中显示活动类别。我的逻辑有缺陷。无法弄清楚我需要进行哪种比较,需要执行适当的类别ID,具体取决于活动li标签的位置。

这是该表生成的菜单。

        <?php 
        $items = $rows;
        $id = '';
        echo '<ul class="dl-menu">';
        foreach($items as $item){
            if($item['parent_id'] == 0) {
                echo '<li><a href="?category=<?php echo $category->id?>">'.     $item['name'] . '</a>';
                $id = $item['id'];
                sub($items, $id);
                echo '</li>';
            }
        }
        echo "</ul>";
        function sub($items, $id){
            echo '<ul class="dl-submenu">';
            foreach($items as $item){
            if($item['parent_id'] == $id) {
                echo '<li><a href="?category=<?php echo $category->id?>">'. $item['name'] . '</a>';
        //      $id = $item['id'];
                sub($items, $item['id']);
                echo '</li>';
                }
            }
            echo '</ul>';
        }
?>

我的问题在于回荡类别ID的代码行。我不知道我需要输出什么脚本,我的意思是我需要比较的逻辑才能获得结果。

输出类别ID的当前行看起来如下:

echo '<li><a href="?category=<?php echo $category->id?>">' . $item['name'] . '</a>';

由于这些是来自PHP内部的每个元素,因此您不需要Echo内部的标签,因此将这些行更改为:

echo '<li><a href="?category=' . $category->id . '">'. $item['name'] . '</a>';

如果我正确理解这个问题,应该解决您的问题。

最新更新