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 :: Версия для печати :: Как создать файл в определённом каталоге? [2]
Форумы портала PHP.SU » PHP » Программирование на PHP » Как создать файл в определённом каталоге?

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

16. Champion - 09 Октября, 2008 - 11:28:40 - перейти к сообщению
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, просто так короче
17. Itan - 09 Октября, 2008 - 11:30:38 - перейти к сообщению
ну это я просто так написал. на самом деле это
$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.  
18. Champion - 09 Октября, 2008 - 12:57:43 - перейти к сообщению
1-есть функция, определяющий длину массива.
2-переменные в php начинаются с $.
3-оператору for нужно 3 параметра.
Улыбка
19. Itan - 09 Октября, 2008 - 13:05:11 - перейти к сообщению
Тогда вот так:
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

что-то со скобкой не так... Огорчение
20. Champion - 09 Октября, 2008 - 13:19:55 - перейти к сообщению
см. п. 2 и внимательно на строку с ошибкой
(Добавление)
и не забываем про '/', когда подсоединям имена нижележащих каталогов
21. valenok - 09 Октября, 2008 - 13:32:38 - перейти к сообщению
ВОТ, так создают файлы где угодно и где попало.

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

---

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

--

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

Это ещё должен понять автор, а то до него чего то не доходит что нужно указаывать
где содавать файл.
22. Itan - 09 Октября, 2008 - 13:39:14 - перейти к сообщению
блин.......
нихрена не выходит!
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

чё делать?((((
23. valenok - 09 Октября, 2008 - 14:12:22 - перейти к сообщению
$curdir .= $new_dir[$i];
24. Champion - 09 Октября, 2008 - 14:19:10 - перейти к сообщению
даже $curdir .= $new_dir[$i].'/';
а ворнинг выдает потому что dir1/dir2/dir3 - 3 папки, а $i = 0; $i <= 3; - 4 папки.
25. Itan - 09 Октября, 2008 - 14:24:06 - перейти к сообщению
Нет. Тогда можно подругому -
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().
26. Champion - 09 Октября, 2008 - 14:29:01 - перейти к сообщению
Молодой челевек, изучите сначала основы алгоритмизации, и, наверное, даже логического мышления. А только после этого приступайте к языкам
(Добавление)
и английский язык
27. Itan - 09 Октября, 2008 - 14:32:44 - перейти к сообщению
Вот что получилось:
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 и всё. Никаких ошибок.... Огорчение
28. Champion - 09 Октября, 2008 - 14:39:00 - перейти к сообщению
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?
29. Itan - 09 Октября, 2008 - 14:49:53 - перейти к сообщению
СПАСИБО!!! Ха-ха Закатив глазки Должен буду!
(Добавление)
Я всегда знал, что на форуме php.su мне всегда помогут!
(Добавление)
Извините, что всех достал Улыбка

 

Powered by ExBB FM 1.0 RC1