|
|
|
|
|
для: Slo_Nik
(02.09.2010 в 17:18)
| | Slo_Nik Вот и я к тможе .. что эта тема меня тоже достала .. ладно буду пробывать чуть пойже увы дела. | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 17:05)
| | ну так передайте в функцию два параметра function full_dir_all($сatalog, $ses_sion)
хотя функцией удобно оформлять когда нужно вызвать функцию рекурсивно, а так можно и без функции обойтись.
$ses_sion не содержит ни чего, пока Вы находитесь в каталоге по умолчанию, если переходите на уровень ниже, то тогда переменная получает значение равное имени каталога в который Вы перешли.
p.s. Вы не запутали, просто я уже запарился от этой темы после общения с Rutmens | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 16:49)
| | нашел
ели я убираю строку
$ses_sion = isset($_SESSION['cat_next']) ? $_SESSION['cat_next']."/" : "";
т.е. я присвоил значение переменной $ses_sion дважды... вне функции а второй раз уже внутри функции
если внутри функции значение не предать то получается
Notice: Undefined variable: ses_sion in (насколько я понял по поведению и ошибке внутри функции данная переменная не содержит ничего)
надеюсь не сильно вас запутал ) | |
|
|
|
|
|
|
|
для: Slo_Nik
(02.09.2010 в 16:21)
| | убрал $a вместо нее сразу $catalog.
С включенным "error_reporting(E_ALL)" писало
Notice: Undefined variable: ses_sion in ........................... но сейчас разберался с кодом, что-то менял ошибка исчезла, видимо гдето ошибся | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 15:29)
| | самой первой строкой должно быть error_reporting(E_ALL);
Впишите и посмотрите, что не так.
Зачем $a? | |
|
|
|
|
|
|
|
для: 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 в 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 посвящённой работе с файлами и каталогами.
код работает, но что бы его где то использовать требуется доработка. | |
|
|
|
|
|
|
|
для: predator
(02.09.2010 в 13:13)
| | немного уточню
я хочу сделать модулю аналогичный "speedbar" (модуль который показывает текущее место положение посетителя на сайте)
[url]2010[/url] >[url] 05[/url] >[url] 01[/url] | |
|
|
|
|
|
|
|
для: 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']."/" : "";
?>
|
был бы признателен за ссылку или в идеале за разяснение | |
|
|
|
|
|
|
|
для: 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);
//здесь остальной код, всё Вы найдёте выше по теме,
//начиная от четвёртого сверху сообщения
?>
|
Всё это без объявления и вызова функции, если хотите, то сделайте всё в виде функции.
Да, в этом скрипте надо ещё запустить сессии, как это сделать есть у Вас в книге, пролистайте и почитайте, ООП ни куда не сбежит :) | |
|
|
|
|