Понедельников НЕТ!
Регистрация или вход Регистрация или вход Избранное на этом сайте | Главная | Анкета | Рекомендовать | Обратная связь | В избранное | Сделать домашней
Скачать SSDForums
Скачать SSDForums 1.0.1 Скачать SSDForums 1.0.1
Скачать SSDForums 1.0.1 SP1 Скачать SSDForums 1.0.1 SP1
Скачать SSDForums 1.0.1 SP2 Скачать SSDForums 1.0.1 SP2
SSD Forums 1.0.1 SP3 only Slaed 3.5 Pro SSD Forums 1.0.1 SP3 only Slaed 3.5 Pro
SSD Forums 1.0.1 SP4-beta only Slaed 4.1 Pro SSD Forums 1.0.1 SP4-beta only Slaed 4.1 Pro
Jewelry Сase Team
Скачать Ruby Chat 0.1.1 Скачать Ruby Chat 0.1.1
Меню
Главная
Форум
Магазин цифровых товаров

Новости
Подписка на новости
Темы новостей
Добавить новость

Каталог файлов
Карта файлового архива
Публикации

Опросы
Анкета пользователя
Чат

BestMaker
Викторина
Архив новостей
Карманный оракул
Поиск по сайту с помощью Яндекс
Поиск по сайту с помощью Google
Фото дня
Для души
Погода на 3 дня
IndexCat
IndexTop
Map_Pages
Публикации
Files
Подсчет количества файлов в категории с учетом файлов в подкатегориях Slaed 2.1 и выше (Lite ветка)


Для тех, кому важна статистика в модуле файлов.
Пример смотрим у меня в Файловом архиве. Наведя мышку на количество дождитесь всплывающей подсказки.




1. Добавим в стили
Код
1
2
.for_c4et0 {color: #aaa;font-size: 9px;}
.for_c4et1 {color: #aaa;font-size: 9px; text-decoration: underline; cursor:pointer;}


2. Заменим функцию на новую. Все изменения прокомментированы
PHP - Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php
function categories($id="") {
    global
$prefix, $db, $module_name, $tabcolumn, $showsubkat;
    
// добавлено $massiv3
    
static $massiv, $massiv2, $massiv3;
    
$id = (intval($id)) ? $id : 0;
    
$where = ($id) ? "WHERE parentid = '$id'" : "";
    
$tdwidth = intval(100/$tabcolumn);
    if (!
is_array($massiv)) {
        
$result = $db->sql_query("SELECT cid, title, parentid FROM ".$prefix."_files_categories ".$where."");
        while (list(
$cid, $title, $parentid) = $db->sql_fetchrow($result)) $massiv[] = array($cid, $title, $parentid);
    }
    if (!
is_array($massiv2)) {
        
$result = $db->sql_query("SELECT cid, title, parentid FROM ".$prefix."_files_categories");
        while (list(
$cid, $title, $parentid) = $db->sql_fetchrow($result)) $massiv2[] = array($cid, $title, $parentid);
    }

    
// начало вставки 1
    
if (!is_array($massiv3)) {
        
$result = $db->sql_query("SELECT fc.cid, fc.parentid, Count(f.lid) AS tmp FROM ".$prefix."_files AS f INNER JOIN ".$prefix."_files_categories AS fc ON (fc.cid=f.cid) WHERE status != '0' GROUP BY fc.cid, fc.parentid");
                                                                                                                                                          
//0        //1 в текущ//2всего//3в подкат   //4
        
while (list($cid, $parentid, $summ) = $db->sql_fetchrow($result)) $massiv3[$cid] = array($parentid, $summ, $summ, 0, $cid);

        foreach (
$massiv3 as $key => $val) {
            
$flag = $val[0];
            while (
$flag!=0) {
                    
$massiv3[  $flag  ][2] = $massiv3[  $flag  ][2] + $val[1];
                    
$massiv3[   $flag ][3] = $massiv3[  $flag  ][3] + $val[1];
                    
$flag = $massiv3[  $flag  ][0];
            }
        }
    }
    
// конец вставки 1

    
if ($massiv) {
        foreach (
$massiv as $key => $val) {
            if (
$val[2] == $id) {
                
// добавлено условие, что бы выводился ноль, в случае отсутствия файлов в категории
                
if (!isset($massiv3[$val[0]][1])) {$massiv3[$val[0]][1] = 0;}
                if (!isset(
$massiv3[$val[0]][2])) {$massiv3[$val[0]][2] = 0;}
                if (!isset(
$massiv3[$val[0]][3])) {$massiv3[$val[0]][3] = 0;}
                
// добавлено $massiv3[бла-бла], расставлены стили и титлы
                
$ccontent .= "<td valign=\"top\" width=\"".$tdwidth."%\"><table border=\"0\"><tr><td><img border=\"0\" src=\"images/blocks/Files.gif\" title=\"$title\"></td><td><a href=\"index.php?name=$module_name&op=cat&id=$val[0]\" title=\"$val[1]\"><b>$val[1]</b></a> "
                    
."<b r><font class=\"for_c4et0\"><span class=\"for_c4et1\" title=\"Всего в категории (с учетом кол-ва в подкатегориях): "
                    
.$massiv3[$val[0]][2]."\">сумм. "
                    
.$massiv3[$val[0]][2]
                    .
"</span> / <span class=\"for_c4et1\" title=\"Всего в категории (без учета кол-ва в подкатегориях): "
                    
.$massiv3[$val[0]][1]."\">в кат. "
                    
.$massiv3[$val[0]][1]
                    .
"</span> / <span class=\"for_c4et1\" title=\"Всего в подкатегориях: "
                    
.$massiv3[$val[0]][3]."\">в пкат. "
                    
.$massiv3[$val[0]][3]
                    .
"</span></font>"
                
."</td></tr>";
                if (
$showsubkat == 1 && $massiv2) {
                    foreach (
$massiv2 as $key => $val2) {
                        if (
$val[0] == $val2[2]) {
                            
// добавлено условие, что бы выводился ноль, в случае отсутствия файлов в категории
                            
if (!isset($massiv3[$val2[0]][1])) {$massiv3[$val2[0]][1] = 0;}
                            if (!isset(
$massiv3[$val2[0]][2])) {$massiv3[$val2[0]][2] = 0;}
                            if (!isset(
$massiv3[$val2[0]][3])) {$massiv3[$val2[0]][3] = 0;}
                            
// добавлено $massiv3[бла-бла], расставлены стили и титлы
                            
$ccontent .= "<tr><td colspan=\"2\"><img border=\"0\" src=\"images/navi.gif\" title=\"$val2[1]\"> <a href=\"index.php?name=$module_name&op=cat&id=$val2[0]\" title=\"$val2[1]\">$val2[1]</a> "
                            
."<b r><font class=\"for_c4et0\"><span class=\"for_c4et1\" title=\"Всего в категории (с учетом кол-ва в подкатегориях): "
                            
.$massiv3[$val2[0]][2]."\">сумм. "
                            
.$massiv3[$val2[0]][2]
                            .
"</span> / <span class=\"for_c4et1\" title=\"Всего в категории (без учета кол-ва в подкатегориях): "
                            
.$massiv3[$val2[0]][1]."\">в кат. "
                            
.$massiv3[$val2[0]][1]
                            .
"</span> / <span class=\"for_c4et1\" title=\"Всего в подкатегориях: "
                            
.$massiv3[$val2[0]][3]."\">в пкат. "
                            
.$massiv3[$val2[0]][3]
                            .
"</span></font>"
                        
."</td></tr>";
                        }
                    }
                }
                
$ccontent .= "</table></td>";
                if (
$cont == ($tabcolumn - 1)) {
                    
$ccontent .= "</tr><tr>";
                    
$cont = 0;
                } else {
                    
$cont++;
                }
            }
        }
    }
    if (
$ccontent) {
        
OpenTable();
        echo
"<table border=\"0\" cellspacing=\"0\" cellpadding=\"10\" align=\"center\"><tr>".$ccontent."</td></tr></table>";
        list(
$files_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(lid) FROM ".$prefix."_files WHERE status !='0'"));
        list(
$cat_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(cid) FROM ".$prefix."_files_categories"));
        echo
"<hr><center>"._ALLFILES.": <b>$files_num</b> "._INF." <b>$cat_num</b> "._ALLFILES2."</center>";
        
CloseTable();
    }
}
?>



Дата публикации: 16.07.2007
Прочитано: 12081 раз
[ Назад | Начало | Наверх ]
Комментарии

Immeasurability
Дата: 07.09.2009 | Комментарий: 16
ImmeasurabilityСпасиб!
Serg_pnz
Дата: 04.09.2009 | Комментарий: 15
Serg_pnzImmeasurability, у меня не описан такой пример. Советую изучить это http://dklab.ru/lib/DbSimple/
Я на новых проектах сейчас юзаю именно DbSimple.
Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот
Immeasurability
Дата: 04.09.2009 | Комментарий: 14
Immeasurabilityа есть гденить у тя пример использования кэширования SQL запроса!???
Immeasurability
Дата: 17.08.2009 | Комментарий: 13
Immeasurabilityтак бы сразу и сказал что в твоем примере нет данного решения по кэшированию

я заблудился)))
Serg_pnz
Дата: 16.08.2009 | Комментарий: 12
Serg_pnz1. Первый вопрос грамм непонятен.
2. static пригодится только во время исполнения одного скрипта. Даже если юзер будет перемещаться по страницам файлового архива static-переменные будут переопределяться.
А кеширование запросов - это когда один юзер создал результаты, а пользуются все. (см. http://dklab.ru/lib/DbSimple/)
Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот
Immeasurability
Дата: 14.08.2009 | Комментарий: 11
Immeasurabilityкакой должен быть интервал времени между запросами для того чтобы сработал static $massiv

и разве static $massiv не для повторной процедуры одного просмотра
Serg_pnz
Дата: 14.08.2009 | Комментарий: 10
Serg_pnz
Цитата
что легче для системы вычеслить 2 запроса простых или 1 усложненный?

Зависит от величины базы и сложности запросов. И так, и так имеет быть место оптимально.
Для баз с большими объемами и огромном потоке запросов применяют технологию кеширования запросов (именно запросов, а не страниц)
Не все кальсоны с оторванными пуговицами - брюки. © Serg_pnz
"...даме водки? Это чистый спирт!" © кот Бегемот
Immeasurability
Дата: 14.08.2009 | Комментарий: 9
Immeasurabilityсделал двумя запросами и вариант с одним запросам

(всего во всей функции function categories максимум 2 запроса!!!)

также выводит Общее количество статей: X в Y категориях

где X количество статей в находящейся категории и Y количество категорий в находящейся категории

подсчет количество вложанных подкатегорий и в них статей неограничен

последовотельность чуть другая инфы. сделал чуть понятний для пользователей X/Y Z

X-количество статей в данной категории
Y-количество статей в данной категории со всеми подкатегориями
Z-количество всех подкатегорий данной категории

терь вопрос
Цитата
двумя запросами и вариант с одним запросам

что легче для системы вычеслить 2 запроса простых или 1 усложненный???

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
отредактированно 14.08.2009г.
Route
Дата: 26.01.2009 | Комментарий: 8
RouteЯ просто в массивах деревянный :) Никогда их не понимал!
Route
Дата: 26.01.2009 | Комментарий: 7
RouteА можно этот хак для slaed 4.x ?
Serg_pnz, сделайте плииииз  

Вот даже код:

PHP - Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
# Format categories
function categories($mod, $tab, $sub, $desc, $id="") {
    global
$prefix, $db, $user, $conf, $currentlang;
    if (
analyze($mod)) {
        
$id = (intval($id)) ? $id : 0;
        if (
$id) {
            
$where = "WHERE modul='$mod' AND parentid = '$id'";
        } elseif (
$id && $conf['multilingual']) {
            
$where = "WHERE modul='$mod' AND parentid = '$id' AND (language='$currentlang' OR language='')";
        } elseif (
$conf['multilingual']) {
            
$where = "WHERE modul='$mod' AND (language='$currentlang' OR language='')";
        } else {
            
$where = "WHERE modul='$mod'";
        }
        
$tdwidth = intval(100/$tab);
        
$cat_num = 0;
        
$result = $db->sql_query("SELECT id, title, description, img, parentid, auth_view, auth_read FROM ".$prefix."_categories ".$where." ORDER BY ordern, title");
        while (list(
$cid, $title, $description, $img, $parentid, $auth_view, $auth_read) = $db->sql_fetchrow($result)) {
            
$massiv[] = array($cid, $title, $description, $img, $parentid, $auth_view, $auth_read);
            unset(
$cid, $title, $description, $img, $parentid, $auth_view, $auth_read);
            
$cat_num++;
        }
        if (
$massiv) {
            foreach (
$massiv as $val) {
                if (
$val[4] == $id && is_acess($val[5])) {
                    
$catid[] = $val[0];
                    if (
is_acess($val[6])) {
                        
$hidden = "";
                        
$htitle = $val[1];
                        
$ilink = ($val[3]) ? "<a href=\"index.php?name=$mod&cat=$val[0]\" title=\"".$htitle."\"><img src=\"images/categories/".$val[3]."\" border=\"0\" alt=\"".$htitle."\" title=\"".$htitle."\"></a>" : "<a href=\"index.php?name=$mod&cat=$val[0]\" title=\"".$htitle."\"><img src=\"".img_find("all/".strtolower($mod))."\" border=\"0\" alt=\"".$htitle."\" title=\"".$htitle."\"></a>";
                        
$alink = "<a href=\"index.php?name=$mod&cat=$val[0]\" title=\"".$htitle."\"><b>$val[1]</b></a>";
                    } else {
                        
$hidden = "class=\"hidden\"";
                        
$htitle = $val[1]." - "._CCLOSED;
                        
$ilink = ($val[3]) ? "<img src=\"images/categories/".$val[3]."\" border=\"0\" alt=\"".$htitle."\" title=\"".$htitle."\">" : "<img src=\"".img_find("all/".strtolower($mod))."\" border=\"0\" alt=\"".$htitle."\" title=\"".$htitle."\">";
                        
$alink = "<b>".$val[1]."</b>";
                    }
                    if (
$val[3]) {
                        
$description = ($desc) ? "
                        
$ccontent .= "<td valign=\"top\" width=\"".$tdwidth."%\"><table width=\"100%\" border=\"0\" $hidden><tr><td>".$ilink."</td><td width=\"100%\">".$alink.$description."</td></tr>";
                    } else {
                        
$description = ($desc) ? "<tr><td colspan=\"2\"><i>".$val[2]."</i></td></tr>" : "";
                        
$ccontent .= "<td valign=\"top\" width=\"".$tdwidth."%\"><table width=\"100%\" border=\"0\" $hidden><tr><td>".$ilink."</td><td width=\"100%\">".$alink."</td></tr>".$description;
                    }
                    foreach (
$massiv as $val2) {
                        if (
$val[0] == $val2[4] && is_acess($val2[5])) {
                            
$catid[] = $val2[0];
                            if (
$sub == 1) {
                                
$alink = (is_acess($val2[6])) ? " <a href=\"index.php?name=$mod&cat=$val2[0]\" title=\"".$val2[1]."\">".$val2[1]."</a>" : "";
                                
$ccontent .= "<tr><td colspan=\"2\"><img border=\"0\" src=\"".img_find("misc/navi")."\" title=\"".$val2[1]."\">".$alink."</td></tr>";
                            }
                        }
                    }
                    
$ccontent .= "</table></td>";
                    if (
$cont == ($tab - 1)) {
                        
$ccontent .= "</tr><tr>";
                        
$cont = 0;
                    } else {
                        
$cont++;
                    }
                }
            }
        }
        if (
$ccontent) {
            
$catid = implode(", ", $catid);
            if (
$mod == "faq") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(fid) FROM ".$prefix."_faq WHERE catid IN ($catid) AND time <= now() AND status!='0'"));
                
$in = _INFA;
            } elseif (
$mod == "files") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(lid) FROM ".$prefix."_files WHERE cid IN ($catid) AND date <= now() AND status!='0'"));
                
$in = _INF;
            } elseif (
$mod == "help") {
                
$uid = intval($user[0]);
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(sid) FROM ".$prefix."_help WHERE catid IN ($catid) AND time <= now() AND pid='0' AND uid='$uid'"));
                
$in = _INH;
            } elseif (
$mod == "jokes") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(jokeid) FROM ".$prefix."_jokes WHERE cat IN ($catid) AND date <= now() AND status!='0'"));
                
$in = _INJ;
            } elseif (
$mod == "links") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(lid) FROM ".$prefix."_links WHERE cid IN ($catid) AND date <= now() AND status!='0'"));
                
$in = _INL;
            } elseif (
$mod == "media") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(id) FROM ".$prefix."_media WHERE cid IN ($catid) AND date <= now() AND status!='0'"));
                
$in = _INM;
            } elseif (
$mod == "news") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(sid) FROM ".$prefix."_stories WHERE catid IN ($catid) AND time <= now() AND status!='0'"));
                
$in = _INN;
            } elseif (
$mod == "pages") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(pid) FROM ".$prefix."_page WHERE catid IN ($catid) AND time <= now() AND status!='0'"));
                
$in = _INP;
            } elseif (
$mod == "shop") {
                list(
$pages_num) = $db->sql_fetchrow($db->sql_query("SELECT Count(product_id) FROM ".$prefix."_products WHERE product_cid IN ($catid) AND product_time <= now() AND product_active !='0'"));
                
$in = _INS;
            }
            
open();
            echo
"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\" align=\"center\"><tr>".$ccontent."</td></tr></table>"
            
."<hr><center>"._ALLIN.": <b>".$pages_num."</b> ".$in." <b>".$cat_num."</b> "._ALLINC."</center>";
            
close();
        }
    }
}
?>
Всего 16 на 2 страницах по 10 на каждой странице
[ 1 | 2 ] [>>]
Вы не можете отправить комментарий анонимно, пожалуйста зарегистрируйтесь.
Календарь 3 в 1
- М - Г + Г + М
Декабрь, 2024
пнвтсрчтптсбвс
1
2345678
9101112131415
16171819202122
23242526272829
3031
Купить.
Можно в кредит на 90 дней!
Навигация
»» RSS
Главная | Форум | Новости | Подписка на новости | Темы новостей | Добавить новость | Каталог файлов | Карта файлового архива | Публикации | Опросы | Анкета пользователя | Чат | BestMaker | Викторина | Архив новостей | Карманный оракул | Поиск по сайту с помощью Яндекс | Поиск по сайту с помощью Google | Фото дня | Для души | Погода на 3 дня | IndexCat | IndexTop | Map_Pages | Весь Оракул


Генерация страницы: 0.062 сек. и 18 запросов к базе данных за 0.026 сек.
Web site engine code is Copyright © 2006 by SLAED CMS. All rights reserved.