Вывести скриптом все разделы категории

 
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
Здравствуйте, сообщество! Есть на сайте раздел Энциклопедия пчеловодства. В этом разделе есть подразделы

их нужно вывести все на одной странице. Понятно, что все это содержится в cms_category

INSERT INTO `cms_category` (`id`, `parent_id`, `title`, `description`, `published`, `showdate`, `showcomm`, `orderby`, `orderto`, `modgrp_id`, `NSLeft`, `NSRight`, `NSLevel`, `NSDiffer`, `NSIgnore`, `ordering`, `maxcols`, `showtags`, `showrss`, `showdesc`, `is_public`, `photoalbum`) VALUES (’1’,’0’,’--Корневой раздел--’,’Корневой раздел сайта’,’1’,’1’,’1’,’pubdate’,’asc’,’0’,’1’,’282’,’0’,’’,’0’,’1’,’1’,’1’,’1’,’0’,’0’,’’),
(’2’,’1’,’Новости’,’’,’1’,’1’,’0’,’pubdate’,’DESC’,’0’,’278’,’281’,’1’,’’,’0’,’4’,’2’,’1’,’0’,’1’,’0’,’a:7:{s:2:"id";i:0;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";i:2;s:3:"max";i:8;}’),

(’6’,’1’,’Энциклопедия пчеловодства’,’’,’1’,’0’,’0’,’pubdate’,’ASC’,’0’,’2’,’211’,’1’,’’,’0’,’1’,’3’,’1’,’1’,’1’,’0’,’a:7:{s:2:"id";i:0;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:4:"hits";s:7:"orderto";s:3:"asc";s:7:"maxcols";i:2;s:3:"max";i:8;}’),
(’8’,’6’,’АНАТОМИЯ И БИОЛОГИЯ МЕДОНОСНОЙ ПЧЕЛЫ’,’’,’1’,’0’,’0’,’pubdate’,’ASC’,’0’,’41’,’70’,’2’,’’,’0’,’3’,’1’,’1’,’1’,’0’,’0’,’a:7:{s:2:"id";i:1;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:6:"rating";s:7:"orderto";s:3:"asc";s:7:"maxcols";i:2;s:3:"max";i:8;}’),
(’9’,’6’,’БОЛЕЗНИ И ВРЕДИТЕЛИ ПЧЕЛ’,’’,’1’,’0’,’0’,’pubdate’,’ASC’,’0’,’179’,’204’,’2’,’’,’0’,’9’,’3’,’1’,’0’,’1’,’0’,’a:7:{s:2:"id";i:0;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";i:2;s:3:"max";i:8;}’),
(’10’,’6’,’ИНВЕНТАРЬ’,’’,’1’,’1’,’0’,’pubdate’,’ASC’,’0’,’71’,’124’,’2’,’’,’0’,’4’,’1’,’0’,’0’,’0’,’0’,’a:7:{s:2:"id";i:0;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";i:2;s:3:"max";i:8;}’),
(’11’,’6’,’КАТАЛОГ МЕДОНОСОВ’,’’,’1’,’0’,’0’,’ordering’,’ASC’,’0’,’141’,’158’,’2’,’’,’0’,’7’,’1’,’1’,’0’,’1’,’0’,’a:7:{s:2:"id";i:1031;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";i:1;s:3:"max";i:8;}’),
(’12’,’6’,’НА ПАСЕКЕ’,’’,’1’,’0’,’1’,’ordering’,’ASC’,’0’,’3’,’24’,’2’,’’,’0’,’1’,’1’,’1’,’1’,’1’,’0’,’a:7:{s:2:"id";s:1:"0";s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";s:1:"2";s:3:"max";s:1:"8";}’),
(’13’,’6’,’НАКОПЛЕННЫЙ ОПЫТ’,’’,’1’,’0’,’1’,’ordering’,’ASC’,’0’,’25’,’40’,’2’,’’,’0’,’2’,’1’,’1’,’1’,’1’,’0’,’a:7:{s:2:"id";s:1:"0";s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";s:1:"2";s:3:"max";s:1:"8";}’),
(’14’,’6’,’ПРОДУКТЫ ПЧЕЛОВОДСТВА’,’’,’1’,’0’,’0’,’ordering’,’ASC’,’0’,’159’,’178’,’2’,’’,’0’,’8’,’1’,’1’,’0’,’1’,’0’,’a:7:{s:2:"id";i:0;s:6:"titles";s:1:"0";s:6:"header";s:18:"Фотографии на тему";s:7:"orderby";s:7:"pubdate";s:7:"orderto";s:4:"desc";s:7:"maxcols";i:2;s:3:"max";i:8;}’),

и так далее... Необходимо вывести

-Главная
-Какой нибудь раздел
--подраздел
---подраздел раздела
----так далее

1) считаем кол-во статей в подрубрике 1-го уровня `id` и `parent_id`(’95’,’1’
нам важен `parent_id` - если = "1" то это категория 1 уровня
2) определяем ID подрубрики 1-го уровня
3) считаем кол-во статей в подрубрике 2-го уровня
//+ третий уровень+4 и т.п.
//прибавляем к сумме родительской рубрики сумму в подрубрике 1-го уровня
//прибавляем к сумме родительской рубрики сумму в подрубрике 2-го уровня
4) вывод столбца рубрики
5) вывод рубрик для столбца
6) печать одного столбца

я не программист пока еще, но очень интересно такое решение! Сильно ерепениться не нужно, и говорить о том, что нужно дождаться 1.5 тоже, давайте просто жить, и решать насущные проблемы. Спасибо. Кому не влом - помогите!

Функция нужна, чтобы вставлялась в шаблон или подключалась через includes\myphp\file.php
Чуврствую, все очень просто ... но как решить вопрос...
ниже прикреплен artikle_directory для WP там нужно с переменными разобраться - и вполне он пойдет smile /Выполняет описанную мной функцию
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
1) считаем кол-во статей в подрубрике 1-го уровня `id` и `parent_id`(’95’,’1’
нам важен `parent_id` - если = "1" то это категория 1 уровня
2) определяем ID подрубрики 1-го уровня
3) считаем кол-во статей в подрубрике 2-го уровня
//+ третий уровень+4 и т.п.
//прибавляем к сумме родительской рубрики сумму в подрубрике 1-го уровня
//прибавляем к сумме родительской рубрики сумму в подрубрике 2-го уровня
4) вывод столбца рубрики
5) вывод рубрик для столбца
6) печать одного столбца

==================
продолжаем.

нам нужно для начала проверить параметры подключения к sql серверу
Функции соединения с сервером MySQL
mysql_connect ([string $hostname] [, string $user] [, sting $password]);
параметр $hostname может быть указан в виде: хост:порт.

// Попытка установить соединение с MySQL:
if (!mysql_connect($server, $user, $ password)) {
echo "Ошибка подключения к серверу MySQL";
exit;
}
// Соединились, теперь выбираем базу данных:
mysql_select_db($db);

$q = mysql_query("SELECT * FROM mytable");
Приведенный запрос должен вернуть содержимое таблицы mytable. Результат запроса присваивается переменной $q. Результат - это набор данных, который после выполнения запроса нужно обработать определенным образом.

http://www.php.su/mysql/?functions - вот тут об этом подробнее

Предположим, SQL-запрос вернул следующий набор данных:

Email Name Last_Name
------------------------------------
[email protected] Ivan Ivanov
[email protected] Petr Petrov


Вывести это в браузер можно следующим образом:

$rows = mysql_num_rows($q);
$fields = mysql_num_fields($q);

echo "<pre>";
for ($c=0; $c<$rows; $c++) {
for ($cc=0; $cc<$fields; $cc++) {
echo mysql_result($q, $c, $cc)."\t";
echo "\n";
}
}
echo "</pre>";

и наконец, пример скрипта, который выводит содержимое sql

<?php
$host = "localhost";
$user = "user";
$password = "secret_password";

// Производим попытку подключения к серверу MySQL:
if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}

// Выбираем базу данных:
mysql_select_db($db);

// Выводим заголовок таблицы:
echo "<table border=\"1\" width=\"100%\" bgcolor=\"#FFFFE1\">";
echo "<tr><td>Email</td><td>Имя</td><td>Месяц</td>";
echo "<td>Число</td><td>Пол</td></tr>";

// SQL-запрос:
$q = mysql_query ("SELECT * FROM mytable");

// Выводим таблицу:
for ($c=0; $c<mysql_num_rows($q); $c++)
{
echo "<tr>";

$f = mysql_fetch_array($q);
echo "<td>$f</td><td>$f[name]</td><td>$f[month]</td>";
echo "<td>$f[day]</td><td>$</td>";

echo "</tr>";
}
echo "</table>";
?>

теперь, нам остается полученные переменные запихнуть в разделы (подразделы и еже с ними... )
Реклама
cms
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
Слишком сумбурно...
много текста, который мешает понять, что к чему.

Краткость - сестра нашего брата.
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
Кратко - необходимо организовать вывод на странице деревом всех разделов/подразделов можно в два - три столбика
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
OK. На досуге подумаю как лучше сделать...
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
Выложил тут - http://instantcms.ru/blogs/42/51/post144.html
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
В связи с тем, что в блоге ограничено редактирование своих постов пришлось апнуть эту тему.

Переписал этот модуль.
Теперь есть админка, где можно выбрать вид.
Вывести скриптом все разделы категории


Может выводить списком, деревом или колонками.

Прямой линк на файл - http://instantcms.ru/upload/userfiles/789/m_tree_category2.rar
Редактировалось: 1 раз (Последний: 3 июня 2009 в 20:14)
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
пытаюсь установить, при выполнении sql запроса пишет Ответ MySQL: Документация
#1136 - Column count doesn’t match value count at row 1
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
Как делал запрос?
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
Код PHP:
  1. INSERT INTO `cms_modules` VALUES ('', 'top', 'Список категорий', 'Список категорий', '1', 'm_tree_category', '21', '1', '1', '0', 'a:3:{s:6:"coltab";s:1:"2";s:4:"type";s:4:"tree";s:6:"menuid";s:1:"0";}', '1', '', '-1', '0', '1', 'HOUR');
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
вот это выполнить в SQL
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
разделитель ;
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
Вставляй через файл.
Файл "/upload/forum/ffc7f7c78b4e4199488e6e7387b59b8f.png" не найден!

"Обзор", выбираешь файл sql, и "пошел"
Редактировалось: 1 раз (Последний: 3 июня 2009 в 20:35)
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 304
Код PHP:
  1. Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.
  2.  
  3. ERROR: Незакрытая кавычка @ 174
  4. STR: "
  5. SQL: INSERT INTO `cms_modules` VALUES ('', 'top', '������ ���������', '������ ���������', '1', 'm_tree_category', '21', '1', '1', '0', 'a:3:{s:6:"coltab";s:1:"2";s:4:"type";s:4:"tree";s:6:"menuid";s:1:"0";}', '1', '', '-1', '0', '1', 'HOUR')
  6.  
  7.  
  8. SQL-запрос:
  9.  
  10. INSERT INTO `cms_modules` VALUES ('', 'top', '������ ���������', '������ ���������', '1', 'm_tree_category', '21', '1', '1', '0', 'a:3:{s:6:"coltab";s:1:"2";s:4:"type";s:4:"tree";s:6:"menuid";s:1:"0";}', '1', '', '-1', '0', '1', 'HOUR')
  11.  
  12. Ответ MySQL: Документация
  13. #1136 - Column count doesn't match value count at row 1
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 504
Беда с этими кодировками...
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.