|
|
|
| Вот набросал код .
$a = getcwd();
$dir = opendir ($a);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
print "<br><a href='$file'>".$file."</a>";
}
closedir ($dir);
|
Он выводит мне папку сесион и я по ней перехожу и далее не чего не происходит . Я так понял нужно вставить chdir но вот и вопрос куда ? и вообще код рабочий или я точно не туда еду . | |
|
|
|
|
|
|
|
для: Rutmens
(23.08.2010 в 15:26)
| | как я понял, Вы хотите получить содержимое каталогов и подкаталогов.
Если так, то зачем вам надо препывать итерацию цикла?
уберите continue, проверяйте $file не на равенство, а на НЕ равенство, тогда вам не будет выводить в список " . " и " .. ".
Оформите всё это как функцию и проверяйте, является ли $file каталогом, если да, вызывайте функцию снова.
Что бы не было зацикливания, проверяйте условие while на FALSE. | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.08.2010 в 16:02)
| | Я тоже не полностью понял ваш ответ .. но обьясню немнго по точнее что я хочу .
Этот код вывод у меня папку .
sesion/ в ней лежат другие папки .
Вот мне нужно когда я перехожу чтобы выводились другие папки .
sesion / dd /
mm/
И так далии только sesion небыло взади .. только будет возрастатть URL адрес . | |
|
|
|
|
|
|
|
для: Rutmens
(23.08.2010 в 16:24)
| | вот Ваш код
<?php
$a = getcwd();
$dir = opendir ($a);
while ($file = readdir($dir))
{
if ($file == '.' || $file == '..') continue;
print "<br><a href='$file'>".$file."</a>";
}
closedir ($dir);
?>
|
$a = getcwd(); - получаем полный путь к текущему каталогу
$dir = opendir ($a); - получаем дескриптор, позволяющий читать содержимое каталога $a
while ($file = readdir($dir)) - в цикле выводим его содержимое, функция readdir() возвращает FALSE если достигнут конец каталога. что бы прочитать весь каталог пишем так
while (($file = readdir($dir)) !== FALSE)
Теперь проверяем, что нам вернула readdir() и если это файл, то выводим его имя
if(is_file($a."/".$file)){
echo $file." - это файл!!!<br>";
}
Если же readdir() вернула нам каталог и он не равер текущему или родительскому,
if(is_dir($a."/".$file) && $file != '.' && $file != '..')
выводим имя каталога echo "<h5>".$file." - это каталог!!!</h5>";
а для того, что бы получить содержимое этого каталога, нам надо оформить это всё функцией и рекурсивно вызвать оную :)
всё вместе это выглядит так
<?php
$a = getcwd();
/* объявляем функцию */
function full_dir_all($a){
$dir = opendir ($a);
while (($file = readdir($dir)) !== FALSE) {
if(is_file($a."/".$file)){
echo $file." - это файл!!!<br>";
}
else if(is_dir($a."/".$file) && $file != '.' && $file != '..'){
echo "<h5>".$file." - это каталог!!!</h5>";
/* рекурсивно вызываем функцию */
full_dir_all($a."/".$file);
}
}
closedir ($dir);
}
echo full_dir_all($a);
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(23.08.2010 в 17:18)
| | Спасибо ... за подробное описание .. чуть погодя тестану . | |
|
|
|
|
|
|
|
для: Rutmens
(27.08.2010 в 15:58)
| | Вообщем чуток не то ты мне дал ... мне нужно вот как тут .
http://satupload.biz/
Там подгружаеться папки из каталога ifles если перейти в папку Cards то соответственно будет выводить что в нутри папки кардс и какие файлы .
А у тебя в коде он просто за один присест всё выводит . А мне нужно как раз с переходами и чтобы ссылка передовалась через гет . | |
|
|
|
|
|
|
|
для: Rutmens
(27.08.2010 в 21:38)
| | я Вам дал пример, а Ваша задача довести его до ума, по Вашим потребностям. | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 00:38)
| | Ну всё равно спасибо ! буду ковырять . завтра тогда уже . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 01:05)
| | может моя подсказка Вам поможет, попробуйте использовать $_GET, а в нём передавать имя каталога... | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 01:29)
| | Ну я так и хочу .. только я не пойму как .. чтобы юрл выростала .. если переходит в папку upload то юрл былбы такой www.site.ru/upload/ ну а если в папке есть еще папка TEST и перейти далее то получаеться юрл вот такого типа www.site.ru/upload/test/ и так далие . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 10:41)
| | я попробовал сделать, вроде получилось.
убрал getcwd()б заменил на "./", рекурсивный вызов функции и использовал $_SESSION.
$_SESSION это для того, что бы можно было наращивать URI | |
|
|
|
|
|
|
|
для: slo_nik
(28.08.2010 в 10:47)
| | Во спасибо ! тебе !!!! самое главное понять куда копать .. ща буду мутить . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 12:21)
| | а что понимать? У Вас уже почти готовое решение, надо только убрать лишнее и оформить имя каталога как ссылку.
ну ещё надо $_SESSION запустить и передать требуемые параметры.
А функции передавать уже не один параметр, имя каталога, но и имя каталога занесённого в сессию, это для формирования строки запроса. | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 12:25)
| | Да просто я не такой еще спец в ПХП , и ной раз сутки сиддишь и тупишь как правильно составить тот или иной код . А когда тебе помогут или найдешь решение вот тогда думаешь .. там решать то не чего было . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 12:41)
| | как придумаете свой вариант - покажите, сравним :), только ради интереса... | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 12:53)
| | Ок . но чуть погодя я просто не дома . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 13:07)
| | Написал вот такой код .. но всё равно не айс .
<?php
$a = $_SERVER['DOCUMENT_ROOT']."/papca/";
#$a=(isset($_GET['file']))?$_GET['file']:false;
/* объявляем функцию */
function full_dir_all($a){
$dir = opendir ($a);
while (($file = readdir($dir)) !== FALSE) {
if(is_dir($a."/".$file) && $file != '.' && $file != '..'){
echo "<a href=$file/>".$file."<a><br>";
/* рекурсивно вызываем функцию */
full_dir_all($_SESSION['$a']."/");
}
}
closedir ($dir);
}
echo full_dir_all($a);
?>
|
Я просто еще не догоняю как работает функция рекурсивно .. | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 18:38)
| | Я Вам написал, что убрал рекурсивный вызов функции, Вы же собираетесь работать с каждым каталогом по отдельность, так зачем делать рекурсию?
Теперь делаем так
<?php
echo $_SERVER['DOCUMENT_ROOT']."/papca/<br>";
// увидим C:/Sites/home/localhost/www/papca/
echo getcwd();
// увидим C:\Sites\home\localhost\www
?>
|
Зачем тут путь от корня сайта? Заменим это всё просто ".", что в моём понимании будет указывать на текущий каталог
Имя каталога будем передавать через $_GET
<?php
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
?>
|
Вот эту переменную, $catalog, и передадим функции и удалим из кода рекурсивный вызов самой функции.
Получим то, что Вы хотели получить - содержимое каталога с файлами и подкаталогами.
Проверяем, если файл является каталогом, то оформляем его имя в виде ссылки
<?php
echo "<a href='?catalog="$file."'>".$file."</a> (каталог)</h4>";
// Получится, что то вроде этого
// <a href='?catalog=cat_name'>cat_name</a>
?>
|
Если файл является файлом, то просто выведем его имя.
Но что бы переходить по ссылке, надо её дополнить именем текущего каталога. Для этого понадобится сессия, массив $_SESSION. Вот в неё и надо будет занести имя каталога в который надо попасть.
<?php
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
?>
|
Переменная $ses_sion будет дополнять строку запроса.
<?php
echo "<a href='?cat=".$ses_sion.$file."'>".$file."</a> (каталог)</h4>";
// Получится, что если перейти по ссылке, то увидим
// <a href='?catalog=cat_name/cat_name1'>cat_name1</a>
?>
|
Думаю, что не очень путано объяснил :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 19:41)
| | Спасибо вам ! но чем больше я вкуриваю тем больше у меня вопросов ..
Если не трудно скиньте готовый код . Я думаю после такого доклада и примера всё встанет на свои места . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 20:30)
| | >но чем больше я вкуриваю тем больше у меня вопросов ..
например? | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 20:37)
| | К примеру зачем в конце точка "."
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
|
| |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 20:54)
| | >К примеру зачем в конце точка "."
>Заменим это всё просто ".", что в моём понимании будет указывать на текущий каталог
>Имя каталога будем передавать через $_GET
Это не точка, а строка содержащая точку. Смысл е ней такой же, как и в проверке if($file != "." && $file != "..") , что означает текущий каталог.
Получается, что если не будет передано ни каких параметров через $_GET, то переменная $catalog будет содержать в себе имя текущего каталога, в котором расположен данный скрипт. Иначе переменной $catalog будет присвоено значение, которое передано в $_GET | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 21:23)
| | Slo_Nik Спасибо за все .. вообщем я сдаюсь ..
P.S Меня уже этот код бесит не могу допетрить полность . . пойду другой форум штурмовать чтобы решили мне проблему . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 23:48)
| | Показывайте что сделали. | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 23:53)
| | Вот что .. сразу скажу что я все переудалял по переставлял . вот что осталось .
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
function full_dir_all($catalog){
$dir = opendir ($catalog);
while (($file = readdir($dir)) !== FALSE) {
if(is_dir(!$file)){
echo "<a href=index.php?$catalog=$file/>".$file."<a><br>";
}
}
closedir ($dir);
}
echo full_dir_all($catalog);
|
От этого кода не какого толку я сразу говорю . | |
|
|
|
|
|
|
|
для: Rutmens
(28.08.2010 в 23:58)
| | Попробуйте объяснить сами себе вот эту строку if(is_dir(!$file)). В этой строке я не вижу смысла. Получается, что..... блин, даже сформулировать не могу :):). Вы пытаетесь проверить, является ли файл директорией, но в тот же момент файла нет.
В этой строке Вы сделали две ошибки echo "<a href=index.php?$catalog=$file/>".$file."<a><br>"
ссылка пишется так <a href=''>ссылка</a> и какому параметру Вы присваиваете значение $catalog ? Если Вам нужет элемент массива $_GET['catalog'], то надо делать так <a href='index.php?catalog=$file'>Имя каталога.</a>
В самом начале скрипта пишите error_reporting(E_ALL);, то есть выставляете уровень ошибок на полную.
Потом пишите print_r($_GET); это даст Вам возможность визуально контролировать, что находится в массиве $_GET.
После этого вставьте свой код, исправте ошибки и у Вас выведет список директорий в текущем каталоге.
Когда всё получится можно будет двигаться дальше. Этот код выводит список файлов, только надо исправить ошибки. | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 00:32)
| | Slo_Nik я понимаю куда вы всё клоните , но вы поймите я только может 3 месяца сижу и прогерю на ПХП . и то работа и дела свои .. получаеться в свободное времмя я уделяю разработке своему сайту .
Но тут получаеться что проблему мою не рещают , а задают больше задачу и получаеться я сижу и рещаю . Я только недавно вкурил как работает функция и то не до конца . ООП вообще толком не знаю ..
Я к примеру разбираюсь не плохо в САТ-ТВ (Спут.ТВ) и к примеру заходит человек и спрашивает мне нужно настроить тарелку куда её крутить ?
Я - Скачайте программу Satellite Antenna Alignment .
Он - И что с ней делать ?
Я - Забейте координаты .
Он - Какие ?
Я - Ваши !
ОН - В смысле ? поточнее .
Я - Координаты широта , долгота .
ОН - А где их взять ?
Я - В интернете .
ОН - А где ?
Я - Где вы живетё ?
Он - Рязань ул. Пупова
Я - 53.07 , 43.01 (Это так пример )
Он - А куда вбивать ? не могу найти .
Можно так продолжать до бесконечности .. А было проше его зарание спросить где живет и выставить уже готовые координаты .
А там уже дело техники , компас в руки и крутить .. но это уже другой вопрос .
P.S Поймите мне нужен готовый ответ , а там по мере проблем я уже сам разберусь и если будут какие затруднения я спрошу . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 01:13)
| | >ООП вообще толком не знаю ..
Этот код ни какого отношения к ООП не имеет.
>Но тут получаеться что проблему мою не рещают
Насколько я понял, этот форум не для решения проблем, а для помощи в решении проблем. В основном тут общаются люди, которые хотят чему то научиться, научиться задавать вопросы и отвечать на них, научиться писать скрипты и разбираться в чужих скриптах и т.д. Решают проблемы на других сайтах, фриланс - сайтах, но естественно не за "спасибо", а за определённую плату.
>получаеться в свободное времмя я уделяю разработке своему сайту .
получить готовое решение и разработать свой сайт это две разные вещи. Вы хотите за неделю или даже меньше получить хороший сайт? Я в этом сомневаюсь.
Мне не жалко дать Вам готовое решение, дело в другом. Исходя из своего опыта я понял, что готовые решения это плохо. Вы просто берёте, копируете код и радуетесь, но до того момента, пока этот код перестаёт работать. А дальше что? Искать пипла, который Вам будет исправлять поломки или ошибки сайта, вместо того, что бы самому это сделать?
Ваш пример про тарелку... Ладно, пропустим.
Теперь по Вашей проблеме.
Я Вам привёл пример рекурсивного обхода каталога. Вы написали, что Вам это не подходит. В остальных сообщениях я Вам написал не только где этот скрипт живёт, не только дал координаты, но и показал, где их вбить. Вы не внимательно прочитали предыдущие сообщения и как результат разрушили весь код и наделали кучу ошибок(в последнем варианте), хотя до этого не было таких ошибок.
Решите для себя, Вы хотите понять как работает этот код, не вдаваясь в тонкости работы некоторых функций или просто хотите его скопировать и забыть о нём, пусть работает как есть? | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 01:58)
| | >Этот код ни какого отношения к ООП не имеет.
Я знаю так как только начинаю изучать классы .
Еще пример с ЧПУ юрлом ... я помню 2 недели ковырялся .. но не кто не мог помочь . .. то одно косяк то другое .. в конце вышло то что нужно CSS подгружать по полному адресу .. а откуда узнал заглянул в двиг дле .. вот там это и увидел . Всё просто да ужаса . .
Мне нужно собрать пока рабочий сайт на локалке , пусть он ерундовый но по мере времмени будет улучшаться. Что-то новое узнаю .. добавлю исправлю .
У меня ща каша в голове .. я классы учу . .вы мне кинули рекурсию с функцией я давай её вкуривать как она работает . .оказываеться что это не то .. | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 03:00)
| | >Я знаю так как только начинаю изучать классы .
А основы кто будет за Вас учить? Что бы не делать вот так(передача параметров методом $_GET)
<?php
echo "<a href=index.php?$catalog=$file/>".$file."<a><br>";
?>
|
тем более, что показал Вам как оформить ссылку
сначала основы php, а уж потом ООП, если я не прав, то пусть меня поправят. | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 03:13)
| | Вы хотите сказать что вы умный ? или вам уделино малом внимания ? и хотите чтобы к вам обращались и уделяли внимание ? вы мне про то что это к ООП не как не относиться .. сначала нужно знать основы и тд . У меня книга вот .
http://www.ozon.ru/context/detail/id/2400718/
Все я говорил спасибо это от чистой души .. что вы хоть дали понять куда плыть ....
А вот что накипело .
Ну и х*ли ты из себя умного делаешь ? да подавись этим кодом и гордись ! что ты его знаешь и не делись с*ка не скем ! Я тебе про то что мне нужно глушак поменять , а ты мне строение движка сказываешь .
P.S Извенясь накипело ! | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 12:06)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 12:23)
| | А вот вы к чему всё это ! так бы раньше сказали бы , а дурак думаю что мне голову марочите .
А почему накипело ... да потому что вы мне уже бред расказываете !! как ссылку строить ... у меня уже сайт готов .. нужно это дописать и подгрузку файлов организовать . Но с вами я мурыжу этот вопрос уже почти неделю с 23 числа ! ну и что это такое ??
И не надо мне давать ссылки знаю где находиться фрилас и всё остальное .
P.S Да , с русским я знаю туго у меня как и ПХП . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 12:31)
| | Тогда перестаньте хамить, и начните всё сначала, с первого своего сообщения, я рассказал уже всё. Вам мешают только Ваш гонор и не желание разобраться в Вашей же проблеме, которая кроме как Вам больше ни кому не нужна.
И повторю последний раз, готовый код я дал в своём четвёртом сообщении, этот код требует небольших изменений. Что и как изменить я тоже сказал и даже привёл кусочки кода, которые Вам надо соединить в одно целое. А Вы даже не попытались это сделать. | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 13:21)
| | Да почемя я не понял .. да потому что я ссесии еще не изучал . Я даже не знаю как идёт построение .. а какую я привел книгу там она в самом конце , а ООП в середине .
Ладно без сообщений .. как что не получиться отпишусь и скину код что получилось и куда не едут лыжы . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 13:46)
| | Блин, Вы что роман читаете? а перелистать странцы ни как? или это не даст Вам понять ООП в полном объёме? Вы написали откровенную глупость... | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 14:36)
| | Ну первое с чего вы взяли что меня зовут Роман ? перелестать можно но не желательно . Выже сами сказали что нужно знать основы вот мы теперь будем идти по порядку как построенная книга .. думаю что её написал не Вася с деревни .
P.S Да конечно прочитаем ща .. яж написал без коментов , как довкурю отпишусь и выложу код . Проблемы не только же в коде , а есть и помимо другие .. (я не прог.) а так повсеместные . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 15:41)
| | Ну насмешили, так насмешили... :)
роман это не только имя человека, но и литературное произведение... | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 16:48)
| | Хахаха .. да вы меня вообще запутали . ёеперный театр .
У меня есть в загашнике пузырь .. я думаю точно не чего делать уже не буду .. хахаха . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 16:57)
| | Смотрите если будет выводиться все через сессию .. но если я задам ЮРЛ к примеру папку .
papka/test/
То этот скрипт сработает ? какие папки в папке TEST ?
Я так понял он будет записывать проход от начала в сесию ..
к примеру первую papka далее test а вот тут уже все он должен вывести что в папке тест . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 17:17)
| | Написал вот что ..
$dir = opendir('.');
$catalog = isset($_GET['file']) ? $_GET['file'] : ".";
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
while (($file = readdir($dir)) !== false ) {
if ($file == '.' || $file == '..') continue;
if (is_dir ($file))
echo "<a href=index.php?file=$file>".$file."</a><br>";
}
closedir ($dir);
|
Дальше не знаю куда плыть .. ссылка срабатывает точнее переход . | |
|
|
|
|
|
|
|
для: Rutmens
(29.08.2010 в 20:30)
| | >Смотрите если будет выводиться все через сессию .. но если я задам ЮРЛ к примеру папку .
>papka/test/
Через сессию не выводится, в сессии хранятся данные.
>То этот скрипт сработает ? какие папки в папке TEST ?
Вы вообще то пробовали запустить свой скрипт?
>Я так понял он будет записывать проход от начала в сесию ..
>к примеру первую papka далее test а вот тут уже все он должен вывести что в папке тест .
В Вашем случае скрипт ни куда переходить не будет, так как функции opendir() Вы передали текущий каталог и он у Вас не меняется. Подумайте, зачем Вы создавали переменную $catalog ? Зачем написали вот эту строку $catalog = isset($_GET['file']) ? $_GET['file'] : "."; ?
А эта строка означает, что если существует $_GET['file'], то переменной $catalog присвоить значение $_GET['file'], а если $_GET['file'] не существуе, то переменной $catalog присвоить значение " . ", что означает исходный каталог, там где расположен сам скрипт. Пока Вы не нажмёте на ссылку, переменная $catalog будет иметь значение " . "
Потом Вы инициализируете переменную $ses_sion и .... ни где её не используете в Вашем коде!!! Так зачем Вы её создали? Вернее не создали, а не думая скопировали! Вы даже не читали предыдущие сообщения(а там есть как и где использовать переменную $ses_sion) и не собираетесь думать. Я за Вас должен думать?
Так вот, сначала надо инициализировать переменные, а уж потом начинать где то, как то их использовать.
Теперь вот это if ($file == '.' || $file == '..') continue;. continue здесь лишнее, а лишнее надо убрать, а если убрать, то зачем условие if ($file == '.' || $file == '..'); ? Да, условие Вы задали, но дальше что? какой код должен выполняться при выполнении этого условия? Зачем Вы в условии применили логическое "или" - ||? Это не вызовет ошибки, но код будет не совсем точно выводить список файлов и каталогов.
И самое главное, где Вы выставили уровень ошибок через error_reporting()?
Вот ещё одна подсказка, причём последняя. Дальше думайте сами, я уже всё расписал и не раз. Возвращаетесь к четвёртому сверху сообщению и построчно, проговаривая вслух каждую строчку пишите код. Вимательно смотрите и внимательно делайте.
<?php
/* выставляете уровень ошибок */
error_reporting(E_ALL);
/* инициализируем переменные */
$catalog = isset($_GET['file']) ? $_GET['file'] : ".";
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
/* это для визуального контроля, что находится в переменной $catalog */
/* вообще полезно это делать */
echo $catalog." - session<br>";
/* а вот теперь начинаете получать интересующую Вас информацию */
$dir = opendir ($catalog);
//здесь остальной код, всё Вы найдёте выше по теме,
//начиная от четвёртого сверху сообщения
?>
|
Всё это без объявления и вызова функции, если хотите, то сделайте всё в виде функции.
Да, в этом скрипте надо ещё запустить сессии, как это сделать есть у Вас в книге, пролистайте и почитайте, ООП ни куда не сбежит :) | |
|
|
|
|
|
|
|
для: Slo_Nik
(29.08.2010 в 00:32)
| | Вы мне можете готовый ответ написать ? если да то да .. если нет то нет буду на другом форуме искать ответ . | |
|
|
|
|
|
|
|
для: Slo_Nik
(28.08.2010 в 19:41)
| | Спасибо за скрипт давно думал о написании подобного
все работает как надо НО не доконца понял значиние этих строк
<?php
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
?>
|
и
<?php
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
?>
|
был бы признателен за ссылку или в идеале за разяснение | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 13:13)
| | немного уточню
я хочу сделать модулю аналогичный "speedbar" (модуль который показывает текущее место положение посетителя на сайте)
[url]2010[/url] >[url] 05[/url] >[url] 01[/url] | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 13:13)
| |
<?php
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
?>
|
это значит, что если Вы нажали на имя/ссылку каталога, то этот параметр(имя каталога) присваивается переменной $catalog, а по умолчанию значение $catalog == ".", что в моём понимании означает текущий каталог, в котором расположен сам скрипт.
<?php
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
?>
|
переменная $ses_sion для того, что бы можно было переходить из одного каталога в следующий, уровнем ниже. В каком месте кода используется эта переменная, Вы можете посмотреть в сообщениях выше по теме. А что бы было более наглядно, то после инициализации переменных сделайте вывод echo $catalog." - catalog<br>";, при переходе в другие подкаталоги Вы увидите как будет изменяться значение этой переменной.
скрипт расположен в каталоге first, переменная $catalog содержит "."
переходим в каталог second, который расположен в каталоге first , переменная $catalog содержит "./second"
переходим в каталог third, который расположен в каталоге second , переменная $catalog содержит "./second/third"
и т.д.
|
Всё это достигается тем, что имя каталога сохраняется в сессии.
Ну а ссылки ни какой не существует, всё это результат переделки кода, который есть в книге М.Кузнецова и И.Симдянова в главе 13 посвящённой работе с файлами и каталогами.
код работает, но что бы его где то использовать требуется доработка. | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.09.2010 в 15:13)
| | Спасибо сейчас попробую разобратся.
а пока: внутри функции function full_dir_all($a) переменная $ses_sion ничего не возвращяет (т.е. пусто) методом научного тыка зделал вот так, но понимаю что это не верно
<?php
$catalog = isset($_GET['catalog']) ? $_GET['catalog'] : ".";
$_SESSION['cat_next'] = $catalog;
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
$a = $catalog;
/* объявляем функцию */
function full_dir_all($a) {
[b]$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";[/b]
$dir = opendir ($a);
while (($file = readdir($dir)) !== FALSE) {
if(is_file($a."/".$file)){
echo "<a href='".$ses_sion.$file."'>".$file."</a> - это файл<br></td></tr>";
}
else if(is_dir($a."/".$file) && $file != '.' && $file != '..'){
// echo "<a href='?catalog=".$file."'>".$file."</a> (каталог)</h4> - это каталог!!!<br></h5>";
echo "<a href='index.php?catalog=".$ses_sion.$file."'>".$file."</a> (каталог)</h4></td></tr><br>";
/* рекурсивно вызываем функцию */
// full_dir_all($a."/".$file);
}
}
closedir ($dir);
}
echo full_dir_all($a);
?>
|
| |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 15:29)
| | самой первой строкой должно быть error_reporting(E_ALL);
Впишите и посмотрите, что не так.
Зачем $a? | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.09.2010 в 16:21)
| | убрал $a вместо нее сразу $catalog.
С включенным "error_reporting(E_ALL)" писало
Notice: Undefined variable: ses_sion in ........................... но сейчас разберался с кодом, что-то менял ошибка исчезла, видимо гдето ошибся | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 16:49)
| | нашел
ели я убираю строку
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
т.е. я присвоил значение переменной $ses_sion дважды... вне функции а второй раз уже внутри функции
если внутри функции значение не предать то получается
Notice: Undefined variable: ses_sion in (насколько я понял по поведению и ошибке внутри функции данная переменная не содержит ничего)
надеюсь не сильно вас запутал ) | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 17:05)
| | ну так передайте в функцию два параметра function full_dir_all($сatalog, $ses_sion)
хотя функцией удобно оформлять когда нужно вызвать функцию рекурсивно, а так можно и без функции обойтись.
$ses_sion не содержит ни чего, пока Вы находитесь в каталоге по умолчанию, если переходите на уровень ниже, то тогда переменная получает значение равное имени каталога в который Вы перешли.
p.s. Вы не запутали, просто я уже запарился от этой темы после общения с Rutmens | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.09.2010 в 17:18)
| | Slo_Nik Вот и я к тможе .. что эта тема меня тоже достала .. ладно буду пробывать чуть пойже увы дела. | |
|
|
|