[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Построение древовидной структуры товаров с файла
yuras88
Добрый день.Есть такая задача:
айле содержатся данные в следующем виде:

PK|FK_PARENT_ID|NAME

например:


1|0|Electronics
2|0|Video
3|0|Photo
4|1|MP3 player
5|1|TV
6|4|iPod
7|6|Shuffle
8|3|SLR
9|8|DSLR
10|9|Nikon
11|9|Canon
12|11|20D


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



Спустя 14 минут, 6 секунд (24.02.2012 - 14:05) sergeiss написал(а):
Цитата (yuras88 @ 24.02.2012 - 14:51)
Напишите скрипт, который считает эти эти данные и построит дерево товаров.

Это ТЗ? Тогда укажи стоимость работ. И тему переношу в раздел для начинающих.

PS. Насчет БД - см. тут: http://phpforum.ru/index.php?showtopic=31806&hl=

Спустя 6 минут, 49 секунд (24.02.2012 - 14:12) redreem написал(а):
500 р.
2-3 часа.

Спустя 2 минуты, 23 секунды (24.02.2012 - 14:15) yuras88 написал(а):
Я не прошу чтоб мне написали этот скриптт.Я прошу подсказать алгоритм....Я считал файл в массив:
    <?
define('filename', 'data1.txt');
//создаем массив
$f=fopen(filename,"r");
$mass_strok=explode("|",file_get_contents(filename));
echo "<pre>";
print_r($mass_strok);
$temp="";
foreach($mass_strok as $key=>$value)
..............................................................................


?>

Array
(
[0] => 1
[1] => 0
[2] => Electronics
[3] => 2
[4] => 0
[5] => Video
[6] => 3
[7] => 0
[8] => Photo
[9] => 4
[10] => 1
[11] => MP3 player
[12] => 5
[13] => 1
[14] => TV
[15] => 6
[16] => 4
[17] => iPod
[18] => 7
[19] => 6
[20] => Shuffle
[21] => 8
[22] => 3
[23] => SLR
[24] => 9
[25] => 8
[26] => DSLR
[27] => 10
[28] => 9
[29] => Nikon
[30] => 11
[31] => 9
[32] => Canon
[33] => 12
[34] => 11
[35] => 20D
вот такой массив.я ни как не могу придумать как привязать праймери кей с родительским..

Спустя 15 минут, 44 секунды (24.02.2012 - 14:30) sergeiss написал(а):
Цитата (yuras88 @ 24.02.2012 - 15:15)
Я не прошу чтоб мне написали этот скрипт

Это хорошо smile.gif Просто некоторые твои слова в начальном сообщении темы позволяют предположить, что такая "просьба" есть.

Цитата (yuras88 @ 24.02.2012 - 15:15)
я ни как не могу придумать как привязать праймери кей с родительским

По той ссылке, что я дал, речь идет больше про Постгре. Но и про Мускуль где-то в середине темы есть ссылки, как сделать именно то, что ты хочешь. Почитай внимательно.

И вообще, я бы посоветовал именно с PostgreSQL работать, если есть возможность выбора. Потому что там намного богаче возможности работы с данными, чем в Мускуле.

Спустя 6 минут, 45 секунд (24.02.2012 - 14:37) yuras88 написал(а):
но в той ссылке тема где рассматривают как с БД сделать выборку для построения дерева...а мне нужно с файла.(

Спустя 1 минута, 9 секунд (24.02.2012 - 14:38) sergeiss написал(а):
Даже ни одного слова ответа не напишу, только тебя процитирую smile.gif

Цитата (yuras88 @ 24.02.2012 - 15:37)
а мне нужно с файла.(


Цитата (yuras88 @ 24.02.2012 - 14:51)
ни как не получаеться придумать.или нужно с файа загнать в БД а тогда уже с БД считывать...?


Спустя 7 минут, 39 секунд (24.02.2012 - 14:46) yuras88 написал(а):
я просто предположил может нужно в БД загнать файл...но в задании сказано что с файла это нужно считать.вот я ни как не могу придумать так и предположи может это загнать в БД...но не уверен что это корректное решение...

Спустя 7 минут, 2 секунды (24.02.2012 - 14:53) vagrand написал(а):
Тебе поможет рекурсивная функция

Спустя 27 минут (24.02.2012 - 15:20) yuras88 написал(а):
может и поможет...в моем массиве получается что Primary Key это элементы месива:[0],[3],[6],[9]....а родительский ключ это [1],[4],[7],[10]...тогда подскажите как написать проверку которая будет только учитывать эти элементы массива [0],[3],[6],[9]....и эти-[1],[4],[7],[10]...ни как не соображу что за условие нужно сформулировать... sad.gif

Спустя 8 часов, 7 минут, 8 секунд (24.02.2012 - 23:27) Jack_White написал(а):
yuras88
если я правильно понял тебя, то вот что-то подобное:
1) допустим
1|0|Electronics
2|0|Video
3|0|Photo
4|1|MP3 player
5|1|TV
6|4|iPod
7|6|Shuffle
8|3|SLR
9|8|DSLR
10|9|Nikon
11|9|Canon
12|11|20D

располагается в файле x.txt

if(file_exists('x.txt'))
$arr = file('x.txt');
$arr_exp = array();
$i = 0;
foreach($arr as $v)
{
list($arr_exp[$i]['id'], $arr_exp[$i]['id2'], $arr_exp[$i]['name']) = explode('|', $v);
++
$i;
}
Быстрый ответ:

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