Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Smarty как вывести массив? Помогите с кодом. / 5 сообщений из 5, страница 1 из 1
16.03.2013, 16:35
    #38186730
yaskin2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Smarty как вывести массив? Помогите с кодом.
Есть база данных
Код: 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
18.03.2013, 09:15
    #38187567
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Smarty как вывести массив? Помогите с кодом.
yaskin2,

а как у вас отличаються товары от категорий?
...
Рейтинг: 0 / 0
18.03.2013, 11:17
    #38187700
anvano
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Smarty как вывести массив? Помогите с кодом.
Вот эта конструкция у вас совершенно бестолковая.
Код: 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
18.03.2013, 17:34
    #38188440
yaskin2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Smarty как вывести массив? Помогите с кодом.
Ренат,

по колонкам cate_id - категория , которой принадлежит товар id = goods_id
...
Рейтинг: 0 / 0
18.03.2013, 18:05
    #38188514
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Smarty как вывести массив? Помогите с кодом.
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
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Smarty как вывести массив? Помогите с кодом. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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