Просмотр полной версии : Категории и подсчёт файлов в них
Привет ачатовцам. Есть вопрос:
Вот мы имеем 2 таблицы.(mysql)
1 таблицы с категориямя
id | id_parent | name
----------------------------
1 | 0 | Программы
----------------------------
2 | 1 | Для телефонов
----------------------------
3 | 1 | Для компа
----------------------------
4 | 3 | Для брута
-------------------------------
Категории выведутся как:
-- Программы
-- Для телефонов
-- Для компа
-- Для брута
И есть таблица с файлами:
id | cat_id | name
----------------------------
1 | 3 | Файл 1
----------------------------
2 | 3 | Файл 2
----------------------------
3 | 3 | Файл 3
----------------------------
4 | 3 | Файл 4
-------------------------------
Как сделать на php подсчёт чтобы считались файлы в категориях по примеру:
-- Программы (4)
-- Для телефонов (0)
-- Для компа (4)
-- Для брута (4)
Кто что подскажет? Чем поможет? :)
SELECT count(id) FROM table
||
$hand = mysql_query("SELECT id FROM table");
echo mysql_num_rows($hand);
И как так быдет выводить количеств файлов из под категорий в основную?
Тоесть если глубоко в какой то подкатегории лежало 4 файла нппример, то в основной категории отображалось бы что всего 4 файла
-- Программы (4)
-- Для телефонов (0)
-- Для компа (4)
-- Для брута (4)
[Файл 1]
[Файл 2]
[Файл 3]
[Файл 4]
Ну ппц.
Ты не наисал название таблиц -> назовем 1 таблицу с категориями - `categs`, 2 - `files`
...
$handle = mysql_query("SELECT id,title FROM categs");
while(list($id,$title) = mysql_fetch_row($handle)) {
echo "Категория \"$title\" - файлов (".mysql_num_rows(mysql_query("SELECT id FROM files WHERE cat_id = $id")).") <br />";
}
...
Самый простой вариант
А как сделать посчёт если выводятся вот так
Программы [id = 1] ->
Для смартов [parent_id = 1]
Для Компа [parent_id = 1]
Тут считает только когда просматриваеш категорию для которой предназначен файл, а мне нужно чтобы считались файлы в подкатегориях и выводилось колличество в основную.
<?php
$category = intval($_GET['category']);
if ($category != 0) {
$tpl->load_tpl('downloads.tpl');
$tpl->set_block("'\\(.*?)\\[/category\\]'si", "");
$tpl->set('', '');
$tpl->set('', '');
$tpl->set('{navigation}', name_cat($category));
$tpl->compile('content');
$tpl->clear();
}
if ($category) {
$where_cat = "WHERE id_parent = '$category'";
$where_files = "WHERE category = '$category'";
} else {
$where_cat = "WHERE id_parent = 0";
$where_files = "WHERE category = 0";
}
$downloads_files_sql = $db->query("SELECT * FROM downloads_files $where_files");
$downloads_cat_sql = $db->query("SELECT * FROM downloads_category $where_cat ORDER BY position DESC");
$i = 0;
while ($row = $db->get_row($downloads_cat_sql)) {
$i ++;
$tpl->load_tpl('downloads.tpl');
$tpl->set_block("'\\[cat_navigation\\](.*?)\\[/cat_navigation\\]'si", "");
$tpl->set('[category]', '');
$tpl->set('', '');
$coun = $db->super_query("SELECT count(*) as count FROM downloads_files WHERE category = '{$row['id']}'");
$tpl->set('', '<a href="' . $PHP_SELF . '?do=downloads&category=' . $row['id'] . '">');
$tpl->set('', '</a>');
$tpl->set('{count}', $coun['count']);
$tpl->set('{category}', check_full($row['name']));
$tpl->compile('content');
$tpl->clear();
}
$b = 0;
while ($row = $db->get_row($downloads_files_sql)) {
$buffer .= $row['title'];
$buffer .= '<br>';
$b++;
}
if ($i == 0 and $b == 0) {
$buffer .= 'В данной категории ничего нет.<br>';
}
$tpl->copy_tpl = $buffer . '<br>';
$tpl->compile('content');
$tpl->clear();
?>
SELECT COUNT(*) FROM files WHERE cat_id = АйДи категории, которую рисуешь в данный момент
а еще лучше и красивее, если названия категорий выбираются из базы, сделать JOIN и выбрать из таблицы файлов количество файлов, сгруппированных по айдишнику категорий
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot