[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Каталоги, файлы и чтение из них
Plantis
Есть такой скрипт, который считывает название файлов из каталога
PHP
$serverdb = "localhost";
$logindb = "root";
$passdb = "root";
$namedb= "plantis_engine";

$conn = mysql_connect("$serverdb","$logindb","$passdb");
            mysql_select_db("$namedb",$conn);
            
 $dir 
= opendir (".");
  echo "Files:\n";
  while ($file = readdir ($dir)) 
  
{
    echo "$file<br>1<br>";

}
  closedir ($dir);

Такое выводится на экран
HTML
Files: .
1
..
1
categories.pedb
1
dbcreate.php
1
globals.pedb
1
pages.pedb
1
parts.pedb
1
users.pedb
1


Есть такой скрипт, который должен читать из каталога по очереди файлы и содержимое файла отправлять запросом в БД.


PHP
$serverdb = "localhost";
$logindb = "root";
$passdb = "root";
$namedb= "plantis_engine";

$conn = mysql_connect("$serverdb","$logindb","$passdb");
            mysql_select_db("$namedb",$conn);
            
 $dir 
= opendir (".");
  echo "Files:\n";
  while ($file = readdir ($dir)) 
  
{
    echo "$file<br>1";
  
            
 

    print 
"$file<br><hr>2";
    
    
    $file_handle 
= fopen("$file", "r") or die("Can't open file!"); 
$line 
= fread($file_handle,5000);
   echo $line;
fclose($file_handle);
        print "<br>3";
mysql_query($line) or die(mysql_error() . ' -> ' . $line);
print "<br><hr>4";
}
  closedir ($dir);

ТО что выводится на экран
HTML
Files: .
1.
2
Warning: fopen(.) [function.fopen]: failed to open stream: Permission denied in D:\wamp\www\Plantis_engine\install\dbtables\dbcreate.php on line 22
Can't open file!



Вопрос. Почему не работает второй скрипт? Почему переменная $file пустая, хотя начало у первого и второго скрипта одинаковое.?



Спустя 21 минута, 4 секунды (24.07.2009 - 21:54) Sylex написал(а):
Plantis
она не пустая... приглядись - и ты увидишь там точки (в твоем же примере)... их надо проигнорить smile.gif

Спустя 6 минут, 30 секунд (24.07.2009 - 22:00) Plantis написал(а):
хм. а почему тогда на первом скрипте точки нету?
странно в начале файла точка получаеться. Которую надо убить.

Спустя 32 минуты, 11 секунд (24.07.2009 - 22:32) sergeiss написал(а):
Не надо никого убивать! smile.gif Надо просто пропустить ту итерацию цикла, где имя файла состоит из одной или двух точек. Это будут как раз 2 первые строки.

Спустя 14 минут, 8 секунд (24.07.2009 - 22:47) Plantis написал(а):
я поставил If и пропускаю там где точки

Спустя 8 минут, 34 секунды (24.07.2009 - 22:55) sergeiss написал(а):
Цитата (Plantis @ 24.07.2009 - 23:47)
я поставил If и пропускаю там где точки

Непонятно - после этого заработало всё нормально или нет?

Спустя 2 минуты, 49 секунд (24.07.2009 - 22:58) Nikitian написал(а):
Цитата (Plantis @ 24.07.2009 - 19:47)
я поставил If и пропускаю там где точки

Надо пропускать 2 варианта: одну точку и две точки.

Спустя 6 минут, 56 секунд (24.07.2009 - 23:05) sergeiss написал(а):
Цитата (Nikitian @ 24.07.2009 - 23:58)
Надо пропускать 2 варианта: одну точку и две точки.

Если уж подходить "буквоедски" smile.gif, то только один вариант: первый символ - точка.

Спустя 1 час, 8 минут, 58 секунд (25.07.2009 - 00:14) Plantis написал(а):
PHP
if ($file <> "." AND $file <> "..") {

вставил проверку перед открытием файла. Всё заработало. Теперь скприт сканирует директорию и выполняет мускул запросы smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.