Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: drzewko katalogowe
Forum PHP.pl > Forum > PHP
gorodok
Witam!

Być może ten temat już był poruszany ale...
Zadanie:
Mamy plik tekstowy z danymi w postaci node_id|parent_id|node_name
parent_id - id rodzica, 0 - korzeń.

Przykładowy plik

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


Należy wczytać plik i wyświetlić w postaci drzewka katalogowego czyli pierwszy poziom - jeden odstęp, drugi poziom - dwa i td.

Więc wymyśliłem taki oto sposób:
  1. <?php
  2. function tree($id,$list)
  3. {
  4.  if ($list[$id]['name'] != '')
  5.  {
  6. echo '<dt>'.$list[$id]['name'];
  7.  }
  8.  if ($list[$id]['child'])
  9.  {
  10. foreach ($list[$id]['child'] as $key => $value)
  11. {
  12.  echo '<dl>';
  13.  tree($key,$list);
  14.  echo '</dl>';
  15. }
  16.  }
  17. }
  18.  
  19. $fp = fopen('tree.txt', 'r');
  20. $list = array();
  21.  
  22. while(!feof($fp))
  23. {
  24.  $current_line = fgets($fp);
  25.  list($id, $pid, $name) = split('|',$current_line);
  26.  
  27.  if ($id != '')
  28.  {
  29. $list[$id] = array(
  30. 'name' => $name,
  31. 'child' => array()
  32. );
  33. $list[$pid]['child'][$id] = $id; 
  34.  
  35.  }
  36. }
  37. fclose($fp);
  38.  
  39. tree(0,$list);
  40. ?>


Proszę o opinie...
timon27
mintAjax
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.