Программирование => PHP => Тема начата: Berkut от 11 Февраля 2004, 01:09:52
Название: Вывод списка папок
Отправлено: Berkut от 11 Февраля 2004, 01:09:52
Привет всем!Затеял сделать что-то типа файлового менеджера.Нужно вывести список всех папок(в т.ч. и всех вложенных) начиная с "корневой" папки.Попутно не выводить папки,в которых содержаться отмеченные файлы- $fl[] И вот что я напортачил:
function tree($vspomogat){ global $vspomogat; #имя корневой папки global $fl; #отмеченные файлы $hdl=opendir($vspomogat); while ($file=readdir($hdl)) { if ( ($file!=".")&&($file!="..") ) { $fllnm=$vspomogat."/".$file; if (is_dir($fllnm)==True) { $no=0; foreach ($fl as $i) { if ($fllnm==$vspomogat."/".$i) { $no=1; } } if ($no==0) { if ($fllnm!=$vspomogat) { echo ("$fllnm "); } tree ($fllnm); } } } } closedir($hdl); }
if (isset($_POST[\'copy\'])){ $begin="files"; echo ("Копировать? "); foreach ($fl as $i) { echo ("$i папки $fold "); } echo (" Выбери куда копировать: "); tree ($begin); if ($begin!=$vspomogat) { echo ("$begin "); } echo (""); }
Так вот,если файл находиться в самой последней вложеной папке - то выдаёт только первую(корневую) папку. В противном случае непрерывно выдаёт только папку, находящуюся в папке где лежит файл,и всё это в бесконечном цикле.Через 2 секунды страница "вылетает" Cannot find server.Долго туплю,но немогу найти ошибку.
Название: Вывод списка папок
Отправлено: Berkut от 11 Февраля 2004, 01:13:58
Там у меня путаница большая $vspomogat===$begin -т.е. это одно и тоже,корневая папка files
Название: Вывод списка папок
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 01:49:59
тебе не приходило в голову, до того, как ты научишься выводить хотя бы голый список, не обвешивать свой скрипт всякими фентифлюшечками? Тогда бы, глядишь - и и тупил бы меньше. в 5 строчках простора тупить меньше, чем в 50.
Ну, а если бы ты слышал такое слово, как "отладка", то и вообще не тупил бы.
сейчас я тебе открою сокровенное знание. В мире НЕТ программистов ,которые пишут код как художники на арбате - сел, наваял, отдал. Нету. И не будет.
Писать программы - десткий лепет. Настоящая работа - искать ошибки. Отлаживать свою программу. Это осмысленные действие, противоположные твоему "тупить". правда, у них есь одно ограничение. Надо знать, что делат твоя программа. Вот у меня рядом есть клиент - так ему отладка не поможет.
Ну, а если понимаешь, то УБЕДИСЬ - а работает ли программа, как надо? Вот у тебя там в циклах шуршат переменные. А чему они там равны - ты знаешь? А вывести на экран - не догадался? может, тогда, и тупить менбше придется, когда программа тебе сама напишет - ВОТ ЗДЕСЬ неполадка!?
Название: Вывод списка папок
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 01:52:33
а точнее - сам увидишь. переменная-то должна быть равна тому-то, а она равна другому-то. вот тут она присваивается... здесь ошибка.
все свелось к ОДНОЙ строчке, родной.
Название: Вывод списка папок
Отправлено: Меняздесьдавнонет от 11 Февраля 2004, 01:54:39
еще, очень помогают понять логику программы так так называемые отступы. Некоторые ошибочно принимают их за украшение и расставляют как попало. и очень красиов смотрятся три кокетливые скобочки в ряд.
А уж к каким болкам кода они относятся - это пусть дядя на форуме думает, правда?
Название: Вывод списка папок
Отправлено: Million от 11 Февраля 2004, 09:20:10
RomikChef Ну ты прям загрузил по полной программе:)
Название: Вывод списка папок
Отправлено: CGVictor от 11 Февраля 2004, 13:22:12
Цитировать
Berkut: Долго туплю,но немогу найти ошибку.
Цитировать
Berkut: Там у меня путаница большая
Цитировать
RomikChef: тебе не приходило в голову, до того, как ты научишься выводить хотя бы голый список, не обвешивать свой скрипт всякими фентифлюшечками? Тогда бы, глядишь - и и тупил бы меньше.
RomikChef - absolutely right (100%) Berkut попробую подсказать... Ближе к "центру" твоего кода есть небольшой глюк... Последуй совету Ромика.
Название: Вывод списка папок
Отправлено: Berkut от 13 Февраля 2004, 02:02:04
2 вечра бьюсь над этой функцией,единственное что сделал-это покончил с бесконечным выводом одной и той-же папки.Ромик,ну будь человечнее,скажи конкретно где ошибка,ты ведь её уже нашёл.
Название: Вывод списка папок
Отправлено: Меняздесьдавнонет от 13 Февраля 2004, 14:04:49
Я?! с чего ты взял? какие у людей странные фантазии. с чего ты взял, что я ее вообще искал? А тем более нашел? Что я по-твоему- волшебник? Или мне делать нечего совсем?
Для того, тобы узнать, надо сделать все, что я тебе так подробно описал. Но с какой стати я буду делать это за тебя?! мне этот урод монстроидальный даром не нужен
Но, главное, что эту работу все равно надо проделать. упростить код. Ты сам это великолепно можешь сделать. было бы желание.
То, что я тебе сказал, можно сделать не за два вечера, а за один час. вывести эхом все переменные и разобраться. вон, в соседнем топике с похожей проблемой человек не поленился и разобрал свой код по кусочкам и нашел ошибку. Ему, значит, надо было.