Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Цыкл и передача переменной в шаблон

Цыкл и передача переменной в шаблон


     19.05.2014    Все вопросы » Общие вопросы по PHP    2437

вопрос
Задача сделать выборку с базы с сортировкой по имени, после чего сгруппировать список по алфавиту, вот пример http://shot.qip.ru/00mxg1-6GAPIlJPe/, своими словами состряпал вот такой код
$news = $db->query( "SELECT * FROM " . PREFIX . "_category  WHERE parentid = '41' ORDER BY name" );

$array = array();
    if ( $db->num_rows( $news ) )
    {
$tpl->load_template( 'texts/item.tpl' );
while ($row = $db->get_row( $news )) {
    $array[$row['name'][0]][] = $row;
}

foreach($array as $symbol => $sub_array)
{
$tpl->set( '{symbol}', $symbol );

    foreach($sub_array as $row)
    {
        $tpl->set( '{title}', $row['name'] );
        $row['alt_name'] = str_replace( '-', '__', $row['alt_name'] );
        $tpl->set( '{link}', $config['http_home_url'] . $row['alt_name'] . '.html' );
        $tpl->compile( 'content' );
    }
}
}

Вот результат этого кода http://shot.qip.ru/00mxg1-5GAPIlJPf/
Не могу сделать чтобы $tpl->set( '{symbol}', $symbol ); обрабатывался, когда цикл не выполняется.
Или предложите лучшее решение)

Ответа пока нет


6 комментариев

shadow6630
Юзер

shadow6630 - 19 мая 2014 14:27 -

Забыл добавить что если цыкл не выполняется то $symbol должно быть пустым значением

lutskboy
Эксперт

lutskboy - 19 мая 2014 16:35 -

while ($row = $db->get_row( $news )) {
    $array[$row['name'][0]][] = $row;
}

замени на

while ($row = $db->get_row( $news )) {
    $array[$row['name'][0]][] = $row;
тут остальной код
}

shadow6630
Юзер

shadow6630 - 19 мая 2014 17:21 -

lutskboy,пробовал так
$news = $db->query( "SELECT * FROM " . PREFIX . "_category  WHERE parentid = '41' ORDER BY name" );

$array = array();
    if ( $db->num_rows( $news ) )
    {
$tpl->load_template( 'texts/item.tpl' );
while ($row = $db->get_row( $news )) {
    $array[$row['name'][0]][] = $row;
    foreach($array as $symbol => $sub_array)
{
$tpl->set( '{symbol}', $symbol );

    foreach($sub_array as $row)
    {
        $tpl->set( '{title}', $row['name'] );
        $row['alt_name'] = str_replace( '-', '__', $row['alt_name'] );
        $tpl->set( '{link}', $config['http_home_url'] . $row['alt_name'] . '.html' );
        $tpl->compile( 'content' );
    }
}
}
}
, выводит вот такую ошиибку Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 50797975 bytes) in /путь/engine/classes/templates.class.php on line 499

lutskboy
Эксперт

lutskboy - 19 мая 2014 20:46 -

что то ты тут накосячил. мне не понятно
$array[$row['name'][0]][] = $row;

shadow6630
Юзер

shadow6630 - 19 мая 2014 21:03 -

lutskboy,
мне тоже, я нашел этот пример на просторах интернета)

shadow6630
Юзер

shadow6630 - 20 мая 2014 21:34 -

Ну что, никто мне не поможет или вопрос настолько сложный ?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх