|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.12.2011, 15:51 | #1 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 117
|
php рекурсия
само задание:
Комментарии хранятся в следующей таблице: CREATE TABLE IF NOT EXISTS `comments` ( `c_id` int(11) NOT NULL AUTO_INCREMENT, `c_parent_id` int(11) DEFAULT NULL, `c_obj_id` int(11) NOT NULL, `c_username` varchar(255) NOT NULL, `c_email` varchar(255) NOT NULL, `c_publ_date` datetime NOT NULL, `c_text` text NOT NULL PRIMARY KEY (`c_id`), KEY `c_obj_id` (`c_obj_id`), KEY `c_parent_id` (`c_parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1; Необходимо написать код, который выводит комментарии в виде иерархической структуры для указанного объекта (например, новости). Должна использоваться рекурсия. При этом разрешается выполнить только один sql-запрос. Так же следует учитывать, что в поле «c_obj_id» хранится ID объекта, к которому привязаны комментарии. Разрешается использовать только стандартные средства PHP. вот что у меня получилось : <html> <body> <? $db = mysql_connect ("localhost","root",""); mysql_select_db ("test"); $result = mysql_query('SELECT * FROM comments'); while($row = mysql_fetch_array($result)) { echo "<p>Запись id=".$row['c_id'].". дата: ".$row['c_publ_date'].". Имя: ".$row['c_username'].". email: ".$row['c_email'].". Текст: ".$row['c_text']."</p>"; } ?> </body> </html вопрос: как сделать рекурсию? и выбор комментариев для конкретного объекта? заранее спасибо |
07.12.2011, 04:32 | #2 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 117
|
знает кто нибудь?
|
07.12.2011, 08:30 | #3 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
кто нибудь знает....
1. не нужно весь массив каментов тащить - достаточно лишь тех, что привязаны к вашему объекту Код:
2. пишем рекурсивную функцию Код:
а, ну и функция f2 просто возвращает массиив элементы которого c_parent = $id |
07.12.2011, 08:32 | #4 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,160
|
код писал навскидку... наверняка есть ошибки) я просто чтоб проиллюстрировать ход мыслей
|
07.12.2011, 09:11 | #5 |
Форумчанин
Регистрация: 06.12.2010
Сообщений: 117
|
ок спасибо щас попробую отпишусь что вышло
|
08.12.2011, 16:19 | #6 | |
Пользователь
Регистрация: 08.12.2011
Сообщений: 18
|
Цитата:
Для оптимизации можно в запросе отсортировать результате по c_parent_id. Тогда код будет немного сложнее. Это если только очень надо оптимизировать. |
|
10.12.2011, 16:50 | #7 |
Пользователь
Регистрация: 10.12.2011
Сообщений: 91
|
Очень часто кстати приходится рисовать иерархию...Вот хороший пример рекурсии на php. я таким примером всегда пользуюсь. Можно кстати перевести и на объекты,не обязательно составлять хэш массив.Но это кому как нравится.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
рекурсия | malenkaya | Помощь студентам | 1 | 21.02.2011 21:02 |
Рекурсия | cranxx | Общие вопросы C/C++ | 2 | 21.02.2011 18:08 |
рекурсия | DinaraIITU | Помощь студентам | 3 | 04.11.2010 15:39 |
Рекурсия | Solnze2 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 09.06.2010 09:28 |
Рекурсия. Си. | MAKEDON | Помощь студентам | 5 | 03.06.2009 17:52 |