Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nieskończona liczba podgrup w grupach
treewood
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


Jestem w trakcie robienia skryptu i zagięło mnie w pewnym momencie ... albo zaćmiło [;

Wiecie może jak rozplanować bazę danych z minimalną liczbą pól by móc zrobić potem do tego skrypt który wyświetlał by dane?

wg mnie baza wyglądać powinna tak:
id, nazwa czegoś, opis czegoś, przynależność do grupy ID (jeśli jest grupą to wartość 0), nr zagłębienia czyli np. dla podkategorii 2 zagłębienie równe 2

obrazowo:
1,warzywa,spis warzyw,0 (bo jest grupą),1
2,ogórki,tu znajdziesz nasze ogórki,1 (pod grupa grupy warzywa o id 1),2 (zagłębienie 2)
3,kiszone,ogórki kiszone,2 (po przynależy do podgrupy o id 2),3
4,owoce,spis owoców,0 (bo jest grupą),1
5,kiszone z polski,ogórki kiszone z polski,3 (po przynależy do podpodgrupy 3),4

i w sumie dane powinny wyglądać tak

warzywa
-ogórki
--kiszone
---kiszone z polski
owoce

tyle, że problemem jest tutaj dla mnie brak limitu podgrup. oczywiście mógłbym zrobić coś z limitem podgrup ale pomyślałem by zrobić bardziej giętki skrypt

w końcu skrypt u mnie wygląda tak:

[php:1:b8a8a88b13]<?php
$zaglebienia = mysql_query("select zaglebienie from _grupy order by zaglebienie desc limit 1");
while ($row=mysql_fetch_array($zaglebienia)) { $zaglebienie = $row[zaglebienie]; }

$grupy = mysql_query("select * from _grupy where nalezy='0' order by nazwa");
while ($row=mysql_fetch_array($grupy)) {
$id_gr = $row[id];
echo "&<a href='' title='".$row[opis]."' class=grupa>".$row[nazwa]."</a><br>";

for ($lp=1;$lp<=$zaglebienie;$lp++)
{
$podgrupy = mysql_query("select * from _grupy where nalezy='$lp' and nalezy='$id_gr' order by nazwa");
while ($row=mysql_fetch_array($podgrupy)) {

echo "&- <a href='' title='".$row[opis]."'>".$row[nazwa]."</a><br>";

for ($lp=1;$lp<=$row[zaglebienie];$lp++)
{
$podgrupy_2 = mysql_query("select * from _grupy where nalezy='$lp' and nalezy='$id_gr' order by zaglebienie, nazwa");
while ($row=mysql_fetch_array($podgrupy_2)) {

}
}

}
}


}
?>[/php:1:b8a8a88b13]

wychodzi na to, że musiałbym robić ciągle pętle for ... macie jakieś inne pomysły?
może zamiast przynależności zapisanej w formie np. 1 to zapisywać
np. 1.2.4.5
z tych 4 liczb wtedy wynikałoby, że jest to 4 zagłębienie (zliczanie ilości kropek) a zarazem sprawdzanie kolejki spisu grup i podgrup.
np. że ogórek poslki kiszony należy wpierw do grupy warzywa potem podgrupy ogórki, potem ogórki kiszone a w końcu do ogórków polskich kiszonych...

proszę o pomoc ... wiem, że z tym zagmatwałem.
widziałem takie bajery na phpbb czy openbb ale kod jest tam tak napisany, że ciężko się rozeznać i wziąć wzór od nich ...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
treewood
post
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 18.01.2003

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


deyv ... super pomysl ja zrobilem to inaczej
ze niby do bazy zapisuje cala sciezke np.
do powiedzmy
rzeczy
owoce > jablka > lobo
owoce > brzoskwinie
warzywa > pomidory

gdzie:

id | nazwa
--+------
1 | owoce
2 | jablka
3 | lobo
4 | warzywa
5 | brzoskwinie
6 | pomidory

wpisałem tak

id | nazwa | przynaleznosc
--+---------+-------------
1 | owoce | 0
2 | jablka | 1.2
3 | lobo | 1.2.3
4 | warzywa | 0
5 | brzoskwinie | 1.5
6 | pomidory | 4.6


niby to lepsze z jednej strony (oszczednosc danych i zliczanie po kropach glebokosc zagniezdzenia) ale to co napisal dragossani wyglada dosc ciekawie. teraz tylko bedzie problem to oprogramowac ... macie moze jakies pomysly
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 04:00