Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Переход из одной папки в другую .

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-52] 

 
 автор: Rutmens   (02.09.2010 в 22:48)   письмо автору
 
   для: Slo_Nik   (02.09.2010 в 17:18)
 

Slo_Nik Вот и я к тможе .. что эта тема меня тоже достала .. ладно буду пробывать чуть пойже увы дела.

  Ответить  
 
 автор: Slo_Nik   (02.09.2010 в 17:18)   письмо автору
 
   для: predator   (02.09.2010 в 17:05)
 

ну так передайте в функцию два параметра function full_dir_all($сatalog, $ses_sion)
хотя функцией удобно оформлять когда нужно вызвать функцию рекурсивно, а так можно и без функции обойтись.
$ses_sion не содержит ни чего, пока Вы находитесь в каталоге по умолчанию, если переходите на уровень ниже, то тогда переменная получает значение равное имени каталога в который Вы перешли.

p.s. Вы не запутали, просто я уже запарился от этой темы после общения с Rutmens

  Ответить  
 
 автор: predator   (02.09.2010 в 17:05)   письмо автору
 
   для: 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 в 16:49)   письмо автору
 
   для: Slo_Nik   (02.09.2010 в 16:21)
 

убрал $a вместо нее сразу $catalog.
С включенным "error_reporting(E_ALL)" писало
Notice: Undefined variable: ses_sion in ........................... но сейчас разберался с кодом, что-то менял ошибка исчезла, видимо гдето ошибся

  Ответить  
 
 автор: Slo_Nik   (02.09.2010 в 16:21)   письмо автору
 
   для: predator   (02.09.2010 в 15:29)
 

самой первой строкой должно быть error_reporting(E_ALL);
Впишите и посмотрите, что не так.
Зачем $a?

  Ответить  
 
 автор: predator   (02.09.2010 в 15:29)   письмо автору
 
   для: 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); 
?>

  Ответить  
 
 автор: Slo_Nik   (02.09.2010 в 15:13)   письмо автору
 
   для: 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 в 15:07)   письмо автору
 
   для: predator   (02.09.2010 в 13:13)
 

немного уточню
я хочу сделать модулю аналогичный "speedbar" (модуль который показывает текущее место положение посетителя на сайте)

[url]2010[/url] >[url] 05[/url] >[url] 01[/url]

  Ответить  
 
 автор: predator   (02.09.2010 в 13:13)   письмо автору
 
   для: 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']."/" ""
?>


был бы признателен за ссылку или в идеале за разяснение

  Ответить  
 
 автор: Slo_Nik   (30.08.2010 в 12:23)   письмо автору
 
   для: 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);
  
//здесь остальной код, всё Вы найдёте выше по теме,
 //начиная от четвёртого сверху сообщения 
?>

Всё это без объявления и вызова функции, если хотите, то сделайте всё в виде функции.
Да, в этом скрипте надо ещё запустить сессии, как это сделать есть у Вас в книге, пролистайте и почитайте, ООП ни куда не сбежит :)

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-52] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования