Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Štampanje liste na osnovu drvoidne strukture iz baze..

[es] :: PHP :: Štampanje liste na osnovu drvoidne strukture iz baze..

[ Pregleda: 1941 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Šahbaz
Developer, BBM
EU

Član broj: 102142
Poruke: 106
89.216.138.*



Profil

icon Štampanje liste na osnovu drvoidne strukture iz baze..23.05.2009. u 11:07 - pre 181 meseci
Pozdrav,

Pratio sam neki tutorijal ali sam zakucao tj. ni u samom tutorijalu nije napisano ono sto meni treba a to je stampanje liste elementa u fazonu:

Code:

<ul>
   <li>nesto</li><ul>
        <li>nesto 2</li>
        <li>nesto 2</li><ul>
             <li>nesto 3</li>
             <li>nesto 3</li>
             <li>nesto 3</li>
         </ul>
       </ul>
    <li>nesto</li>
    <li>nesto</li>
</ul>
..


Kod je sledeci i str_repeat radi sjajno ali meni treba lista:

Code:

<?php
// $parent is the parent of the children we want to see
// $level is increased when we go deeper into the tree,
//        used to display a nice indented tree
function display_children($parent, $level) {
   // retrieve all children of $parent
   $result = mysql_query('SELECT title FROM tree '.
                          'WHERE parent="'.$parent.'";');

   // display each child
   while ($row = mysql_fetch_array($result)) {
       // indent and display the title of this child
       echo str_repeat('  ',$level).$row['title']."\n";

       // call this function again to display this
       // child's children
       display_children($row['title'], $level+1);
   }
}
?>


Ja sam se bas sabio ali mi ne ide... zato bi bilo sjajno ako neko moze da mi pomogne.
Evo i slike koja ce mozda pojasniti sta mi to tacno treba:



Ps.
Ako trebaju jos kakvi detalji, tu sam...
Prikačeni fajlovi
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-4.sezampro.yu.



+33 Profil

icon Re: Štampanje liste na osnovu drvoidne strukture iz baze..23.05.2009. u 11:59 - pre 181 meseci
Npr. ti nakon upita dobiješ ovako nešto:
Code:

kategorija  pod_kat   hrana
----------------------------
voce         crveno    visnja
voce         zuto      banana
meso         null      cevapi
meso         null      karadjordjeva

I onda samo treba da "protrčiš" kroz sve njih i da ih ispišeš sa nekim pomoćnim markerima:
Code:
echo '<ul>
           <li>Hrana</li>
             <ul>';

$marker_kat = 0;
$marker_pod_kat = 0;
foreach ($niz_hrana as $indeks=>$hrana) {
   if ($marker_kat == 0) {
      echo '<li>' . $hrana['kategorija'] . '
                  <ul>';
      $marker_kat = 1;
   }
   if (isset($hrana['pod_kat'] && $marker_pod_kat == 0)) {
       echo '<li>' . $hrana['pod_kat'] . '
                  <ul>';
       $marker_pod_kat = 1;
   }

   echo '<li>' . $hrana['hrana'] . '</li>';

   if ($niz_hrana[$indeks + 1]['pod_kat'] != $hrana['pod_kat']) { //Ako je sledeca podkategorija u nizu razlicita od tekuce, treba zatvoriti trenutnu i otpoceti novu.
       echo '</ul>
        </li>';
      $marker_pod_kat = 0;
   }

   if ($niz_hrana[$indeks + 1]['kategorija '] != $hrana['kategorija ']) { //Ako je sledeca kategorija u nizu razlicita od tekuce, treba zatvoriti trenutnu i otpoceti novu.
       echo '</ul>
        </li>';
       $marker_kat = 0;
   }
}

echo '
      </ul>
    </li>
  </ul>';
 
Odgovor na temu

Šahbaz
Developer, BBM
EU

Član broj: 102142
Poruke: 106
89.216.138.*



Profil

icon Re: Štampanje liste na osnovu drvoidne strukture iz baze..23.05.2009. u 12:21 - pre 181 meseci
Uh nemam poja, meni bas nije takav indeks jer su mi imena kolona drugacija...

ja imam:

Code:

cat_id (AUTO INCREMENT) cat_parent   cat_title


Tako da mi ovo tvoje nece raditi. A pokusao sam i sa zend frjemvorkom i sjajnom klasom koju mi je proporucio jedan esovac http://www.virgentech.com/blog/view/id/4

Medjutim imam isti problem, i tamo sam u komentarima postavio pitanje...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-4.sezampro.yu.



+33 Profil

icon Re: Štampanje liste na osnovu drvoidne strukture iz baze..23.05.2009. u 13:31 - pre 181 meseci
Pa nisam ja ni mislio da ideš bukvalno copy-paste. :)

Ne treba bi za to ni ZF niti bilo kakve specijalne klase...

Evo ako je ovo npr. taj tvoj upit:
Code:

SELECT fc.title AS 'cat_title', (SELECT title FROM food_cats WHERE id = fc.parent) AS 'parent_cat', fi.title AS 'food_title'
FROM food_cats fc, food_items fi
WHERE fc.id = fi.cat_id

Na osnovu kojeg dobijaš ovo:
Code:

cat_title   parent_cat   food_title
---------------------------------
meat           NULL         beef
meat           NULL         pork
red           fruit         cherry
yellow        fruit         banana

Onda ne vidim šta ti pravi problem da izmeniš onaj moj kod, odnosno, te if-ove:
Code:

echo '<ul>
           <li>Food</li>
             <ul>';

$marker_cat = 0;
$marker_parent = 0;
foreach ($food_array as $index=>$food) {
   if (isset($food['parent_cat'])  && $marker_parent == 0) {
      echo '<li>' . $food['parent_cat'] . '
                  <ul>';
      $marker_parent  = 1;
   }
   if ($marker_cat == 0) {
       echo '<li>' . $food['cat_title'] . '
                  <ul>';
       $marker_cat = 1;
   }

   echo '<li>' . $food['food_title'] . '</li>';

   if ($food_array[$index + 1]['cat_title'] != $food['cat_title']) { 
       echo '</ul>
        </li>';
      $marker_cat = 0;
   }

   if (isset($food['parent_cat']) && $food_array[$index + 1]['parent_cat'] != $food['parent_cat']) {
       echo '</ul>
        </li>';
       $marker_parent = 0;
   }
}

echo '
      </ul>
    </li>
  </ul>';

Eto sad sam prebacio na engleski, možda te je to zbunjivalo... :)
 
Odgovor na temu

Šahbaz
Developer, BBM
EU

Član broj: 102142
Poruke: 106
89.216.138.*



Profil

icon Re: Štampanje liste na osnovu drvoidne strukture iz baze..23.05.2009. u 14:19 - pre 181 meseci
Ali to nije moj upit, i koliko ja kapiram ti tamo imas neku tabelu food_items koju ja nemam ?
Ja imam samo jednu tabelu koja ima onakvu strukturu i jos neka dodatna polja. I inicijalno moj upit je "SELECT * FROM categories";
I imam i dubinu grana u toj tabeli.


 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
93.87.138.*



+5 Profil

icon Re: Štampanje liste na osnovu drvoidne strukture iz baze..25.05.2009. u 22:15 - pre 181 meseci
Pretpostavimo da je struktura drveta data kao promenljiva data1, u tom slucaju potrebna je funkcija slicna make_ul, pri cemu je drugi parametar (tab) tu samo zbog formatiranja liste!

Zeljeni ispis se dobija
Code:
echo make_ul($data1) . '<br />' . make_ul($data1[1]);


Prikačeni fajlovi
 
Odgovor na temu

[es] :: PHP :: Štampanje liste na osnovu drvoidne strukture iz baze..

[ Pregleda: 1941 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.