Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty system kategorii..Pomocy!
Forum PHP.pl > Forum > PHP
winiar789
Witam robię prosty system kategorii(drzewiasty):

Tabela w bazie:

  1. CREATE TABLE IF NOT EXISTS `category` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(45) NOT NULL,
  4. `parent` int(11) NOT NULL,
  5. `order` int(11) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM


i wyświetlanie

  1. <?php
  2.  
  3. $nr = intval($_GET['id']);
  4.  
  5. function show_category($nr) {
  6.  
  7. $pdo = new PDO('mysql:host=localhost;dbname=', 'root', '');
  8. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  9.  
  10. $stmt = $pdo->query("SELECT * FROM category where `parent` = 0");
  11. $stmt1 = $pdo->query("SELECT * FROM category where `parent` = $nr");
  12.  
  13.  
  14. foreach ($stmt as $row) {
  15. echo "<ul>";
  16. echo "<li><a href=?id={$row['id']}> {$row['name']}</a></li>";
  17.  
  18. if ($row['id'] == $nr) {
  19. echo "<ul>";
  20. foreach ($stmt1 as $row) {
  21. echo "<li><a href=?id={$row['id']}> {$row['name']}</a></li>";
  22. }
  23. echo "</ul>";
  24. }
  25.  
  26. echo"</ul>";
  27.  
  28. }
  29.  
  30. }
  31.  
  32. show_category($nr);
  33. ?>


Wszystko pięknie działa ale mam problem z podkategoria 2 z rzędu a dokładnie tak

-kategoria
-- pod kategoria
--- pod-pod kategoria ( i to nie wiem jak zrobić sad.gif((( )

w bazie mam tak zaznaczone

ID NAME PARENT ORDER

1 kategoria 0 0
3 pod kategoria 1 0
5 pod-pod kategoria 2 1

Bardzo proszę o pomoc.... Z Góry dziękuje ..
winiar789
Super smile.gif bardzo dziękuje a czy mógłbyś mi jeszcze pomóc rozłorzyć na a href
po wyciągnięciu z bazy mam efekt zamierzony ale drzewo wyświetla mi w całości
potrzebuje zrobić tak że kategorie 0 wyświetli potam po kliknięciu pokaże się druga część itd..

Ale też mam wątpliwość bo jedną kategorię to ładnie wyciąga ale co do reszty jest nie zaciekawie

paretn dla głównej przyjmuje wartość 0 czyli robimy 3 głowne kategorie

kategoria 1
kategoria 2
kategoria 3

potem ustawiamy parent dla kategorii 1 więc dajemy tam 2 3 itd a jak z resztą questionmark.gif bo po wpisaniu parent o tej samej wartości wskakuje mi do 1 kategorii.

#luq
Bo parent to nie głębokość a id kategorii rodzica .
winiar789
Dobra już wszystko rozumiem smile.gif czyli po kombinacjach moj system nie działa więc skorzystam z linka kolegi tylko dalej nie wiem jak przerobić to na <ul> <li> z a href czyli parent 0 głowna klikam otwiera mi się itd. Proszę o pomoc.smile.gif

  1. $oTree = new Tree( $arr );
  2. $oTree->createTree();
  3.  
  4. foreach( $oTree->getTree1D() as $k => $v ){
  5. echo str_repeat( ' ', $v['level']*6 ).'- '.$v['name']."\n";
  6.  
  7.  
  8. }
  9.  


Dobra rozkminiłem to po swojemu i tak naprawde został mi ostatni problem a dotczy wyświetlania w chwili obecnej jak klikne w dana kategorie przenosi mnie na strona z kategorią podrzędną a chciałbym uczynić to tak że jak klikne będzie się pokazywać

kat
--pod kat
---pod pod kat

w chwili obecnej jak klikne w kat to pod kat pokazuje się ale w nowej stronie identycznie jest dla reszty kategorii .. oto mój kod bardzo bardzo proszę o pomoc będe wdzięczny.

  1. $id = (int)($_GET['id']);
  2.  
  3. function pokaz($id) {
  4.  
  5. global $t;
  6. $wynik=array();
  7. foreach($t as $dane) if ($dane["rodzic"]==$id) $wynik[] = $dane;
  8.  
  9.  
  10. echo "<ul>";
  11. foreach($wynik as $dane) {
  12. echo '<li><a href=?id='.$dane["id"].'>'.$dane["nazwa"].'</a></li>';
  13. }
  14. echo "</ul>";
  15. }
  16.  
  17. $wynik = mysql_query("SELECT * FROM category");
  18.  
  19. if ($wynik) {
  20. while($dane = mysql_fetch_array($wynik)) {
  21. $t[] = array("id"=>$dane["id"], "rodzic"=>$dane["rodzic"],
  22. "nazwa"=>$dane["nazwa"]);
  23.  
  24. }
  25. }
  26. pokaz($id);

shark121
Można zastosować rekurencję, czyli uzycie funkcji w niej samej:

  1. function Drzewko($parent) {
  2. /* tutaj pobranie listy katagorii dla ktorych rodzic = $parent */
  3. echo "<ul>";
  4. foreach ($kategorie as $kategoria) {
  5. echo "<li>{$kategoria['dane']}</li>";
  6. /* sprawdzamy za pomoca rekurencji czy dana kategoria nie jest rodzicem dla innej */
  7. Drzewko($kategoria['id']);
  8. }
  9. echo "</ul>";
  10. }
winiar789
fuck zastosowałem rekurencje i dalej coś nie tak teraz drzewko pokazało mi się ale całe czyli wszystko wyrzucił z bazy...

  1. $id = (int)($_GET['id']);
  2.  
  3. function pokaz($id) {
  4.  
  5. global $t;
  6. $wynik=array();
  7. foreach($t as $dane)
  8. if ($dane["rodzic"]==$id)
  9. $wynik[] = $dane;
  10.  
  11.  
  12.  
  13. echo "<ul>";
  14. foreach($wynik as $dane) {
  15. echo "<li><a href=?id={$dane['id']}>{$dane['nazwa']}</a></li>";
  16. pokaz($dane['id']);
  17. }
  18. echo "</ul>";
  19. }
  20.  
  21. $wynik = mysql_query("SELECT * FROM category");
  22.  
  23. if ($wynik) {
  24. while($dane = mysql_fetch_array($wynik)) {
  25. $t[] = array("id"=>$dane["id"], "rodzic"=>$dane["rodzic"],
  26. "nazwa"=>$dane["nazwa"]);
  27.  
  28. }
  29. }
  30. pokaz($id);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.