11 декабря 2012
4433
количество заметок в категории

Количество заметок в категории на PHP

PHP
Демонстрация » Скачать »

В этой рубрике я хотел бы поделиться своим опытом по выводу количества заметок в категории. Бывают такие случаи, когда допустим мы создаем категории и в них записываем наши уроки, статьи, видео и прочие материалы, как говорится контейнер, в который мы помещаем материалы. Нас интересует одна вещь, как подсчитать количество материалов, в данном контейнере.

 

И так, все по порядку. Для начала создаем 2 таблицы, я возьму их с прошлых уроков и реализую тут на практике.

 

Таблица с заметками 1_news

 

-
-- Структура таблицы `1_news`
--

CREATE TABLE IF NOT EXISTS `1_news` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `cat` int(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `title` (`title`),
  FULLTEXT KEY `title_2` (`title`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=30 ;

--
-- Дамп данных таблицы `1_news`
--

INSERT INTO `1_news` (`id`, `title`, `cat`) VALUES
(1, 'Flash Computers Intel Celeron 2.6', 1),
(2, 'Flash Computers Номе Intel Pentium G620 
(2.6GHz)/2Gb/500Gb/512Mb ATI HD5450/DVD-RW/Wi-Fi/450W/Win7 HP 64bit', 1),
(3, 'Flash Home Mini Intel Core i3-2100 (3,10GHz)/3Gb/1Tb SATA3/1024Mb 
NVIDIA GT 520/DVD-RW/USB 3.0/200W/Win7 HP 64bit (syiibr)', 1),
(4, 'Flash Computers Home3D Intel Core i5-2300 (2.8GHz)/4Gb/1Tb SATA3/1024Mb 
NVIDIA GTX 550Ti/DVD-RW/Wi-Fi/USB 3.0/550W/Win7 HP 64bit (syiibr)', 1),
(5, 'Mazda RX-8', 2),
(6, 'Kia Magentis II', 2),
(7, 'Audi A8 (D2,4D)', 2),
(8, 'HP All-in-One 3420 Pro LH165ES G530/2GB/500GB/DVD/WiFi/20"/DOS', 1),
(9, 'Lenovo IdeaCentre C320 G530/2G/320Gb/HD6450-512mb/WF/Cam/Win7 st 
моноблок Keyboard&Mouse 20"', 1);

 

Таблица с категориями заметок 1_news_cat

 

 

--
-- Структура таблицы `1_news_cat`
--

CREATE TABLE IF NOT EXISTS `1_news_cat` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `1_news_cat`
--

INSERT INTO `1_news_cat` (`id`, `title`) VALUES
(1, 'Компьютеры'),
(2, 'Машины'),
(3, 'Мотоциклы');

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

 

<?
$db = mysql_connect ("localhost", "Логин", "Пароль");
mysql_select_db ("База данных", $db);
if (!$db) echo mysql_error();
?>

 

После проделанных всех операций, мы создаем последний файл index.php и в нем записываем наш код по выводу количества заметок. 

 

<?php

include ("bd.php"); //подключение к базе данных

$sql = mysql_query("SELECT id, title FROM 1_news_cat");

if (!$sql)
{
exit();
}
if (mysql_num_rows($sql) > 0)
{

@$row=mysql_fetch_array($sql);

do
{

$cat_articles = mysql_query("SELECT id FROM 1_news WHERE cat='$row[id]'");
// Данный запрос выбирает из базы данных отношение статей к категориям.
$number = mysql_num_rows($cat_articles);

echo "<table><tr>";
echo "<td>";
echo "$row[title] ($number)";
echo "</td></tr></table><br>";
}
while (@$row = mysql_fetch_array($sql));
}

?>

 

Для начала подключаемся к базе данных, затем выводим поля id и title из таблицы категорий 1_news_cat. Проверяем переменную, если она больше 0 то выводим все данные из таблицы 1_news_cat. Затем создаем переменную $cat_articles в ней делаем запрос на выборку из таблицы 1_news, в которой находятся все заметки. Связываем таблицы через поле cat в таблицы 1_news с таблицей 1_news_cat по полю id. Записываем результаты в переменную $number. Теперь выводя в цикле строчку $row[title] ($number)  мы получаем количество заметок в каждой категории.

 

Итог:

 

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

 

Спасибо за внимание, всем удачи!