Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Возвращение новичка ( или как задавать простые вопросы и что бы на них был дан ответ :))
Форумы портала PHP.SU » » Вопросы новичков » Возвращение новичка ( или как задавать простые вопросы и что бы на них был дан ответ :))

Страниц (1): [1]
 

1. Dkhar - 22 Февраля, 2015 - 12:04:04 - перейти к сообщению
Помогите, пожалуйста, разобраться.

Простая файловая система на подобии norton-comander, far, FileZilla с упрощенной версией.
Её путь будет: index.php?page=program1 .
Необходимо:
1) вывести каталог папок и файлов для данной директории, используя scandir('.'). Перед названием выводить иконку папки, или иконку файла соответственно. Проверку делать на: is_dir() - else.
2) Папки сделать кликабельными, через ссылку передавать второй аргумент - путь к файлу по примеру: <a href="/index.php?page=program1&link=echo (isset($link) ? $link.'/'.$v :$v);">имя папки</a> . Данный путь будет содержаться в массиве после использования функции scandir.
3) По переходу по ссылке будет передаваться $_GET['link'], который необходимо будет подставить в функцию scandir для того, чтобы отобразить файлы и папки внутри конкретной директории.

4) Таким образом мы сможем воссоздать файловую систему и передвигаться по директориям и поддиректориям.

Цели программы: изучить новые функции + цикл с массивом и множества аргументов для $_GET.

Что я наваяла:

PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = scandir(".");
  3. echo '<pre>';
  4. print_r ($dir);
  5. echo '</pre>';
  6. echo '<ol>';
  7. foreach($dir as $item){
  8.  if(is_dir($item)){
  9.   echo "<li id='dir'><a href="/index.php?page=program1&link=echo (isset($link) ? $item.'/'.$v :$v);">$item</a></li>";
  10.  }
  11.  else echo "<li id='file'>$item</li>";
  12. }
  13. echo '</ol>';
  14.  


Я не понимаю:
1. Откуда берутся переменные $v и $link?
2. Что в них должно быть?
3. Как оно вообще должно работать?
Я уже просто отчаялась разобраться в этом! Хочется же понимать, что делаешь.
2. Avarskiy - 22 Февраля, 2015 - 13:01:15 - перейти к сообщению
Так, а откуда вы взяли $link и $v?
PHP:
скопировать код в буфер обмена
  1. $dir = scandir(".");
  2. echo '<pre>';
  3. print_r($dir);
  4. echo '</pre>';
  5. echo '<ol>';
  6. foreach ($dir as $item) {
  7.     if (is_dir($item)) {
  8.         echo "<li id='dir'><a href='/index.php?page=program1&link=$item'>$item</a></li>";
  9.     } else
  10.         echo "<li id='file'>$item</li>";
  11. }
  12. echo '</ol>';
3. Dkhar - 22 Февраля, 2015 - 15:37:02 - перейти к сообщению
Avarskiy пишет:
Так, а откуда вы взяли $link и $v?
PHP:
скопировать код в буфер обмена
  1. $dir = scandir(".");
  2. echo '<pre>';
  3. print_r($dir);
  4. echo '</pre>';
  5. echo '<ol>';
  6. foreach ($dir as $item) {
  7.     if (is_dir($item)) {
  8.         echo "<li id='dir'><a href='/index.php?page=program1&link=$item'>$item</a></li>";
  9.     } else
  10.         echo "<li id='file'>$item</li>";
  11. }
  12. echo '</ol>';


я задаю этот же вопрос Улыбка
4. DivMan - 15 Февраля, 2017 - 18:03:08 - перейти к сообщению
Я продолжу тему.

Почему не переходит по ссылкам?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $scan = __DIR__;
  4. $dir = scandir($scan);
  5. echo '<pre>';
  6. print_r ($dir);
  7. echo '</pre>';
  8. ?>
  9. <ol>
  10.     <?foreach($dir as $v):?>
  11.         <?if(is_dir($scan.'/'.$v)):?>
  12.         <?PHP $l = isset($link) ? $link .'/' .$v :$v; ?>
  13.         <li id="dir"><a href="fm.php?page=program&link=<?=$l?>"><?=$v?></a></li>
  14.         <?else:?>
  15.         <li id='file'><?=$v?></li>
  16.         <?endif?>
  17.     <?endforeach?>
  18. </ol>
  19.  
5. Строитель - 15 Февраля, 2017 - 21:21:10 - перейти к сообщению
DivMan пишет:
Почему не переходит по ссылкам?
Потому что значение переменной $v оборачивается в html-тег ссылки только в том случае, если выполняется условие <?if(is_dir($scan.'/'.$v)):?>

А выполняться оно будет только в том случае, если в переменных $scan.'/'.$v будет записана директория.

 

Powered by ExBB FM 1.0 RC1