Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Помогите отделить из функции кусок в View
Сообщения
sirious

Есть функция вывода секций с разделами:
[php:1:bc66229c37]
function forum_get()
{
// Запросы.
$sects_query = mysql_query("SELECT * FROM sections ORDER BY id_section ASC");
$cats_query = mysql_query("SELECT * FROM cats");

//$cats_query = mysql_query("SELECT name FROM cats WHERE id_section = ".$section['id_section']."");

if (!$sects_query || !$cats_query)
die(mysql_error());

// Извлечение из бд.
if ($sects_query == 0 )
{
echo 'Не создано ни одного раздела.';
}
elseif ($cats_query == 0)
{
echo 'Не создано ни одной категории.';
}
else
{
// Получаем разделы.
while ($section = mysql_fetch_assoc($sects_query))
{
$id = $section['id_section'];
$name = $section['name'];

$sections[$id] = array();
$sections[$id]['name'] = $name;
$sections[$id]['cats'] = array();
}

// Получаем категории.
while ($cat = mysql_fetch_assoc($cats_query))
{
$id = $cat['id_cat'];
$id_section = $cat['id_section'];
$name_section = mysql_query("SELECT name FROM sections WHERE id_section = ".$id_section."");
$sections[$id_section]['cats'][$id] = $cat;
}

// Считаем количество разделов.
$num_sections = mysql_num_rows(mysql_query("SELECT * FROM sections"));

/////////////////////////////////
//КУСОК КОТОРЫЙ НАДО ВЫПИЛИТЬ////
// Отображаем разделы и список категорий.
for ($i=1; $i<=$num_sections; $i++)
{
echo $sections[$i]['name'].'<br />';

foreach ($sections[$i]['cats'] as $cat)
{
echo '<a href="?cat='.$cat['id_cat'].'">'.$cat['name'].'</a><br />';
}
//////////////////////////////
}
}
[/php:1:bc66229c37]
Я придерживаюсь модели MVC, поэтому в View нужно закинуть выделенный кусок с самим отображением.
Для цикла надо что бы функция возвращала 3 переменные.
Дя этого я разделил 1 функцию на 3:
1) Отдельная функция возвращаемая количество секций: [php:1:bc66229c37]$num_sections = mysql_num_rows(mysql_query("SELECT * FROM sections"));[/php:1:bc66229c37] num_sections().
2) Отдельная функция вывода секций с возвращаемой [php:1:bc66229c37]$sections_name = $sections[$i]['name'];['cats'];[/php:1:bc66229c37] get_sections().
3) Отдельная функция вывода разделов с возвращаемой [php:1:bc66229c37]$cats_name = $sections[$i]['cats'];[/php:1:bc66229c37] get_cats().

Теперь каждая функция возвращает по 1 переменной. Все вроде нормально, можно теперь цикл спокойно вырезать. Но 2 и 3 функции без цикла ничего не знают о $i (в ней содержатся айдишники секций). И возвратить ничего толкового немогут. Провозился с этим уже пол дня, вроде как и есть свой вариант решения, но его логика подобрана методом научного тыка и отображает почему то только со второго раздела. Вообщем надеюсь на чью нибудь помощь))

03 Янв 2013, 21:27
Анархист

sirious,в этом случае,можно сделать исключение.
добавлено спустя 6 минут:
Решение можно найти..Допустим в функцию forum_get() передавать аргументы(дизайн) и подставлять в цикл.
добавлено спустя 47 секунд:
Хотя..

04 Янв 2013, 1:19
Istsam

foreach + if

04 Янв 2013, 1:25
sirious

Istsam, что я должен из этого понять?

04 Янв 2013, 9:03
Анархист

sirious,оставь цикл.

04 Янв 2013, 11:05
SL_NeKrOmAnT

Анархист, ты вообще не в тему говоришь, копипастер хренов.
Прежде чем написать подумай. Ты как укуренный пишешь тут.

04 Янв 2013, 11:12
sirious

Анархист, Но вот это: [php:1:111605b0d3]foreach ($sections[$i]['cats'] as $cat)
{
echo '<a href="?cat='.$cat['id_cat'].'">'.$cat['name'].'</a><br />';
} [/php:1:111605b0d3]
должно быть в представлении, т.к. там будут дивы и прочая лабуда относящаяся к дизайну

Я в отчаянии, уже все перепробовал. Наверное единственный вариант - это изменить сам алгоритм функций, но как? я без понятия((

04 Янв 2013, 11:15
sirious

Все, решил проблему.

05 Янв 2013, 12:06
Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.