Да, это возможно. Только, не методом php, как в моём случае...
Я столкнулся с проблемой. Точнее, мне не хватает уровня тех знаний, которые там, в скрипте. Взялся за проект, время очень ограниченно. И я, понимаю, что не справлюсь. У меня каждый час тикает..
Но, раз уж вы спросили, то вот такой скрипт;
Описание моих иследований: у скрипта есть var функции ко всему, что есть на сервере. Впринцыпе, обычная процедура. Всё читается из кеша, все строки к нужным документам, скриптам.. Потом, эти строки инициализируются через ftp сервер. Точнее, оттуда инклюдятся все документы и компилируются в обычный html документ. Так полчучается из обычного index.php на сервере, обыкновенный документ index.html
Козалось бы, всё просто. Но, в самом первом файле, который загружается впервую очередь, который читает через свои прописанные функции всё, что подлежит для работы на сервере, всплывает ошибка и процедура прекращается.
Перепроверил всё, но не могу понять, что это за переменная;
/**
* Class for autoload class files
* @author ewgRa ( ewgra dog rambler dot ru )
*/
class ClassAutoLoader
{
/**
* Массив классов, найденых в $ClassDirectory
* @var string
*/
var $ClassList = array();
/**
* Класс кеширования данных, используемых для include
* @var CacheClassList
*/
var $Cache;
/**
* Массив директорий, в которых производится поиск классов
* @var array_of_string
*/
var $ClassDirectory;
/**
* Флаг, указывающий что данные взяли из кеша
* @var bool
*/
var $CacheFlag = false;
/** for singlton */
static $instance = false;
Вот эта переменная ($instance)
Это самый первый файл, который инклюдит из index.php , и он останавливается на ошибке. Хотя, на сервере всё работает.
Этот файл отвечает за все директории и инцилизирует их.
Правил кеш-файл, но смысла в нём пока нет... Смотрел везде, где встречается эта переменная. Ничего не нашёл... Ничего не загружается вперёд этого файла. Самая первая строка из index.php на этот файл с функциями. А он, останавливается на var даже не доходя до функций.
Parse error: parse error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'
И всё-таки, Евгений, база нормальная и оптимальная.
Что тут скажешь? Не в коня корм.
Извините Евгений, я вам очень признателен за помощь вашу, но не понимаю вашей такой реакции. Вроде, скрипт работает, нужно радоваться. А база действительно не при чём.
Вот и всё...
Мне мудрый человек сказал, что, всё-равно какая база и помог с решением этой задачи. Думаю, это заключительный пост, в этом топе, который поможет другим. Ведь, как не парадоксально, выход всё-таки есть. Даже не в базе дело, как оказалось.
Какую-нить простенькую базу для наглядности можно? Не пойму, что с чем там и зачем...
Кстати, код правил. Но, база у меня никакая.. базу свою тоже дополнял. делал - там-демчик.. всё равно не получилось.\n\n(Добавление)
За код спасибо! Очень интересно.
Спасибо evgenijj ! Постараюсь разобраться с таблицей.
У меня такой вопрос. if ($row == $cnt)
Бился сегодня целый день. Хотел поставить условие таким образом, что бы было сравнение с последним id категории. Но, в цикле, естественно - не получается... На выходе от одной переменной получаются сразу все значения. И как это разделить, что бы в цикл передать для условия только последний id (замыкающего) этот id равен категории.
в цикле перебираются все значения по запросу (по товарам) Если в каталоге товаров 5, и категорий 3 , то будет примерно вот так;
echo здесь все id 11233 (три категории , пять товаров)
}
echo здесь будет id 3 (не дать, не передать... а очень нужно! это последний id, он нужен для условия)
По поводу таблицы. У меня же существует 12 каталогов с продукцией. В каждой из которых лежит "любое количество" - категорий. В каждой категориии лежит "любое количество" - товаров. Выводятся они все и сортируются только по каталогу.
Если бы у меня было условие по одному каталогу, то конечно же и таблиц было бы две.
Извините, просто, не пойму, как может мишать эта таблица с каталогом. Там, в строке SELECT значение cl.id='".$_GET['cat']."' подставляется id каталога. То есть, если у меня 12 каталогов, то и все id в таблице cl каталогов идут строго от 1 до 12. Кликая по ссылкам каталогов, пользователь попадает в другие каталоги.
Всего - 12 каталогов. И они открываются все по своему значению id каждый каталог отдельно (по-сути, тот же постраничный вывод)
А вот дерево товаров выстраивается уже по этим двум таблицам, как это и у вас в примере. ( таблицу с каталогами можно не косаться вообще при продумывании кода вывода категорий. я так вообще пишу на отдельном файле, а вместо параметра GET подставляю любое число из каталога)
\n\n(Добавление)
Ну, я, практически понимаю, о чем вы толкуете. Тот же принцып работы скрипта применяется практически везде. Например, в phpBB - там и топики, и сообщения -- в каждой всего по две таблицы -> таблица заголовок и таблица текст. В каждой есть параметры, которые передаются с условием по id пользователя. (но всё-таки, пользователи - это уже третья таблица. Хотя, в моей задаче, можно вместо этой третьей таблицы в каждую строку с товарами подставить дополнительнюу колонку с названием каталога и id) но, что-то у меня не стыкуется.. Все равно, в цикле нужно как-то показать последний существующий в запросе id категории, потому что в последней категории идут сообщения с последним id категории (это самое максимальное значение, которое ровняется и подставляется совсем другая ветка, которая замыкает дерево)
У меня всё получилось!!!!!
Вы evgenijj просто гений!!!! :rotate:
Гениально всё!!!! (только БД у меня нурмульная! ) Всё работает на этой БД
я всё понял!!!!
(и главное, терь понял, как это делать)
Только там две ячейки. И в товарах у меня замыкающая 0.gif (без изображения, хотя, его можно было бы просто и не писать. это для наглядности) Хотя, терь, можно сделать и на три ячейки, как это и было задуманно изначально.
О Боже, как я рад!!!! просто опкакаюсь щаз...
делаю select с базы, чтоб можно было выбрать, а потом запихнуть в переменную. Так вот если там в строчке больше одного слова, то в переменную запихивается только первое.
Как-то странно получается...
Попробуй взять простой вариант, какой-нибудь скрипт левый. Посмотри как там функции распределены.
И ещё, при таком вопросе, неплохо было бы выкладывать сам скрипт с проблемой. (что бы умные люди заменяли этот скрипт на другой, со схожими функциями и вполне работоспособный в качестве примера со своими коментариями... )
Во-первых, неправильно спроектирована структура БД.
Не согласен..
Ну, с чего вы так решили вдруг?
БД уже отработана и работает.
Там нет ничего лишнего. Конечно, можно было бы и переиначить по другому. Вы правы, там есть три таблицы. Они нужны для того, что бы - первая выводила все каталоги товаров. Это очень важно и сам SELECT запрос сортирует всё очень практично и без лишнех нагрузок на сервер. Во второй таблице содержатся категории товаров (на все каталоги, свои категории) Тоже, очень даже удобна, без лишних нагрузок. Все категории сортируются по присвоенному значению ID каждому каталогу. Ну и последняя, самая большая таблица. В ней все товары, из всех каталогов и категорий. В том то всё и дело, что таблица для товаров заполняется для всех каталогов одинаково. По этому, товаров, как и каталогов и категорий, может быть неограниченное количество. Так было задуманно с самого начала.
Просто, важно теперь вывести всё это в древевидной форме. От части, это уже удалось. Скрипт, который я изложил, выводит всё в древе, по категориям. Даже админку забацал. Но, есть ещё такой момент - показать графику, линии в древе. Вот, это уже сложнее. Конечно, может быть моя структура для этого не совсем пригодна и нуждается в дополнении. Сейчас, я как раз буду думать над этим.
А так, как вы говорите, - неправильно мол... Это не так. Всё работает и очень даже хорошо.
(Добавление)
evgenijj пишет:
Трехуровневый каталог - три таблицы.
Если точнее, была задуманна -- "каскадная таблица".
Да, именно эти уровни и делают эту БД такой многозадачной.
(Добавление)
evgenijj пишет:
А если понадобится создать еще один уровень - создашь еще одну таблицу SUPERCATALOG?
Нет... Просто, нужно будет тогда добавить ещё одну таблицу с товарами. Например, в данном примере, структуированна таблица разных типов существующих масел для разного рода использования. (всего их 12 шутк, включая ещё по каждому каталогу существуют свои категории, которые берутся из одно запроса SELECT) Только, таблицу с товарами, я её урезал. Таблица немного обширней, на самом деле. Что не меняет самой сути. По этому, можно смело предположить, что таблица с товарами уже - другая... Можно создать таблицу для деталей авто. (и вообще, любую другую таблицу) А в каталог и категории добавить лишь заголовки названий этих товаров. Вот и всё...
БД и скрипт отлично работают. Но, видите, там графика. (кстати, сама графика линий будет переделана. Там, эти линии вообще.. можно и поизящней было бы их нарисовать) Самой БД там ещё нет. Она в разработке. Хотя, приведённый мною пример здесь, отображает всё именно так, как там на странице. На данной странице используется кусочек PHP и джава скрипт. База уже перебита на MySQL. Просто, трудность вся в том, что графика там. Замыкающие линии... и тп..
Думаю, конечно, как это порешить. Конечно, решение уже есть где-то. Но, я новечок вообще в программировании, и даже не программист (верстальщик - редактор). Борюсь на чистом энтузиазме, мне это всё интересно (собственно, как и любому другому web-редактору).
Эту статью видел. Сейчас заново пытаюсь в ней разобраться. Читаю. Но, некоторые вопросы возникают исходя уже из исходных примеров таблицы. Например, в столбце sortorder добавили нули. Там целых два примера и все цифры разные почему-то... Второе, смотрю на строку с запросом, откуда-то идёт сортировка по колонке title. О ней вообще не говорится ни слова в статье... Но, допустим, условно, она существует в этой самой таблице.
Третье, $unprocessed_rows_exist вообще не понятно откуда взялась такая функция, которая больше всего напоминает переменную...
Исходя из представленного примера, следует коментарий -- "Отмечу, что данный алгоритм не зацикливается при наличии строк с битым полем parent" -- исходя из этого, следует вывод, который наводит на мысль, что данный скрипт содран с какого-то скрипта... - Строка SELECT , образно описывает строку запроса по заданной в самой статье таблице. (кстати, авторам, - для наглядного примера, можно было бы и сократить данные в таблице, их слишком много.. трудно разобраться)
Вывод очевиден, - такую статью и я, могу написать. (вот только погодите, найду ответ!)
Не обижайтесь пожалуста. Но, разобраться в изложеном примере, особенно для новечка, - ну очень сложно.
Если найду ответ, выложу в этом топике.
На мой взгляд, это поможет дургим пользователям больше, чем эта статья.
Исходя из моего примера, наглядно видно, что за таблицы в БД, и сколько таблиц вообще (исходя из строки SELECT это видно). Скрипт работает на 100%. Осталось только придумать вывод данных в древевидной форме.
Кстати, к приведённому мною скрипту, не хватает ещё кусочка. Забыл добавить оконцовку.
Вывод данных по категориям товаров (специфика товара в самом каталоге). Поскольку, все товары сортируются по категориям (спецификации). Сами категории содержатся в каждом каталоге (заголовке, названии товара). Ну, а самих таваров, или каталогов, может быть немеренное количество.
$result = mysql_query("SELECT id, title FROM v_catalog ORDER BY id ASC") or die (mysql_error());
$links = array();
while($f=mysql_fetch_array($result)) {
$id=HtmlSpecialChars($f['id']);
$title=HtmlSpecialChars($f['title']);
$links[] = "<a href=?cat=$id>$title</a>";
}
echo implode(", ", $links);
print "</td></tr></tbody></table><br><br>";
/////////// Конец заголовков каталогов
Ну что ещё нужно, что бы исходя из этого примера, наглядно увидеть структуру ?
Могу выложить структуру таблицы для создания базы, что бы данный скрипт заработал.
Но, это уже в следующий раз. Если кому-то это покажется интересным.
Спасибо за ответ!
Я новечок в этих делах и для меня увы не всё так просто.
Значит, нужно как-то паказать в строке запроса, что нужно делать с последним id ?
В MySQL действительно всё сделано именно таким образом, что бы было удобно работать с базой. Особенно, когда база одна (одна и та же таблица), а категорий имеется несколько.
Мне это необходимо на работе. Недавно устроился на новую работу и почти без опыта. И базу начал ставить вполне серьёзно, ореинтируясь на MySQL, а там такой прибомбас... База работает, но её нужно ещё и показать на странице красиво... (чудаки, эти заказчики...)
На этом сервере вообще, хоть что-нибудь отображается в нужной кодеровке?
Браузеры, конечно, читают сами все заголовки. А сервер выдаёт только то, что есть. Но, дело всё сводится только к одному - сам сервер, если только, вместе с Линуксом. Может, при невозможности поддерживать кириллицу, он и выдаёт такую хрень... (Linux)\n\n(Добавление)
Нет, похоже дело не в сервере и не в Linux (хотя всякое может быть)
Твоя кодировка (UTF-8) сейчас. Нужно в заголовке прописать.
Если бы у тебя стояла (Windows-1251) , то всё было бы иначе...
У меня всё нормально отображается при (UTF-8)
Если это возможно, покажите мне пожалуста, как сделать отображение информации в виде дерева.
Точнее сказать, мне это почти удалось. Вот вся трудность теперь в подмене изображений замыкающей линией "L" (или по-русски "Г")
Есть похожий скрипт с этой функцией "PHP TreeMenu" (http://www.woweb.ru/catalog/47/arch/001.zip), но он полностью на PHP (там чтение из строк - используются несколько другие методы) Мне не понятно, как это делается из MySQL
Это рабочий код. Здесь три таблицы cl. (v_catalog) cg. (v_categoris) t. (v_trade) В общем-то это и видно из запроса SELECT после команды FROM
Всё работает. Но подмены изображения в конце цикла не могу себе представить.