Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Lista nieuporządkowana rekurencyjnie
windman
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 13
Dołączył: 7.01.2008

Ostrzeżenie: (0%)
-----


Witam,

mam funkcję rekurencyjną do wyświetlania stron

  1. <?php
  2. function menu($rodzic,$poziom) {
  3.  GLOBAL $prefix_tabela;
  4.  $rezultat=mysql_query("SELECT id,name,id_rodzica,page,publ FROM {$prefix_tabela}_pages ORDER BY id");
  5.  $razem=mysql_num_rows($rezultat);
  6.  while($wiersz = mysql_fetch_row($rezultat)){
  7. $id_k[]=$wiersz[0];
  8. $nazwa_k[]=$wiersz[1];
  9. $id_rodzica_k[]=$wiersz[2];
  10. $page_k[]=$wiersz[3];
  11. $publ_k[]=$wiersz[4];
  12.  }//while($wiersz = mysql_fetch_row($rezultat)){
  13.  
  14.  foreach($id_rodzica_k as $k=>$v) {
  15. if($v==$rodzic){
  16.  $e=str_repeat(' - ', $poziom);
  17.  echo $e.$nazwa_k[$k]."<br />";
  18.  menu($id_k[$k],$poziom+1);
  19. }//if($v==$rodzic){
  20. }//foreach($id_rodzica_k as $k=>$v) {
  21.  }//function menu($rodzic,$poziom) {
  22. ?>


i 2 pytania:

1) Wjaki sposób wyświetlić listę stron w postaci prawdziwej listy nieuporządkowanej.
2) Jka widać funkcja przy każdej rekurencji pobiera dane z bazy. Chciałem najpierw pobrać wszystko do tablicy aby funkcja operowała na tablicy, jednakże wtedy nie wyświetla się całe drzewo.

Ten post edytował windman 15.01.2008, 15:02:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sefs
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.08.2007
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Może ci się przyda taka funkcja którą napisałem kiedyś:
Kod
function print_list($list) {
    $tab=explode("\n",$list);
    echo "<ul>\n";
    $tmp_lvl=0;
    foreach($tab as $line) {
        $lvl=substr_count($line, '+');
        $line=str_replace('+', '', $line);
        if($lvl>$tmp_lvl) for($i=$lvl-$tmp_lvl; $i>0; --$i) echo "<li>\n<ul>\n";
        else for($i=$tmp_lvl-$lvl; $i>0; --$i) echo "</ul>\n</li>\n";
        echo "<li>$line</li>\n";
        $tmp_lvl=$lvl;
    }
    for($i=$tmp_lvl; $i>0; --$i) echo "</ul>\n</li>\n";
    echo "\n</ul>";
}


Zamienia ona na listę nieuporządkowaną takie coś:
Cytat
pierwszy rząd
drugi rząd
+podkategoria 1
+podkategoria 2
+++podkategoria 3
+++podkategoria 4
+++++podkategoria last
+++++++podkategoria last 2
++++chyba?
++udalo sie chyba
++++++powali sie
++++++++++++bla bla
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 06:37