Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Kategorie i podkategorie + podgląd
ghastblood
post 21.02.2011, 13:05:12
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Witam,
Stworzyłem sobie tabele w MySQL i mam w niej cat_id, cat_name, cat_parent

Kategorie i podkategorie wyświetlam takim sposobem
  1. $result = get_query("SELECT * FROM category WHERE cat_parent = '0'");
  2. while ($data = get_array($result)) {
  3. echo '<b><a href="view.php?id='.$data[cat_id].'">'.$data['cat_name'].'</b></a>';
  4. $result1 = get_query("SELECT * FROM category WHERE cat_parent = '".$data['cat_id']."' ");
  5. while ($data1 = get_array($result1)) {
  6. echo'<li> - <a href="view.php?id='.$data1[cat_id].'">'.$data1['cat_name'] . '</li></a>' ;
  7. }
  8. }


wszystkie podkategorie i w nich artykuły wyświetlają się dobrze
ale jak zrobić żeby po kliknięciu na kategorie wyświetlić wszystkie artykuły z podkategorii ?


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post 21.02.2011, 13:13:38
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Trochę nie na temat, ale jak widzę takie "stwory" to aż mnie skręca.

Robisz w pętli zapytania - strasznie nieoptymalne. Takie rzeczy załatwia się jednym zapytaniem:
http://nospor.pl/grupowanie-wynikow.html



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ghastblood
post 22.02.2011, 15:48:36
Post #3





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Dzięki.
tylko chciał bym przechowywać kategorie i subkategorie w jednej tabeli

a więc zacząłem robić taki kod:
  1. $result = mysql_query("SELECT * FROM fusion_category") or die(mysql_error());
  2.  
  3. $categories = array();
  4. while($row = mysql_fetch_assoc($result)) {
  5. $pid = $row['cat_parent'];
  6. $cid = $row['cat_id'];
  7.  
  8. if($pid == 0)
  9. $categories[$cid] = array('name' => $row['cat_name'], 'cats' => array());
  10.  
  11. if($pid == $cid)
  12. $categories[$cid]['cats'][] = array('name' => $row['cat_name'], 'id'=>$cid);
  13. }
  14.  
  15. print_r ($categories);


pierwszy warunek wyświetla mi dobrze w tablicy kategorie a subkategorii już nie

widok print_r:
  1. Array ( [1] => Array ( [name] => kategoria [cats] => Array ( ) ) )


Ten post edytował ghastblood 22.02.2011, 15:50:33
Go to the top of the page
+Quote Post
nospor
post 22.02.2011, 19:57:29
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przecież cat_parent i cat_id nie mogą być jednocześnie takie same
Od kiedy to rodzic wskazuje na samego siebie?

Pozatym nawet jeśli dane masz w jednej tabeli to bez problemu możesz zrobić wg. schematu co podałem. Po prostu LEFT JOIN będzie wskazywal na tę samą tabelę ale z innymi warunkami


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ghastblood
post 22.02.2011, 21:37:02
Post #5





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Cytat
Przecież cat_parent i cat_id nie mogą być jednocześnie takie same


a to dlaczego przecież cat_parent ma wskazywać id głównej kategorii
np:
id nazwa rodzic
1 kategoria 0
2 subkategoria 1

Go to the top of the page
+Quote Post
nospor
post 22.02.2011, 21:46:30
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$pid = $row['cat_parent'];
$cid = $row['cat_id'];
Przeciez ty parenta i id kategorii pobierasz z tego samego rekordu. W tym samym rekordzie parent i id kategorii nie mają prawa być takie same smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ghastblood
post 22.02.2011, 22:15:31
Post #7





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Dzięki za podpowiedzi, już rozumiem gdzie robiłem błąd smile.gif teraz tylko jak dodać odnośnik żeby po kliknięciu na główną kategorię wyświetliły się artykuły ze wszystkich podkategorii.
Go to the top of the page
+Quote Post
-RONINZGR-
post 26.06.2012, 21:44:15
Post #8





Goście







Szkoda tylko że skrypt jest do drugiej głębokości kategorii. Szukam rozwiązania nieograniczonego czyli że mogę tworzyć tyle "głębokości" ile mi się tylko podoba. Próbowałem dodać jakieś usprawnienia niestety jednak nic mi już nie przychodzi do głowy... Może jeszcze jakieś ciekawe rady w tym temacie?
Go to the top of the page
+Quote Post
nospor
post 27.06.2012, 09:08:42
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To już podchodzi pod normalne drzewo. Musisz więc poczytać o drzewach (tree)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:51