Hazır olarak paylaşılmıştır, soru değildir, geliştirmek isteyenler el atabilirler
php betikteki require_once "sql.php"; sql.php
https://github.com/joshcam/PHP-MySQLi-Database-Class bu adresteki mysqli sınıfıdır. İsteyen PDO, Mysql olarakta düzenleyebilir kendi sınıfına göre.
Kullanılan Tablo Yapısı
CREATE TABLE IF NOT EXISTS `kategori` (
`ID` mediumint(6) NOT NULL,
`SubID` mediumint(6) NOT NULL DEFAULT '0',
`Kategori` varchar(100) CHARACTER SET utf8 NOT NULL,
`Aciklama` varchar(200) CHARACTER SET utf8 NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
--
-- Tablo döküm verisi `kategori`
--
INSERT INTO `kategori` (`ID`, `SubID`, `Kategori`, `Aciklama`) VALUES
(1, 0, 'Ana Kategori', 'Ana Kategori Açıklaması'),
(2, 0, 'Ana Kategori 2 ', 'Ana Kategori 2 Açıkaması'),
(3, 0, 'Ana Kategori 3', 'Ana Kategori 3 Açıklaması'),
(4, 0, 'Ana Kategori 4 ', 'Ana Kategori 4 Açıkaması'),
(5, 1, 'Alt Kategori 1-0', 'Alt Kategori Açıklaması'),
(6, 2, 'Alt Kategori 2-0 ', 'Alt Kategori 2 Açıkaması'),
(7, 1, 'Alt Kategori 1-1', 'Alt Kategori Açıklaması'),
(8, 2, 'Alt Kategori 2-1 ', 'Alt Kategori 2 Açıkaması'),
(9, 3, 'Alt Kategori 3', 'Alt Kategori Açıklaması'),
(10, 3, 'Alt Kategori 3-1 ', 'Alt Kategori 3-1 Açıkaması'),
(11, 7, 'Deneme En Alt Kategori', 'Deneme En Alt Kategori Açıklaması'),
(12, 8, 'Deneme En Alt Kategori Açıklaması', 'Deneme En Alt Kategori Açıklaması'),
(13, 11, 'Daha Dip Kategori', 'Daha Dip Kategori'),
(14, 13, 'Yok Artık Kategorisi', 'Yok Artık Kategorisi'),
(15, 5, 'Alt Kategori Deneme', 'Alt Kategori Deneme Açıklaması');
PHP İşlem Kısmı
<?php
require_once "sql.php";
$DB = new Mysqlidb("localhost", "root", "", "test");
$sub = 1;
function AltKategoriler($id, $sub=1){
global $alt_kategoriler;
if(isset($alt_kategoriler[$id])) {
$y = $alt_kategoriler[$id];
foreach($y as $yak) {
$ss = "=";
for($i=1;$i<=$sub;$i++): $ss .= "="; endfor;
echo "║$ss ".$yak["Baslik"]." - ".$yak["Aciklama"]."</br>";
AltKategoriler($yak["ID"],($sub+1));
}
}
}
$kategoriler = array();
$alt_kategoriler = array();
$DB->orderBy("SubID","ASC");
$liste = $DB->get("kategori");
foreach($liste as $kategori) {
if($kategori["SubID"]==0) {
$kategoriler[$kategori["ID"]] = array("ID"=>$kategori["ID"],"Baslik"=>$kategori["Kategori"], "Aciklama"=>$kategori["Aciklama"]);
} else {
$alt_kategoriler[$kategori["SubID"]][] = array("ID"=>$kategori["ID"],"Baslik"=>$kategori["Kategori"], "Aciklama"=>$kategori["Aciklama"],"AnaKategori"=>$kategori["SubID"]);
}
}
foreach($kategoriler as $k) {
echo "╔".$k["Baslik"]." - ".$k["Aciklama"]."</br>";
AltKategoriler($k["ID"], 1);
}
?>Çıktısı
╔Ana Kategori - Ana Kategori Açıklaması
║== Alt Kategori 1-0 - Alt Kategori Açıklaması
║=== Alt Kategori Deneme - Alt Kategori Deneme Açıklaması
║== Alt Kategori 1-1 - Alt Kategori Açıklaması
║=== Deneme En Alt Kategori - Deneme En Alt Kategori Açıklaması
║==== Daha Dip Kategori - Daha Dip Kategori
║===== Yok Artık Kategorisi - Yok Artık Kategorisi
╔Ana Kategori 2 - Ana Kategori 2 Açıkaması
║== Alt Kategori 2-1 - Alt Kategori 2 Açıkaması
║=== Deneme En Alt Kategori Açıklaması - Deneme En Alt Kategori Açıklaması
║== Alt Kategori 2-0 - Alt Kategori 2 Açıkaması
╔Ana Kategori 3 - Ana Kategori 3 Açıklaması
║== Alt Kategori 3 - Alt Kategori Açıklaması
║== Alt Kategori 3-1 - Alt Kategori 3-1 Açıkaması
╔Ana Kategori 4 - Ana Kategori 4 Açıkaması
Kodu geliştirecek her türlü öneriye açığım
Kaynak