Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить результат в виде строки 
V
    Опции темы
s1lver
  Дата 6.6.2014, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Доброго времени суток!

Подскажите, как лучше решить этот вопрос. Есть класс в котором происходит обращение к БД и формирование структуры меню.
Вывод результата должен передаваться в функцию(отвечающую за отображение контента) в виде строки. Пробовал обращение к функциям через переменные, но к сожалению, это не подходит.
Вывод происходит, но в начало страницы до тега <html>.

Сделал так

Код

<?php

class Menu{
    public function getMenu(){
        $query = "SELECT `menu_id`, `menu_name`, `menu_active`, `menu_url` FROM `menu` WHERE `menu_visible`='1'";
        $result = mysql_query($query);
        $menu_open = "<nav><ul>";
        while($row = mysql_fetch_array($result)){
            $menu_item_open =  "<li><a id=\"".$row['menu_id']."\" href=\"".$row['menu_url']."\"";
            if($row['menu_active']==1){$menu_active = " class=\"active\"";}
            $menu_item_close =  ">".$row['menu_name']."</a></li>";
        }
        $menu_close = "</ul></nav>";
        return $menu_open.$menu_item_open.$menu_active.$menu_item_close.$menu_close;
    }
}
?>

Так возвращается строка (что и требуется), но содержащая только последний элемент.

Т.е если в БД хранится 4 строки, то выведется только четвертая.


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Aliance
Дата 6.6.2014, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(s1lver @  6.6.2014,  10:26 Найти цитируемый пост)
Вывод происходит, но в начало страницы до тега <html>.

вывод происходит там, где вы его пишите. в коде выше мы вообще не увидели этого места.

А выводится только последняя запись потому что вы в цикле перезаписываете переменные. Попробуйте так:
Код

<?php
class Menu{
    public function getMenu() {
        $query = "SELECT `menu_id`, `menu_name`, `menu_active`, `menu_url` FROM `menu` WHERE `menu_visible` = 1";
        $result = mysql_query($query);
        $html = '<nav><ul>';
        while ($row = mysql_fetch_array($result)) {
            $html .=  '<li><a id="' . $row['menu_id'] . '" href="' . $row['menu_url'] . '"';
            if ($row['menu_active']==1) {
                $html .= ' class="active"';
            }
            $html .=  '>' . $row['menu_name'] . '</a></li>';
        }
        $html .= '</ul></nav>';

        return $html;
    }
}
?>


Только почитайте про MVC и не пишите больше html прямо в php скрипте.
PM MAIL WWW ICQ Skype   Вверх
s1lver
Дата 6.6.2014, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Спасибо! То, что надо


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1059 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.