![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.10.2003 Ostrzeżenie: (0%)
|
Witam
Mam taki problem chce zrobic mape "katalogow" ktore mam w bazie danych tabela z bazy wyglada tak. id ---- nazwa ---- parent_id 1 ---- k1 ---- 0 2 ---- k2 ---- 0 3 ---- pk1 ---- 1 4 ---- pk2 ---- 2 5 ---- ppk1 ---- 4 6 ---- k3 ---- 0 chcialbym wyswietlic sobie teraz tego mape, na stronce.. i tu wlasnie mi sie pojawil problem, nie potrafie tego odpowiednio posortowac.. chodzi mi zeby wyswietlic sobie to w takiej postaci - k1 -- pk1 -k2 --pk2 ---ppk1 -k3 Mam nadzieje, ze z tego co napisalem, mozna zrozumiec o co mi chodzi. Z gory dziekuje za pomoc |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 0 Dołączył: 7.09.2003 Ostrzeżenie: (0%)
|
ok ok ale wedlug czego chcesz sortowac....
-------------------- Oooo, cia is on the phone... Ok, I got it. Shit I lost it.
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.10.2003 Ostrzeżenie: (0%)
|
a wiece generalnie to nie mam pojecia:)
parent_id mowi o tym do ktorego katalogu dane id jest podkatalogiem. Jezeli parent_id jest rowne 0 to jest to katalog glowny. takie bylo moje zalozenie tworzac ta tabele. Ale teraz nie wiem jak wyswietlic to w taki sposob ja chce (pisalem wczesniej) |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 16.12.2003 Ostrzeżenie: (0%)
|
Hej!
po pierwsze to jedno pytanie, bo nie wszystko jest jasne... czy dla wpisu id=5 nie powinno być 'ppk2'? jeśli tak, to sprawa jest raczej prosta: dla każdego wpisu (jako $nazwa) mającego id=0 { 1. szukaj takich wpisów (jako $biezacaNazwa), które *kończą* się na $nazwa [fkcja strrpos($biezacaNazwa,$nazwa) ] ; 2. policz ile 'p' znajduje się w $biezacaNazwa [fkcja substr_count($biezacaNazwa,'p') ]; 3. otrzymana w 2) liczba oznacza stopień zagnieżdżenia katalogu o nazwie $biezacaNazwa w katalogu $nazwa; } Przepraszam że to nie gotowy kod, ale chyba ten zrozumiały jest :] powodzenia ! |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.10.2003 Ostrzeżenie: (0%)
|
Chodzi o to ze te nazwy nie maja znaczenie, beda zupelnie inne nie zwiazane ze soba...
chodzi o to ze jezeli parent_id = 0 to znaczy ze jest to katalog glowny. jezeli parent_id = 2 to znaczy ze jest to podkatalog katalogu ktorego id=2 |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 43 Pomógł: 0 Dołączył: 3.12.2003 Skąd: Jelenia Góra Ostrzeżenie: (0%)
|
ja zaladowalbym to wszystko do tablicy i skonstruowal taka petle ktora przechodzilaby po wszystkich pozycjach i jak napotka na parent_id=0 to wyswietla nazwe i szuka wszystkich pozycji gdzie parent_id=id (tego przed chwila znalezionego elementu).
Dobre zadanie na rekurencje (ale nie dla mnie Moze ulatwieniem byloby jeszcze posortowanie tej tablicy wedlug parent_id. Byloby to wszystko wtedy bardziej uporzadkowane... |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 0 Dołączył: 7.09.2003 Ostrzeżenie: (0%)
|
[php:1:15eb9ea4a6]<?php
polacz_db(); //laczymy sie z baza $w = mysql_query("SELECT id,nazwa FROM twoja_baza WHERE parent_id=0 ORDER BY id"); while($i = mysql_fetch_array($w)) { $id = $i['id']; $nazwa = $i['nazwa']; echo "-$nazwa";//Katalog glowny $w2 = msyql_query("SELECT nazwa FROM twoja_baza WHERE parent_id='$id' ORDER BY id"); while($i2 = mysql_fetch_array($w2)) { $nazwa = $i2['nazwa']; echo "--$nazwa";//podkatalog } } ?>[/php:1:15eb9ea4a6] Zakladamy przy tym ze itenieje struktura tylko i wylaczne : KATALOG GLOWNY , PODKATALOG jesli chcesz glebiej to wystarczy kolejne zapytanie do bazy danych w ostatniej petl;i while. Rozwiazanie to dziala ale strasznie obciaza baze mozna byloby to zrobic na zasadzie jednego zapytania ktore wzyrsko wyciaga a pozniej tylko to uporzadkowac w tablicy ale mi sie nie chce i nie mam czasu. UPDATE 1 Mozna tez zaladowac to wzytsko do 2 tablic: [php:1:15eb9ea4a6]<? $w = mysql_query("SELECT * FROM twoja baza WHERE parent_id=0"); $w2 = mysql_query("SELECT * FROM twoja baza WHEE parent_id!=0"); ?> [/php:1:15eb9ea4a6] a poznieij wsyztko to ladni obrobic Pozdro ?> -------------------- Oooo, cia is on the phone... Ok, I got it. Shit I lost it.
|
|
|
|
Post
#8
|
|
|
Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%)
|
W jednym ze swoich modułów używam czegoś takiego. Przerobiłem to trochę, bo u mnie wyświetla się to w multiselekcie. Oczywiście nie sugeruj się odwołaniami do bazy, robię to przez klasę.
[php:1:84f4e9cb7b]<?php $sql = "SELECT id, nazwa, parent_id FROM rodzaj_katategorii ORDER BY parent_id"; $db->query($sql); while($db->next_record()) $kategorie[$db->Record['parent_id']][$db->Record['id']] = $db->Record['nazwa']; if($kategorie[0]) { while(list($id,$nazwa) = each($kategorie[0])) { echo "<a href="pokaz.php?id=$id">$nazwa</a>"; if(!count($kategorie["$id"])) continue; while(list($chid,$chnazwa) = each($kategorie["$id"])) { echo "<a href="pokaz.php?id=$chid">- $chnazwa</a>"; } } ?>[/php:1:84f4e9cb7b] -------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 0 Dołączył: 7.09.2003 Ostrzeżenie: (0%)
|
daj kod klasy...
-------------------- Oooo, cia is on the phone... Ok, I got it. Shit I lost it.
|
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 31.10.2003 Ostrzeżenie: (0%)
|
Dravo:
A masz jakis pomysl zeby zapetlic to tak aby byla mozliwosc wyswietlenia struktury bez ograniczen do ilosci podkatalogow? Najlepiej sortujac jedno zapytanie do bazy Pozdrawiam i dzieki za pomoc |
|
|
|
![]() ![]() |
|
Aktualny czas: 20.08.2025 - 03:31 |