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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как создать файл в определённом каталоге? [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: При условии, что сценарий находится в папке admin
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 11:28:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




valenok пишет:
Объясните как вы понимаете вот это:
$new_dir= "$dir/$file";

я так понял, что $dir - имя каталока, $file - файл) Вроде нормально всё.
Itan пишет:
если значение равно dir/dir1? Пожалуйста..

смотри получился массив: ('d1', 'd2', 'd3').
curdir = '';
for i=0 to 3 {
curdir .= '/'.mass[i]
mkdir(curdir)
}
например так. синтаксис не php, просто так короче
 
 Top
Itan
Отправлено: 09 Октября, 2008 - 11:30:38
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




ну это я просто так написал. на самом деле это
$new_dir="$dir" . "/" . "$file";
(Добавление)
Ага, понятно, а если допустим максимально можно создать 10 папок (for i=0 to 10), а я ввёл, допустим, всего три папки (d1/d2/d3) - ошибк не будет?
(Добавление)
Вот код.
Выдаёт ошибку (Денвер) - Parse error: syntax error, unexpected '=', expecting ';' in Z:\home\localhost\www\CMS\1.php on line 7

Скорее всего я неправильно указал действия в скобках:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dir = "dir1/dir2";
  5. $new_dir = explode ("/", $dir);
  6.  
  7. $curdir = "..";
  8. for (i=0; i <= 3) {
  9. $curdir .= "/" . new_dir[i];
  10. mkdir ("$curdir", '0755');
  11. }
  12.  
  13. ?>
  14.  
 
 Top
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 12:57:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




1-есть функция, определяющий длину массива.
2-переменные в php начинаются с $.
3-оператору for нужно 3 параметра.
Улыбка
 
 Top
Itan
Отправлено: 09 Октября, 2008 - 13:05:11
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Тогда вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dir = "dir1/dir2";
  5. $new_dir = explode ("/", $dir);
  6.  
  7. $curdir = "../";
  8. for ($i = 0; $i <= 3; $i++) {
  9. $curdir .= new_dir[$i];
  10. mkdir ("$curdir", '0755');
  11. }
  12.  
  13. ?>
  14.  

но уже с другой ошибкой -
Parse error: syntax error, unexpected '[' in Z:\home\localhost\www\CMS\1.php on line 8

что-то со скобкой не так... Огорчение
 
 Top
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 13:19:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




см. п. 2 и внимательно на строку с ошибкой
(Добавление)
и не забываем про '/', когда подсоединям имена нижележащих каталогов
 
 Top
valenok Модератор
Отправлено: 09 Октября, 2008 - 13:32:38
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




ВОТ, так создают файлы где угодно и где попало.

fopen ('directory/subdirectory/filename.extension', 'w');

---

В вашем примере выкинет ошибку undefined index разумеется.
Только не ясно что вы создаете.

--

Цитата:
я так понял, что $dir - имя каталока, $file - файл) Вроде нормально всё.

Это ещё должен понять автор, а то до него чего то не доходит что нужно указаывать
где содавать файл.


-----
Truly yours, Sasha.
 
My status
 Top
Itan
Отправлено: 09 Октября, 2008 - 13:39:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




блин.......
нихрена не выходит!
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dir = "dir1/dir2/dir3";
  5. $new_dir = explode ("/", $dir);
  6.  
  7. for ($i = 0; $i <= 3; $i++) {
  8. $curdir = $new_dir[$i];
  9. mkdir ("$curdir", '0755');
  10. }
  11.  
  12. ?>
  13.  


создаёт три папки в одной директроии - dir1, dir2, dir3, а не одну в другой и выдаёт ошибку...

Warning: mkdir() [function.mkdir]: No error in Z:\home\localhost\www\CMS\1.php on line 8

чё делать?((((

(Отредактировано автором: 09 Октября, 2008 - 13:40:36)

 
 Top
valenok Модератор
Отправлено: 09 Октября, 2008 - 14:12:22
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




$curdir .= $new_dir[$i];


-----
Truly yours, Sasha.
 
My status
 Top
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 14:19:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




даже $curdir .= $new_dir[$i].'/';
а ворнинг выдает потому что dir1/dir2/dir3 - 3 папки, а $i = 0; $i <= 3; - 4 папки.
 
 Top
Itan
Отправлено: 09 Октября, 2008 - 14:24:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Нет. Тогда можно подругому -
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dir = "dir1/dir2/dir3";
  5. $new_dir = explode ("/", $dir);
  6.  
  7. mkdir ("$new_dir[0]", '0755');
  8. mkdir ("$new_dir[0]/$new_dir[1]", '0755');
  9. mkdir ("$new_dir[0]/$new_dir[1]/$new_dir[2]", '0755');
  10. mkdir ("$new_dir[0]/$new_dir[1]/$new_dir[2]/$new_dir[3]", '0755');
  11. mkdir ("$new_dir[0]/$new_dir[1]/$new_dir[2]/$new_dir[3]/$new_dir[4]", '0755');
  12.  
  13. ?>
  14.  


Только тут уже две ошибки -
Warning: mkdir() [function.mkdir]: File exists in Z:\home\localhost\www\CMS\1.php on line 9

Warning: mkdir() [function.mkdir]: File exists in Z:\home\localhost\www\CMS\1.php on line 10

Я думаю, что это можно решить с помощью оператора if, при условии, что мы знаем сколько элементов массивов создала функция explode().
Попробую с помощью count().
 
 Top
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 14:29:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Молодой челевек, изучите сначала основы алгоритмизации, и, наверное, даже логического мышления. А только после этого приступайте к языкам
(Добавление)
и английский язык
 
 Top
Itan
Отправлено: 09 Октября, 2008 - 14:32:44
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




Вот что получилось:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $dir = "dir1/dir2/dir3";
  5. $new_dir = explode ("/", $dir);
  6. $dir_count = $new_dir[count ($new_dir)];
  7.  
  8. if ($dir_count = 1) {
  9. mkdir ("$new_dir[0]", '0755');
  10. } elseif ($dir_count = 2) {
  11. mkdir ("$new_dir[0]/$new_dir[1]", '0755');
  12. } elseif ($dir_count = 3) {
  13. mkdir ("$new_dir[0]/$new_dir[1]/$new_dir[2]", '0755');
  14. } elseif ($dir_count = 4) {
  15. mkdir ("$new_dir[0]/$new_dir[1]/$new_dir[2]/$new_dir[3]", '0755');
  16. } elseif ($dir_count = 5) {
  17. mkdir ("$new_dir[0]/$new_dir[1]/$new_dir[2]/$new_dir[3]/$new_dir[4]", '0755');
  18. }
  19.  
  20. ?>
  21.  

Создаёт папку dir1 и всё. Никаких ошибок.... Огорчение
 
 Top
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 14:39:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




1- if dircount = 1000
2 - посмотрите в справочнике операторы сравнения и сраните их с оператором присваивания
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $dir = "dir1/dir2/dir3";
  4. $new_dir = explode ("/", $dir);
  5. $cur_dir = '';
  6. $n = count($newdir);
  7. for ($i = 0; $i < $n ; $i++) {
  8. $curdir .= $new_dir[$i].'/';
  9. mkdir ("$curdir", '0755');
  10. }
  11.  
  12. ?>

(Добавление)
Itan пишет:
$dir_count = $new_dir[count ($new_dir)];
- это что означает?
(Добавление)
что вы ожидаете увидеть в dir_count?
 
 Top
Itan
Отправлено: 09 Октября, 2008 - 14:49:53
Post Id


Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Окт. 2008  


Помог: 0 раз(а)




СПАСИБО!!! Ха-ха Закатив глазки Должен буду!
(Добавление)
Я всегда знал, что на форуме php.su мне всегда помогут!
(Добавление)
Извините, что всех достал Улыбка

(Отредактировано автором: 09 Октября, 2008 - 14:54:23)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB