Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с каталогами 
:(
    Опции темы
Pena
  Дата 20.7.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КорнеплодЪ
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 20.4.2006
Где: эРэФия, аул Москв а...

Репутация: нет
Всего: нет



Подскажите самовару, что не так:
Код

 $dir = 'dir/'; //Расположение рассматриваемой папки
 $opendir = opendir($dir); //Открытие рассматриваемой папки
 $number = 1; //объявление переменной $number со значением еденицы
 
 echo("<table><tr>"); //Начало таблицы и строки в ней

 //Перечисление:
 echo("<td>"); //Начало ячейки для нумерованного списка содержимого рассматриваемой папки
 while($file = readdir($opendir)){ //Присвоение переменной $file названия каждого последующего в цикле элемента, содержащегося в рассматриваемой папке (с открытием оной)
  echo("<div>" . $number++ . "</div>"); //Перечисление путём увеличения значения переменной $number на единицу
 }
 closedir($opendir); //Закрытие рассматриваемой папки
 echo("</td>"); //Окончание для нумерованного списка содержимого рассматриваемой папки

 //Список содержимого:
 echo("<td>"); //Начало ячейки для списка наименований содержимого рассматриваемой папки
 while($file = readdir($opendir)){ //Присвоение переменной $file названия каждого последующего в цикле элемента, содержащегося в рассматриваемой папке (с открытием оной)
  echo("<div>" . $file . "</div>");
 }
 closedir($opendir); //Закрытие рассматриваемой папки
 echo("</td>");  //Окончание ячейки для списка наименований содержимого рассматриваемой папки
 
 echo("</tr></table>"); //Окончание строки и самой таблицы


Знаю что азы, но не могу понять принципа... =)

Это сообщение отредактировал(а) Pena - 20.7.2009, 22:55
--------------------
Самовар по всем вопросам - сильно не ругайте 
PM   Вверх
SneG0K
Дата 20.7.2009, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Цитата(Pena @  19.7.2009,  23:58 Найти цитируемый пост)
не могу понять принципа

В общем выводиться таблица, с номером файла и именем. Может что-то конкретней интересует?
PM WWW Skype   Вверх
Pena
Дата 20.7.2009, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КорнеплодЪ
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 20.4.2006
Где: эРэФия, аул Москв а...

Репутация: нет
Всего: нет



Да не-е) Это я написал и понимаю что должно произойти, НО проблема в том что эта конструкция выдаёт ошибку! Работает только первая часть:
Код

 //Перечисление:
 echo("<td>");
 while($file = readdir($opendir)){
  echo("<div>" . $number++ . "</div>");
 }
 closedir($opendir);
 echo("</td>");

, если поменять местами, будет работать та которую поставить первой...
Вот я и не понимаю в чём проблема, вроде сделано по документации... =\

Это сообщение отредактировал(а) Pena - 20.7.2009, 07:22
--------------------
Самовар по всем вопросам - сильно не ругайте 
PM   Вверх
ksnk
Дата 20.7.2009, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



opendir сколько раз должен делаться? Столько-же, сколько и closedir?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Pena
Дата 20.7.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КорнеплодЪ
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 20.4.2006
Где: эРэФия, аул Москв а...

Репутация: нет
Всего: нет



М-м-м... по идее, да... Я просто логики не понимаю с каталогами... с файлами всё ясно... Если здесь один раз открыть каталог, а в конце закрыть - не сработает... для каждой функции надо открывать закрывать? Что не так у меня сейчас?
--------------------
Самовар по всем вопросам - сильно не ругайте 
PM   Вверх
fesor
Дата 20.7.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



А почему нельзя все сделать в одном цикле??
Код

$dir = 'dir/';
$opendir = opendir($dir);
$number = 1;
echo("<table>\n\t<tr>");

while($file = readdir($opendir))
{
    echo"\n\t\t<td>", $number++ , "</td>\n\t\t<td>",$file,"</td>";
}
closedir($opendir);

echo("\n\t</tr>\n</table>");


Ну или блоки пихайте... тут уже вопрос предпочтений. В голову не приходит ни одного способа вывода который модет потребовать два цикла.

Это сообщение отредактировал(а) fesor - 20.7.2009, 09:15
PM MAIL WWW   Вверх
SneG0K
Дата 20.7.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Pena, убери closedir() в 12 строке. Ты открыл папку и перечисляешь все файлы внутри. Но после первого цикла ты сразу-же закрываешь папку, по-этому во втором цикле ошибка, так-как ты пытаешься перечислить все файлы внутри с уже закрытой папки.

Добавлено через 40 секунд
Цитата(fesor @  20.7.2009,  08:14 Найти цитируемый пост)
который модет потребовать два цикла

зачем требовать. Топикстартеру так хочется. 
PM WWW Skype   Вверх
fesor
Дата 20.7.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



еще со школьных времен помниться фраза "минимизация количества итераций"... Эх... славное было время)
PM MAIL WWW   Вверх
SneG0K
Дата 20.7.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



fesor, топик стартер в школе не учил PHP и пока знакомиться с основами.
PM WWW Skype   Вверх
Pena
Дата 20.7.2009, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КорнеплодЪ
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 20.4.2006
Где: эРэФия, аул Москв а...

Репутация: нет
Всего: нет



Цитата(fesor @ 20.7.2009,  09:14)
А почему нельзя все сделать в одном цикле??
Код

$dir = 'dir/';
$opendir = opendir($dir);
$number = 1;
echo("<table>\n\t<tr>");

while($file = readdir($opendir))
{
    echo"\n\t\t<td>", $number++ , "</td>\n\t\t<td>",$file,"</td>";
}
closedir($opendir);

echo("\n\t</tr>\n</table>");


Ну или блоки пихайте... тут уже вопрос предпочтений. В голову не приходит ни одного способа вывода который модет потребовать два цикла.

Мне же нужно чтоб под каждый цикл была своя ячейка... А Вы под каждый его (цикла) прогон создаёте новую, да ещё в одну строку)

Добавлено @ 22:35
Цитата(SneG0K @ 20.7.2009,  10:20)
Pena, убери closedir() в 12 строке. Ты открыл папку и перечисляешь все файлы внутри. Но после первого цикла ты сразу-же закрываешь папку, по-этому во втором цикле ошибка, так-как ты пытаешься перечислить все файлы внутри с уже закрытой папки.


Убрал, не работает... А почему "так-как ты пытаешься перечислить все файлы внутри с уже закрытой папки.", если мы её сново открываем $opendir? (или не так?)

з.ы. Расписал (отcommentировал) код в примере как понимаю... где вру?

Это сообщение отредактировал(а) Pena - 20.7.2009, 22:59
--------------------
Самовар по всем вопросам - сильно не ругайте 
PM   Вверх
fesor
Дата 21.7.2009, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Pena, ну так что мешает то сделать это? Вопервых для перечесления количества файлов ненадо открывать его. Можешь сначала пройти массив и узнать количество файлов а потом просто через for построишь список с циферками. ВСЕ МОЖНО СДЕЛАТЬ В ОДИН ЦИКЛ! Просто пожертвуй например одну переменню.

P.s. Оптимизации учили всегда... или нет? Покарйнемере это единственная забавная штука в паскале была.
PM MAIL WWW   Вверх
Photon
Дата 21.7.2009, 04:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 27.2.2009
Где: Таганрог

Репутация: 10
Всего: 12



Код

 $dir = 'dir/';
 $opendir = opendir($dir);
 $number = 1;
 echo("<table style="border: 1px #000000 solid;">");
 while($file = readdir($opendir)){
      echo("<tr><td style="border-right: 1px #000000 solid;">" . $number++ . "</td><td>".$file."</td></tr>");
 }
 closedir($opendir);
 echo("</table>");


Ну скажем делаем так и радуемся жизни..


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
_zorn_
Дата 21.7.2009, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1076
Регистрация: 21.8.2007

Репутация: 6
Всего: 12



Если цель именно пронумеровать, можно воспользоваться нумерованным списком.
Код

 $dir = 'dir/';
 $opendir = opendir($dir);
 echo "<ol>";
 while($file = readdir($opendir)){
      echo "<li>".$file."</li>";
 }
 closedir($opendir);
 echo "</ol>");

и лишняя переменная не нужна smile 
PM MAIL   Вверх
fesor
Дата 21.7.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Хм.. пожайлу это лучший вариант.
PM MAIL WWW   Вверх
Pena
Дата 21.7.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


КорнеплодЪ
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 20.4.2006
Где: эРэФия, аул Москв а...

Репутация: нет
Всего: нет



fesor <=
Да, я так делал, просто потом нужно будет получить тип, размер, дату создания файлов (а эту информацию из массива не получишь)... и я думал сделать для начала все однотипно ради пущщей ясности)

Photon, fesor <=
Благодарю за примеры)
Только мне необходимо чтобы выделяя содержимое одного столбца не захватывалось бы содержимое другого, именно поэтому я использовал несколько циклов)

_zorn_ <= 
Благодарю! Мою задачу решило) даже лучше -нумерация вообще не выделяется, этого и не нужно - грамотнее)

НО господа... граждане мне всё таки интересно, в чём же ошибка в описанном мной ранее?)
--------------------
Самовар по всем вопросам - сильно не ругайте 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.