Plantis
24.07.2009 - 22:33
Есть такой скрипт, который считывает название файлов из каталога
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она не пустая... приглядись - и ты увидишь там точки (в твоем же примере)... их надо проигнорить
Спустя 6 минут, 30 секунд (24.07.2009 - 22:00) Plantis написал(а):
хм. а почему тогда на первом скрипте точки нету?
странно в начале файла точка получаеться. Которую надо убить.
Спустя 32 минуты, 11 секунд (24.07.2009 - 22:32) sergeiss написал(а):
Не надо никого убивать!
Надо просто пропустить ту итерацию цикла, где имя файла состоит из одной или двух точек. Это будут как раз 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 варианта: одну точку и две точки. |
Если уж подходить "буквоедски"
, то только один вариант: первый символ - точка.
Спустя 1 час, 8 минут, 58 секунд (25.07.2009 - 00:14) Plantis написал(а):
PHP |
if ($file <> "." AND $file <> "..") { |
вставил проверку перед открытием файла. Всё заработало. Теперь скприт сканирует директорию и выполняет мускул запросы