Hola compañeros aca con una duda, estoy desarrollando un menú que traigo de la BD, por ahora lo tengo en un solo archivo y lo necesito separar en modelo-vista-controlador, el gran problema con el que me encontre es que tiene una funcion recursiva y por ahi no se como llamarlo en la vista aca les dejo lo que tengo por si alguien me de una idea.
esta es la BD:
Código SQL:
Ver originalCREATE TABLE IF NOT EXISTS `menu` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`id_parent` INT(11) NOT NULL DEFAULT '0',
`link` VARCHAR(255) NOT NULL,
`order` INT(11) NOT NULL DEFAULT '0',
`title` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL DEFAULT '',
`level` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ;
INSERT INTO `menu` (`id`, `id_parent`, `link`, `order`, `title`, `level`) VALUES
(12, 0, '', 0, 'Office Furniture', 0),
(13, 12, '', 0, 'Chairs', 0),
(14, 12, '', 0, 'Work Tables', 0),
(15, 12, '', 0, 'Workstations', 0),
(16, 12, '', 0, 'Storage', 0),
(17, 12, '', 0, 'Conference Tables', 0),
(18, 13, '', 0, 'with spagh', 0),
(19, 13, '', 0, 'without spagh', 0),
(20, 18, '#', 0, 'Triangle', 0),
(21, 18, '#', 0, 'Sqare', 0),
(22, 19, '#', 0, 'Simple', 0),
(23, 19, '#', 0, 'Complex', 0);
Y este el script php:
Código PHP:
$db = new PDO('mysql:dbname=db_menu', 'root', '123456',
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
function createsubmenu($item)
{
global $db;
$subsel = $db->prepare('SELECT id, link, title, level FROM menu WHERE id_parent = :parent ORDER BY `order`');
$subsel->execute(array('parent' => $item));
$text = '';
foreach ($subsel as $i) {
$text .= '<li class="menucolor' . ($i['level'] - 1) . '">'
.'<a href="' . htmlspecialchars($i['link']) . '">' . htmlspecialchars($i['title']) . '</a>'
. createsubmenu($i['id']) . '</li>';
}
if ($text == '') {
return '';
}
return '<ul id="red" class="treeview-red">' . $text . '</ul>';
}
echo createsubmenu(0);
Gracias de antemano por su tiempo y ayuda.