Hvala ti Gorane. Evo onda mog rešenja pa ko zapne kao ja da ima:
-Prvo se kreira tabela na primer
Code:
CREATE TABLE category(
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
parent VARCHAR(4) DEFAULT NULL
);
INSERT INTO category VALUES(1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),
(4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),(7,'MP3 PLAYERS',6),(8,'FLASH',7),
(9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);
Tabela izgleda sada ovako:
Code:
SELECT * FROM category ORDER BY category_id;
SELECT * FROM category ORDER BY category_id;
+-------------+----------------------+--------+
| category_id | name | parent |
+-------------+----------------------+--------+
| 1 | ELECTRONICS | NULL |
| 2 | TELEVISIONS | 1 |
| 3 | TUBE | 2 |
| 4 | LCD | 2 |
| 5 | PLASMA | 2 |
| 6 | PORTABLE ELECTRONICS | 1 |
| 7 | MP3 PLAYERS | 6 |
| 8 | FLASH | 7 |
| 9 | CD PLAYERS | 6 |
| 10 | 2 WAY RADIOS | 6 |
+-------------+----------------------+--------+
Zatim se izlista veoma jednostavno:
Code:
<?php
/*********************************************
* Created By: Ivijan-Stefan Stipić
* Web Designer, PHP Developer
* Copyright: Free
*********************************************/
function prikazi_podkategorije($category_id, $nivo)
{
// Izvuci sve povezane podkategorije
$rezultat = mysql_query("SELECT * FROM `category`
WHERE `parent`='".$category_id."'
ORDER BY `category`.`category_id` ASC ");
$broj=mysql_num_rows($rezultat);
echo '<ul>';
// prikazi sve povezane podkategorije
while ($row = mysql_fetch_array($rezultat))
{
// Ovaj kod možete menjatipo zelji, on prikazuje kompletno stablo
echo '<li>'.str_repeat(' ',$nivo) . $row['name'].'</li>';
prikazi_podkategorije($row['category_id'], $nivo+1);
}
echo '</ul>';
}
// IZLISTAJ GLAVNE KATEGORIJE I SMESTI OSTALE PODKATEGORIJE ISPOD NJIH
$kategorija_query = mysql_query("SELECT * FROM `category`
WHERE `parent`='NULL'
ORDER BY `category`.`category_id` ASC ");
echo '<ul>';
while($kategorija=mysql_fetch_array($kategorija_query))
{
// Prikazi glavnu kategoriju, ostale podkategorije se automatski generišu
echo '<li>'.$kategorija['name'];
prikazi_podkategorije($kategorija['category_id'],1);
echo'</li>';
}
echo '</ul>';
?>
I izgleda ovako:
Code:
ELECTRONICS
---TELEVISIONS
---------TUBE
---------LCD
---------PLASMA
---PORTABLE ELECTRONICS
---------MP3 PLAYERS
---------------FLASH
---------CD PLAYERS
---------2 WAY RADIOS
Uživajte!
Web Designer, PHP Developer