Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2008, 19:07   #1
ArtUrlWWW
 
Регистрация: 25.08.2008
Сообщений: 9
По умолчанию Помогите пожалуйста осуществить индексацию каталога с подкаталогами

Задача такая:

Имеется каталог, содержащий в себе подкаталоги
Корень каталога имеет ид 0

Нужно обойти каталоги и все их подкаталоги инкрементируя значение ИД папок

т.е. если
в корне лежит папка артур первая по списку она имеет ид 1, т.к. она вторая от корня

у неё ид 1 и парент 0

но в ней лежит папка прграммирование, она должна иметь ИД 2 и парента 1

в папке программирование лежит папка "По Си" - Ид3 парент 2

в папке Артур (ИД 1 парент 0) лежит папка "Музыка" (Парент 1 ИД 4)

в музыке (П1 ИД 4) лежит "РОк" (П4 Ид5)

смотри дальше интереснее

в корне лежит "Бакап" (П 0 ИД6) в ней Артур (П6 ИД7)

В Артур (П6 Ид7) лежит "Музыка" (П7 Ид8)

и т.д.

всё это нужно решить на пхп + внести в мускул

вот что то написал но неправильно выставляются парент ИД и ИД папки, нет наследования.


Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<?
session_start();
$_SESSION['blablabla']=0;

$path2="/var/www/vhosts/****/httpdocs/files2";
$path1="/var/www/vhosts/********/httpdocs/files1";
$path7="/var/www/vhosts/******/httpdocs/files";

// данные для подключения к MySQL
$dbhostname = "localhost";
$dbusername = "********";
$dbpassword = "******";
$database = "*******";
$_SESSION['curdirid']=0;

$ttt777="";
include('config.php');

mysql_connect ($dbhostname , $dbusername , $dbpassword);
mysql_select_db($database);
mysql_query("TRUNCATE TABLE filesstruct")or die(mysql_error());
mysql_query("TRUNCATE TABLE dirs")or die(mysql_error());

function ind($path, $parentid) {
$curd=$parentid;
@closedir($dir);
@$dir = @opendir(@$path);
while ((@$file = @readdir(@$dir))) {
if (is_file($path . "/". $file)) {

}
else {
if ($file!="."){
if ($file!=".."){

$curd=$curd+1;

$file1=ereg_replace("'", "_+_", $file);

$gotovo="INSERT INTO dirs VALUES (".$curd.", ".$parentid.", '".$file1."')";

mysql_query($gotovo)or die(mysql_error());
ind($path . "/".$file, $curd+1);

}
}
}


}

}
$_SESSION['curdirid']=0;
$parentiddd=0;
ind ($path1, $parentiddd);
/*ind ($path7, "", 0);
ind ($path2, "", 0);*/

mysql_close();

?>
ГОвото.
</body>
</html>
ArtUrlWWW вне форума Ответить с цитированием
Старый 26.08.2008, 09:55   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а рекурсивно обойти?
Выдели обход каталога в отдельную процедуру, и ее в самой себе вызывай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2008, 21:42   #3
ArtUrlWWW
 
Регистрация: 25.08.2008
Сообщений: 9
По умолчанию

Дык и так рекурсивно функция вызывается
ArtUrlWWW вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать программу для удаления каталога с файлами ig@r Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 18.08.2009 13:20
Помогите осуществить звонок!!! Nemesisking Работа с сетью в Delphi 0 16.04.2008 14:31
Осуществить поиск necky Общие вопросы Delphi 1 28.08.2007 23:21