I have the following db and php. I am tring to make a unodered list of category menu. The orginal php is working by itself. I am trying to convert this to MVC in codeigniter and the following is what I got so far and not working. If someone can point out what I am doing wrong, I will apprecitate it.
Database
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`shortdesc` varchar(255) NOT NULL,
`longdesc` text NOT NULL,
`status` enum('active','inactive') NOT NULL,
`parentid` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
--
-- Dumping data for table `categories`
--
INSERT INTO `categories` (`id`, `name`, `shortdesc`, `longdesc`, `status`, `parentid`) VALUES (1, 'shoes', 'Shoes for boys and girls.', '', 'active', 7);
INSERT INTO `categories` (`id`, `name`, `shortdesc`, `longdesc`, `status`, `parentid`) VALUES (2, 'shirts', 'Shirts and blouses!', '', 'active', 7);
...
...
menu.php (original php and working)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>View Tasks</title>
</head>
<body>
<h3>Menu</h3>
<?php
function make_list ($parent) {
global $data;
echo '<ul>';
foreach ($parent as $task_id => $todo) {
echo "<li>$todo";
if (isset($data[$task_id])) {
make_list($data[$task_id]);
}
echo '</li>';
}
echo '</ul>';
}
$dbc = @mysqli_connect ('localhost', 'root1', 'root', 'ci_day6') OR die ('<p>Could not connect to the database!</p></body></html>');
$q = 'SELECT id, parentid, name FROM categories ORDER BY parentid ASC';
$r = mysqli_query($dbc, $q);
$data = array();
while (list($id, $parentid, $name) = mysqli_fetch_array($r, MYSQLI_NUM)) {
$data[$parentid][$id] = $name;
}
make_list($data[0]);
?>
</body>
</html>
This php output the following html
Menu
* clothes
o shoes
o shirts
o pants
o dresses
* fun
o toys
o games
My MVC so far and not working.
cat_menu_model.php(model)
<?php
class Cat_menu_model extends Model
{
function Cat_menu_model()
{
parent::Model();
}
function get_categories_nav()
{
$data = array();
$this->db->select('id,name,parentid');
$this->db->where('status', 'active');
$this->db->orderby('parentid','asc');
$this->db->orderby('name','asc');
$Q = $this->db->get('categories');
if ($Q -> num_rows() > 0){
foreach ($Q -> result_array() as $row){
$data[$row['parentid']][$row['id']] = $row['name'];
}
}
$Q->free_result();
return $data;
}
}
cat_menu.php (controller)
<?php
class Cat_menu extends Controller
{
function Cat_menu()
{
parent::Controller();
}
function make_menu($parent)
{
$this->load->model('cat_menu_model');
$data['navlist'] = $this->cat_menu_model->get_categories_nav();
$this -> load ->view('menu');
}
}
menu.php(view)
<?php
if (count($navlist))
{
$this->make_menu($data[0]);
echo '<ol>';
foreach ($parent as $id => $catname) {
echo "<li>$catname";
if (isset($data[$id])) {
make_menu($data[$id]);
}
echo '</li>';
}
echo '</ol>';
}
?>
It shows an error messages.
A PHP Error was encountered
Severity: Warning
Message: Missing argument 1 for Cat_menu::make_menu()
Filename: controllers/cat_menu.php
Line Number: 10