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 ... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 215 Pomógł: 0 Dołączył: 18.01.2003 Ostrzeżenie: (0%)
|
No niby zrobiłem i wyświetla ale nie do końca dobrze
struktura bazy wygląda tak: _grupy: id | nazwa ----+------------ 1 | warzywa 2 | owoce 3 | jablka 4 | lobo 5 | brzoskwinie _podgrupy: first_id | last_id | glebia ----------+-----------+------- 1 | 1 | 0 2 | 2 | 0 2 | 3 | 1 2 | 4 | 1 3 | 4 | 2 2 | 5 | 1 skrypt wyglada tak: [php:1:7357c30aad]<?php function grupy($id){ $grupy = mysql_query("select _podgrupy.first_id, _podgrupy.last_id, _podgrupy.glebia, _grupy.nazwa, _grupy.opis, _grupy.id from _grupy, _podgrupy where glebia >'0' and _podgrupy.last_id = _grupy.id and _podgrupy.first_id = '$id' order by glebia desc"); while ($row=mysql_fetch_array($grupy)) { $id = $row[id]; for ($l=0;$l<=$row[glebia];$l++) { $pokaz[$id] = "-".$pokaz[$id]; } echo $pokaz[$id]."&<a href='' title='".$row[opis]."'>".$row [nazwa]."</a><br>"; grupy($id); } } $grupy = mysql_query("select _podgrupy.first_id, _grupy.nazwa, _grupy.opis, _grupy.id from _grupy, _podgrupy where _podgrupy.glebia='0' and _podgrupy.first_id = _grupy.id order by _grupy.nazwa"); while ($row=mysql_fetch_array($grupy)) { echo "&<a href='' title='".$row[opis]."' class=grupa>".$row [nazwa]."</a><br>"; grupy($row[id]); } ?>[/php:1:7357c30aad] i jest problem bo wyswietla na poczatku dobrze a potem na koniec wyswietla wszystko jest niepotrzebne Owoce -- Jabłka --- Lobo -- Brzoskwinie -- Lobo Warzywa Jak widać lobo powtarza się drugi raz i nie wiem jak tego gówna się pozbyc |
|
|
|
treewood Nieskończona liczba podgrup w grupach 26.05.2003, 15:48:27
Cudi rekurencja -> wywołanie funkcji wewnątrz samej ... 26.05.2003, 16:39:51
treewood tzn ze mam to wywolac jakos tak:
<?php
functio... 26.05.2003, 21:37:42
scanner Tylko pamiętaj, zeby się nie zapętlić. 26.05.2003, 21:43:40
spenalzo :arrow: http://webcity.pl/porady.php/t/69 26.05.2003, 22:43:07
treewood w sumie myslalem by uzyc funkcji ... ale dzieki ba... 26.05.2003, 23:43:09
DeyV trafiłeś na problem, na który w pewnym momęcie tra... 27.05.2003, 09:15:19
treewood deyv ... super pomysl ja zrobilem to inaczej
ze ni... 27.05.2003, 10:41:48
DeyV twoje rozwiazanie - choć wydawałoby się bardzo pro... 27.05.2003, 10:53:53
treewood no w sumie tak .. tyle, ze nie mam wiekszego pojec... 27.05.2003, 11:13:04
DeyV nie bardzo cie pokrzepię, ale zmontownie w pełni f... 27.05.2003, 11:24:38
treewood nie no raczej problemu z joinem nie mam ... tylko ... 27.05.2003, 11:38:24
kurtz CytatNo niby zrobiłem i wyświetla ale nie do końca... 27.05.2003, 15:20:25
treewood kurtz << jak mam rozumieć to wskazanie refer... 27.05.2003, 15:28:31 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 08:34 |