PDA

Просмотр полной версии : Категории и подсчёт файлов в них


Wakko
01.02.2010, 16:20
Привет ачатовцам. Есть вопрос:

Вот мы имеем 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)

Кто что подскажет? Чем поможет? :)

LStr1ke
01.02.2010, 16:38
SELECT count(id) FROM table
||
$hand = mysql_query("SELECT id FROM table");
echo mysql_num_rows($hand);

Wakko
01.02.2010, 16:45
И как так быдет выводить количеств файлов из под категорий в основную?

Тоесть если глубоко в какой то подкатегории лежало 4 файла нппример, то в основной категории отображалось бы что всего 4 файла


-- Программы (4)
-- Для телефонов (0)
-- Для компа (4)
-- Для брута (4)
[Файл 1]
[Файл 2]
[Файл 3]
[Файл 4]

LStr1ke
01.02.2010, 16:53
Ну ппц.
Ты не наисал название таблиц -> назовем 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 />";
}
...

Самый простой вариант

Wakko
01.02.2010, 17:10
А как сделать посчёт если выводятся вот так
Программы [id = 1] ->
Для смартов [parent_id = 1]
Для Компа [parent_id = 1]


Тут считает только когда просматриваеш категорию для которой предназначен файл, а мне нужно чтобы считались файлы в подкатегориях и выводилось колличество в основную.

Wakko
01.02.2010, 17:13
<?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();

?>

deedoc
01.02.2010, 17:58
SELECT COUNT(*) FROM files WHERE cat_id = АйДи категории, которую рисуешь в данный момент

а еще лучше и красивее, если названия категорий выбираются из базы, сделать JOIN и выбрать из таблицы файлов количество файлов, сгруппированных по айдишнику категорий