powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Smarty как вывести массив? Помогите с кодом.
5 сообщений из 5, страница 1 из 1
Smarty как вывести массив? Помогите с кодом.
    #38186730
yaskin2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть база данных
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
cate_id, cate_name, goods_id, goods_name
42  Категория1  150  Товар1
42  Категория1  151  Товар2
42  Категория1  152  Товар3
43  Категория2  153  Товар4
43  Категория2  154  Товар5
44  Категория3  155  Товар6
44  Категория3  156  Товар7 


Есть функция, возвращающая двумерный массив данных
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    function get_cate()
    {
        static $data = array();    // Выходной Массив 
            $sql = "SELECT 
              cate_id, cate_name, goods_id, goods_name
            FROM 
              goods;

            $result = $this->db->query($sql);
            $row = mysql_fetch_array ($result, MYSQL_NUM); // получаем первую строку
                    while ($row) // Пока есть записи
                    {
                        $data[$row['cate_id']] = array(
                        'cate_id' => $row['cate_id'],                        
                        'cate_name' => $row['cate_name'],
                        'goods_id'     => $row['goods_id'],
                        'goods_name' => $row['goods_name']                        
                        );
                    $row = mysql_fetch_array ($result); // получаем следующую строку
                    }                
        return $data;  


и вывод на smarty
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<!--{foreach item=tovar from=$cates key=k}-->

<!--{if $tovar.cate_id eq $k}-->

    <!--{foreach key=key item=item from=$tovar }-->    
        {$key} : {$item}<br>
    <!--{/foreach}-->
    
<!--{/if}-->
    
    <br>
<!--{foreachelse}-->
    Ничего не найдено    
<!--{/foreach}--> 


который выводит данные в таком виде:
Код: php
1.
2.
3.
42  Категория1  150  Товар1
43  Категория2  153  Товар4
44  Категория3  155  Товар6  


а как сделать чтоб выводил так?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
42  Категория1  
  150  Товар1
  151  Товар2
  152  Товар3
43  Категория2  
  153  Товар4
  154  Товар5
44  Категория3  
  155  Товар6
  156  Товар7 
...
Рейтинг: 0 / 0
Smarty как вывести массив? Помогите с кодом.
    #38187567
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yaskin2,

а как у вас отличаються товары от категорий?
...
Рейтинг: 0 / 0
Smarty как вывести массив? Помогите с кодом.
    #38187700
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эта конструкция у вас совершенно бестолковая.
Код: php
1.
2.
3.
4.
5.
6.
7.
 $data[$row['cate_id']] = array(
                        'cate_id' => $row['cate_id'],                        
                        'cate_name' => $row['cate_name'],
                        'goods_id'     => $row['goods_id'],
                        'goods_name' => $row['goods_name']                        
                        );
                    $row = mysql_fetch_array ($result); // п



У вас в итоге в массиве $data будет РОВНО по одной строчке для каждой категории, т.к. каждая последующая строка для той же категории замещает предыдущую.

В принципе понятно, чего вы хотели добиться, но надо было делать как-то так:

Код: php
1.
2.
3.
4.
5.
6.
7.
 $data[$row['cate_id']][] = array(
                        'cate_id' => $row['cate_id'],                        
                        'cate_name' => $row['cate_name'],
                        'goods_id'     => $row['goods_id'],
                        'goods_name' => $row['goods_name']                        
                        );
                    $row = mysql_fetch_array ($result);



У вас $data[$row['cate_id']] должен быть массивом массивов со строками. А не просто одной строкой-массивом.
...
Рейтинг: 0 / 0
Smarty как вывести массив? Помогите с кодом.
    #38188440
yaskin2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ренат,

по колонкам cate_id - категория , которой принадлежит товар id = goods_id
...
Рейтинг: 0 / 0
Smarty как вывести массив? Помогите с кодом.
    #38188514
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yaskin2,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function get_cate()
    {
        static $data = array();    // Выходной Массив 
            $sql = "SELECT 
              cate_id, cate_name, goods_id, goods_name
            FROM 
              goods";

            $result = $this->db->query($sql);
            $row = mysql_fetch_array ($result, MYSQL_NUM); // получаем первую строку
                    while ($row) // Пока есть записи
                    {
                        $data[$row['cate_id']]['id'] = $row['cate_id'];
                        $data[$row['cate_id']]['name'] = $row['cate_name'];
                        $data[$row['cate_id']]['goods'][] = array(
                        'id'     => $row['goods_id'],
                        'name' => $row['goods_name']                        
                        );
                    $row = mysql_fetch_array ($result); // получаем следующую строку
                    }                
        return $data;  



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
{foreach item=tovar from=$cates key=k}-->

 
{$cate['id']} : {$cate['name']}<br>
    {foreach item=$good from=$cate['goods'] }-->   
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{$good['id']} : {$good['name']}<br>
    {/foreach}-->
    
{foreachelse}
    Ничего не найдено    
{/foreach}
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Smarty как вывести массив? Помогите с кодом.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]