Как вывести строки из базы данных с помощью объектов?

Hardander

Новичок
Хочу вывести пункты меню из базы данных через объекты.
Создал класс и объект

PHP:
<?php
	class buildMenu
	{
		######Метод формирования верхнего меню#######
		function getTopMenu()
		{
			$string_query = "SELECT * FROM `tabSections`";
			$query_top_menu = mysql_query($string_query) or die("Запрос не выполнен");
			return 	$query_top_menu;	
		}
	}
	
	$buildMenu = new buildMenu();
?>

Воот... А затем в том месте, где нужен вывод пунктов меню пишу это:

PHP:
<?php
while($topMenu = mysql_fetch_assoc($buildMenu->getTopMenu()))
   {
        echo "<li>".$topMenu['titleSection']."</li>"; //где 'titleSection' - это название столбца в бд, из которого предполагается вывод пунктов моего меню
   }
?>
И ожидал, что выведутся все строки из базы данных, но выводится только одна... Как сделать, чтобы выводились все?

Если бы я написал подобный код не используя объект (просто объявил функцию function getTopMenu()), то все бы вывелось как задумалось, а через класс это работает по-другому... Или я что-то не так написал?
 

Фанат

oncle terrible
Команда форума
Забавный косяк, да :)
правда, к "выводу строки из базы данных через объекты" никакого отношения не имеет.
Даже если будет выводить все нормально.

КАК МИНИМУМ надо убрать mysql_fetch_assoc внутрь класса, чтобы метод getTopMenu врзвращал массив.
который потом и перебирать форичем.
Но вообще, такие, за уши притянутые классы редко можно сделать осмысленными
 

Hardander

Новичок
Делал и таким способом - то же самое - в массиве только одна строка

PHP:
class buildMenu
	{
		######Метод формирования верхнего меню#######
		function getTopMenu()
		{
			$string_query = "SELECT * FROM `tabSections`";
			$query_top_menu = mysql_query($string_query) or die("Запрос не выполнен");
			$point_menu = mysql_fetch_array($query_top_menu);
			return $point_menu;
						
		}
	}
	
	$buildMenu = new buildMenu();
А в месте вывода:

PHP:
foreach($buildMenu->getTopMenu() as $point)
							{
								echo "<div>".$point['titleSection']."</div>";
							}
Если глянуть результат работы метода $buildMenu->getTopMenu() через функцию var_dump(), то виден такой массив:

array(6) { [0]=> string(1) "1" ["idSection"]=> string(1) "1" [1]=> string(6) "Статьи" ["titleSection"]=> string(6) "Статьи" [2]=> string(8) "articles" ["urlTitleSection"]=> string(8) "articles" }


НО!!!! Если делать вывод пунктов меню в теле самого метода getTopMenu(), тогда выводятся все пункты... но хотелось бы выводить пункты меню вне метода
 

Фанат

oncle terrible
Команда форума
Ну так ты одну и получаешь. На массив свой внимательно посмотри. Сколько в нем строчек из бд?
На код посмотри. Сколько он строчек из БД получает?

Возвращать надо все, а не одну. Собрав их предварительно в массив.

Кстати, с использованием нормальных библиотек код получается в одну строчку
PHP:
        function getTopMenu()
        {
            return $this->db->getAll("SELECT * FROM tabSections");
        }
 
Сверху