Вот код: PHP: <?php header('Content-Type: text/html; charset=utf-8'); include("config/config.php"); $DB = new DataBase(); $DB->MySQL_Connect(); class Menu { public function Menu() { $query = "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'"; $res = mysql_query($query); if (!$res) die(mysql_error()); $arr = array(); while ($row = mysql_fetch_object($res)) { $arr[] = $row; } } public function Categories() { $query = "SELECT * FROM categories WHERE cat_hide <> 'F'"; $res = mysql_query($query); if(!$res) die(mysql_error()); $menu = array(); while ($row = mysql_fetch_object($res)) { $menu[] = $row; } } } $Menu = new Menu(); $Menu->Menu; $Menu->Categories; ?> <ul> <h3><?php echo $Menu->Menu->arr[0]->menu_name; ?></h3> <?php foreach ($Menu->Categories->menu as $key => $item): ?> <li><?php echo "<a href=$item->cat_url>$item->cat_name</a>"; ?></li> <?php endforeach; ?> </ul> пишет Warning: Invalid argument supplied for foreach() in C:\AppServ\www\site\menu1.php on line 43 Помогите решить как через цикл foreach вывести всё это дело.
Спасибо конечно, но я не сильно понял, с ооп не очень хорошо дружу. Можешь примерно показать. Буду очень благодарен. Вроде понял щас попробую.
мда... такой кривой ООП я ещё не видел =) PHP: <?php header('Content-Type: text/html; charset=utf-8'); include("config/config.php"); $DB = new DataBase(); $DB->MySQL_Connect(); class Menu { public $menu_array = array(); public function Menu() { $query = "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'"; $res = mysql_query($query); if (!$res) die(mysql_error()); $arr = array(); while ($row = mysql_fetch_object($res)) { $arr[] = $row; } } public function Categories() { $query = "SELECT * FROM categories WHERE cat_hide <> 'F'"; $res = mysql_query($query); if(!$res) die(mysql_error()); while ($row = mysql_fetch_object($res)) { $this->menu_array[] = $row; } } } $Menu = new Menu(); $Menu->Menu; $Menu->Categories; ?> <ul> <h3><?php echo $Menu->Menu->arr[0]->menu_name; ?></h3> <?php foreach ($Menu->menu_array as $key => $item): ?> <li><?php echo "<a href=$item->cat_url>$item->cat_name</a>"; ?></li> <?php endforeach; ?> </ul>
PHP: <?php header('Content-Type: text/html; charset=utf-8'); include("config/config.php"); $DB = new DataBase(); $DB->MySQL_Connect(); class Menu { public function Menu() { $query = "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'"; $res = mysql_query($query); if (!$res) die(mysql_error()); $arr = array(); while ($row = mysql_fetch_object($res)) { $arr[] = $row; } } public function Categories() { $query = "SELECT * FROM categories WHERE cat_hide <> 'F'"; $res = mysql_query($query); if(!$res) die(mysql_error()); $menu = array(); while ($row = mysql_fetch_object($res)) { $menu[] = $row; } } } $Menu = new Menu(); $Menu->Menu; $Menu->Categories; ?> <ul> <h3><?php echo $Menu->Menu->arr[0]->menu_name; ?></h3> <?php $your_array = $Menu->Categories->menu; if (count($your_array) === 0) {echo 'Передается пустой массив, foreach не любит пустой массив и жалуется интерпритатору!'; exit;} foreach ($Menu->Categories->menu as $key => $item): ?> <li><?php echo "<a href=$item->cat_url>$item->cat_name</a>"; ?></li> <?php endforeach; ?> </ul> Работает? Это всего-лишь warning, можно его отключить: PHP: error_reporting (E_ERROR | E_PARSE | E_NOTICE);
мде, видимо о различиях свойства объекта и локальной переменной в методе никто не знает? А о конструкторах в классах и подавно PHP: <?php class Menu { public $menu = array(); public $categories = array(); public function vMenu() { $query = "SELECT * FROM menu WHERE menu_id = '1' AND menu_hide <> 'F'"; $res = mysql_query($query); if (!$res) die(mysql_error()); while ($row = mysql_fetch_object($res)) $this->menu[] = $row; } public function vCategories() { $query = "SELECT * FROM categories WHERE cat_hide <> 'F'"; $res = mysql_query($query); if(!$res) die(mysql_error()); while ($row = mysql_fetch_object($res)) $this->categories[] = $row; } } $obj = new Menu(); $obj->vMenu(); $obj->vCategories(); print_r($obj->menu); print_r($obj->categories);