Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Категории и подсчёт файлов в них (https://forum.antichat.xyz/showthread.php?t=175324)

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`

PHP код:

...
$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\\](.*?)\\[/category\\]'si", "");
 $tpl->set('[cat_navigation]', '');
 $tpl->set('[/cat_navigation]', '');
 $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('[/category]', '');

 $coun = $db->super_query("SELECT count(*) as count FROM downloads_files WHERE category = '{$row['id']}'");

 $tpl->set('[cat_link]', '<a href="' . $PHP_SELF . '?do=downloads&category=' . $row['id'] . '">');
 $tpl->set('[/cat_link]', '</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 и выбрать из таблицы файлов количество файлов, сгруппированных по айдишнику категорий


Время: 14:48