|
|
|
| Файл art.php стр.289 “Практика разработки веб сайтов” там статьи выводятся по запросу
SELECT * FROM paragraphes WHERE id_article=$id_articles AND pos=$pos
И параграфы статьи выводятся в нужном порядке.
По принципу у первого элемента статьи pos=0… Поле pos следующего элемента равно первичному ключу id_paragraph, точно также определяется поле pos для второго по порядку элемента статьи.
Это понятно, все работает хорошо…
Но почему они выводятся именно в нужном порядке… я что-то не понял…
И где при выводе учитывается эта связь между id_paragraph и pos… ни каких условий для этого я не заметил… Вывод либо я чего не заметил либо чего не знаю...
В общем… все работает как надо и выводит в нужном порядке, но почему я не понял… объясните пожалуйста… | |
|
|
|
|
|
|
|
для: В
(16.06.2006 в 22:00)
| | Просто они в базу занесены по порядку.
А php и вытаскивает по порядку - строчка за строчкой | |
|
|
|
|
|
|
|
для: В
(16.06.2006 в 22:00)
| | >Просто они в базу занесены по порядку.
Нет, дело в том, что функция реализует рекурсивный спуск, мы извлекаем параграф - выводим его, а далее смотрим для какого параграфа текущий параграф является родителем и в конце фунции выводим параграф-потомок, за счёт повторного вызова функции putarticle() и так до тех пор, пока в статье не закончатся параграфы. | |
|
|
|
|
|
|
|
для: cheops
(17.06.2006 в 00:45)
| | Ну может быть. У меня не совсем есть эта книга.
Если есть желающие - можете подарить... | |
|
|
|
|
 6.3 Кб |
|
|
для: valenok
(17.06.2006 в 08:35)
| | Уточняю они могут быть не поп порядку записаны и иметь
например следующий порядок вывода (отображен на прилагаемом рисунке)
и значения id_paragraph и pos как на рисунке. Те в базу они добавлены не по порядку и id_paragraph и pos у них из-за этого соответственные
Из за того что новый параграф может быть добавлен в середину статьи.
>>функция реализует рекурсивный спуск, мы извлекаем параграф - выводим его, а далее >>смотрим для какого параграфа текущий параграф является родителем и в конце фунции >>выводим параграф-потомок, за счёт повторного вызова функции putarticle() и так до тех пор, >>пока в статье не закончатся параграфы.
это понятно...слова понятны... но не понимаю почему... как она реализут рекурсивный спуск?
вначале функция вызывается так
putarticle(0,$_GET['id_article']);
потом идет сама функция и ей единственный SQL запрос
SELECT * FROM paragraphes WHERE id_article=$id_articles AND pos=$pos
потом она вызывается рекурсивно
putarticle($paragraphes['id_paragraph'],$id_article);
Где кстати определяется что она вызвана рекурсивно?
И благодаря чему определяется какой параграф родитель какой потомок и выводит именно в этом порядке...
Ни в SQL запросе ни в самой функции я явной такой связи не заметил... и в этом вопрос... ПОЧЕМУ она работает так? | |
|
|
|
|
|
|
|
для: В
(17.06.2006 в 16:33)
| | Посмотрите рисунок на 294 странице. Дело в том, что поле pos потомка, хранить id_paragraph родителя, поэтому передавая фукнции putarticle() в качестве первого аргумента первичный ключ параграфа мы автоматически переходим к потомку. Функция называется рекурсивной, потому что она вызывает саму себя до тех пор, пока в статье не закончатся параграфы. | |
|
|
|
|
|
|
|
для: cheops
(17.06.2006 в 16:56)
| | >Посмотрите рисунок на 294 странице. Дело в том, что поле pos
>потомка, хранить id_paragraph родителя, поэтому передавая
>фукнции putarticle() в качестве первого аргумента первичный
>ключ параграфа мы автоматически переходим к потомку. Функция
>называется рекурсивной, потому что она вызывает саму себя до
>тех пор, пока в статье не закончатся параграфы.
Я понимаю что поле pos хранить id_paragraph родителя
>поэтому передавая
>фукнции putarticle() в качестве первого аргумента первичный
>ключ параграфа мы автоматически переходим к потомку
Но еще не понял почему мы автоматически переходим к потомку...
или понял... Сначала ведь вызывается функция
putarticle($pos,$id_article)
А в конце putarticle($paragraphes['id_paragraph'],$id_article)
А потом опять putarticle($pos,$id_article)
А после этого опять
putarticle($paragraphes['id_paragraph'],$id_article)
и так пока параграфы не кончатся!!!
Так? | |
|
|
|
|
|
|
|
для: В
(17.06.2006 в 17:54)
| | Да, совершенно верно функция вызывает саму себя спускаясь вниз по статье, до тех пор пока не кончатся параграфы в статье. При каждом вызове в качестве аргумента передаётся первичный ключ следующего параграфа. | |
|
|
|