ben şu şekil kullanıyorum. kategoriid kategori parentid1 Anakategori 0-2 altkategori 1--3 altaltkategori 22 2. Anakategori 0gibi gibi Bittik biz bittik

recursive algoritma biraz sıkıntılı aslında hele de bi database kullanıyorsan lümden başka bişey değil. farklı algoritmalar var leaf gibi nmc anlatmış, ben şyle birşey kullanmıştım: atıyorum 79 id'li bir kategori 23 ve 45 idli kategorilerinin altında olsun. "23-45-79-" şeklinde bir sütun daha atıyordum. mesela 45 id'li bir ürünün altındakileri listelemek istedim, parent kısmı 23-45- ile başlayan node'ları sort ediyordum mesela "like '23-45-%'" şeklinde bir sorgu yapıyordum sql'de. sorting işlemi yavaş diyebilirsin ama sutünü indexlediğinde diğer algoritmalardan hızlı çalışacaktır emin ol. araya node ekleme, node silme gibi işlemlerde çok güzel çalışıyor ve leaf algoritması gibi fazla birşey de istemiyor, tek sıkıntısı bir node'un altındaki node'larda ekstradan bir sıralama yapmak istediğinde karışıyor baya işler. zannediyorum sen de byle birşey istemiyorsun. . . .. . ... .

php diyosun sanırım bizim node dediğimiz database satırı olacak aslında. çok güzel bi makale vardı yntemler hakkında aradım ama bulamadım şimdi. ne yaparsan yap dngü içinde sql çalıştırma ncelikle. bu yazılım işinde çok muhterem ulaştırma bakanımızın da dediği gibi fazla kurcalamayacaksın işini grüyorsa birşey. yeni kullanacağın algoritma büyük ihtimal ncekinden karışık olacak ama pek artı sağlamayacak, ncekiyle alıp veremediğin neydi? :) hocam aslında nceki işimi zaten grüyor hatta şuanki bahsettiğim node mantığıyla çalışan scriptte buldum ama benimki bu işin arkaplanının nasıl çalıştığını ğrenme isteği sadece :D kişisel bir merak. .

Hocam şyle düşün bi class olsun node isminde. class Node bu ağaç üzerindeki her elemanı temsil ediyor. function agacTara { // agactaki elemanin degerini yaz echo agac->deger; // agacin sag ve sol yapragi da bos ise en son adima geldik demektir fonksiyondan cik. if else { // agacin sol yapragi bos degil ise ayni fonksiyonu sol için cagir. if // agacin sag yapragi bos degil ise ayni fonksiyonu sol için cagir. if } } yüzeysel olarak bu şekilde. Hata yapmış olabilirim emin değilim şu an :) Bu yapıya depth first search deniyor. Farklı çzümler de var ayrıntısına burdan bakarsın. http://en. wikipedia. org/wiki/Tree_traversal Hocam yazdığın çzüm tam bahsettiğim şey aslında ama mesela bu 3 yapraklı bir sistem için ya 4-5 tane yaprak varsa bi katmanda o zaman ne yapacağız. Yani her duruma karşı çzüm üreten tek bir mantık yok mu :D? ya da ben mi yanlış anladım bu hepsine ortak bir çzüm mü.

Hocalar elimde şekildeki gibi birbirine parent-child mantığıyla bağlantılı bir tablo olduğunu varsayalım. Ben yle bir script yazmak istiyorum ki bu parent-child ağacını gezerek bir haritasını çıkartacak ve şuna benzer bir rapor dkecek. -Ana kategori --1. alt kategori 1. alt kategorinin 1. alt kategorisi 1. alt kategorinin 1. alt kategorisinin 1. alt kategorisi 1. alt kategorini 2. alt kategorisi --2. alt kategori 2. alt kategorinin 1. alt kategorisi vs. vs. bun mantığada recursive deniyor sanırım. bu işi yapacak scriptin bana mantığını anlatarak kodla rnekleyecek bir arkadaş arıyorum ki tbt'de %100 vardır yle birisi :) ama lütfen sadece hazır kodları yapıştırıp al bunu kullan demeyin ben olayı kavramak istiyorum mantığı anlatın. .

Hocam şyle düşün bi class olsun node isminde. class Node bu ağaç üzerindeki her elemanı temsil ediyor. function agacTara { // agactaki elemanin degerini yaz echo agac->deger; // agacin sag ve sol yapragi da bos ise en son adima geldik demektir fonksiyondan cik. if else { // agacin sol yapragi bos degil ise ayni fonksiyonu sol için cagir. if // agacin sag yapragi bos degil ise ayni fonksiyonu sol için cagir. if } } yüzeysel olarak bu şekilde. Hata yapmış olabilirim emin değilim şu an :) Bu yapıya depth first search deniyor. Farklı çzümler de var ayrıntısına burdan bakarsın. http://en. wikipedia. org/wiki/Tree_traversal There are 10 types of people in the world. Those who knows binary and those who dont...

Hocam o zaman else içinde dngü ile çağıracaksın diğer fonksiyonları :) Node arrayin olduğunu varsayıyorum. for(int i = 0; i < agac->size; i++)return agacTara ; şeklinde olacak else kısmı. if kısmında da bütün hepsi null mı diye kontrol edeceksin. Aslında bu biraz amelece bir yntem normalde kontrol en alt basamakta yapılır. Yani bulunduğum node null mı? eğer null ise çık şeklinde. Fakat bu şekilde yapınca biraz daha anlaşılır oluyor o yüzden byle yaptım. sağol hocam şimdi çok güzel anladım eyv :f.

SAX parserler yukarda belirttiğin tipte okuyup sana nodeları veriyorlar. Ama kendim dolaşıcam dersen Pre-Order treversal yapacaksın. http://en. wikipedia. org/wiki/Tree_traversal SpArK tarafından 03/May/13 22:20 tarihinde düzenlenmiştir

SAX parserler yukarda belirttiğin tipte okuyup sana nodeları veriyorlar. Ama kendim dolaşıcam dersen Pre-Order treversal yapacaksın. http://en. wikipedia. org/wiki/Tree_traversal sağol hocam inceliyim onuda.

Buremba bunu yazdı php diyosun sanırım bizim node dediğimiz database satırı olacak aslında. çok güzel bi makale vardı yntemler hakkında aradım ama bulamadım şimdi. ne yaparsan yap dngü içinde sql çalıştırma ncelikle. bu yazılım işinde çok muhterem ulaştırma bakanımızın da dediği gibi fazla kurcalamayacaksın işini grüyorsa birşey. yeni kullanacağın algoritma büyük ihtimal ncekinden karışık olacak ama pek artı sağlamayacak, ncekiyle alıp veremediğin neydi? :) hocam aslında nceki işimi zaten grüyor hatta şuanki bahsettiğim node mantığıyla çalışan scriptte buldum ama benimki bu işin arkaplanının nasıl çalıştığını ğrenme isteği sadece :D kişisel bir merak. ahanda buldum. http://www.slideshare.net/billkarwin/models-for-hierarchical-data bu abimiz baya kaliteli bi abi, bütün kullanımdaki algoritmaları sıralamış eksiklerini artıları listelemiş. biraz ingilizcen varsa çok rahat anlayabilirsin hocam. . . .. . ... .

sokoban bunu yazdı Buremba bunu yazdı php diyosun sanırım bizim node dediğimiz database satırı olacak aslında. çok güzel bi makale vardı yntemler hakkında aradım ama bulamadım şimdi. ne yaparsan yap dngü içinde sql çalıştırma ncelikle. bu yazılım işinde çok muhterem ulaştırma bakanımızın da dediği gibi fazla kurcalamayacaksın işini grüyorsa birşey. yeni kullanacağın algoritma büyük ihtimal ncekinden karışık olacak ama pek artı sağlamayacak, ncekiyle alıp veremediğin neydi? :) hocam aslında nceki işimi zaten grüyor hatta şuanki bahsettiğim node mantığıyla çalışan scriptte buldum ama benimki bu işin arkaplanının nasıl çalıştığını ğrenme isteği sadece :D kişisel bir merak. ahanda buldum. http://www.slideshare.net/billkarwin/models-for-hierarchical-data bu abimiz baya kaliteli bi abi, bütün kullanımdaki algoritmaları sıralamış eksiklerini artıları listelemiş. biraz ingilizcen varsa çok rahat anlayabilirsin hocam. İnceliyim hocam :D bu konudan çok güzel şeyler çıktı iyi ki açmışım. .

recursive algoritma biraz sıkıntılı aslında hele de bi database kullanıyorsan lümden başka bişey değil. farklı algoritmalar var leaf gibi nmc anlatmış, ben şyle birşey kullanmıştım: atıyorum 79 id'li bir kategori 23 ve 45 idli kategorilerinin altında olsun. "23-45-79-" şeklinde bir sütun daha atıyordum. mesela 45 id'li bir ürünün altındakileri listelemek istedim, parent kısmı 23-45- ile başlayan node'ları sort ediyordum mesela "like '23-45-%'" şeklinde bir sorgu yapıyordum sql'de. sorting işlemi yavaş diyebilirsin ama sutünü indexlediğinde diğer algoritmalardan hızlı çalışacaktır emin ol. araya node ekleme, node silme gibi işlemlerde çok güzel çalışıyor ve leaf algoritması gibi fazla birşey de istemiyor, tek sıkıntısı bir node'un altındaki node'larda ekstradan bir sıralama yapmak istediğinde karışıyor baya işler. zannediyorum sen de byle birşey istemiyorsun. hocam 23-45-79 mantığını ben de bir ilan sisteminde kullanmıştım çok fazla alt kategori vardı bende map diye bir alan açtıydım 1@25@33 gibi bir harita oluşturdum senin gibi ama bu sefer direk bir algoritma yardımıyla bu işi çzmek istedim :D şimdi php'De üzerinde çalışıyorum eğer başarılı olursam oluşturduğum mantığı bu konuda paylaşırım. .

13 yaşındaki yiğenime aşağıdaki kodu gsterip anlatmıştım :D çocuk anlamıştı :) elimde materyal yok video çekip grüntülü ders olarak anlatacaktım :D <?php function KlasorListele( $dizin = '.', $seviye = 0 ){ $engelli = array ; //listelemeye girmesini istemediğimiz dizinleri ekleriz. $klasor_ac = @opendir ; //dizin parametresi ile verilen dizini taramaya başlar. while( false! ( $dosya = readdir ) ){ //okunacak klasr kalmayıncaya kadar dngü devam if( ! in_array ){ //engelli listesinde değilse if içeriği okunur listedeyse elseden devam eder. $bosluk = str_repeat( ' ', ( $seviye 4 ) ); // klasr grünümü yapmak için kullanıldı. / 1. klasr 1. Alt Klasr 2. Alt Klasr 2. Alt Klasrün Alt Klasrü :) / if( is_dir ) else } } closedir ; // final işlemi klasr ü bellekte kaldırır. } ?> oku eğer anlamazsan sadece bu dallanmayı içerecek bi fonksiyon yazarım. kardeşim. DuPi tarafından 04/May/13 09:11 tarihinde düzenlenmiştir Ne zaman birşey ğrenmek istesem, Birden Vaktim Kalmıyor?

Günlerdir bunu düşünüyorum ğrenmem lazım kafayı yerim taktım :D Hahahah :D Beyin olanca gücüyle ilerlerken, cinsel sistemlerin korkunç etkinliği daha uykuda olduğu için çocukluk, hayatımız boyunca zlemle geri dnüp baktığımız masumiyet ve mutluluk dnemi, hayatın cennetidir, kayıp cennet. - Arthur Schopenhauer

Hocam o zaman else içinde dngü ile çağıracaksın diğer fonksiyonları :) Node arrayin olduğunu varsayıyorum. for(int i = 0; i < agac->size; i++)return agacTara ; şeklinde olacak else kısmı. if kısmında da bütün hepsi null mı diye kontrol edeceksin. Aslında bu biraz amelece bir yntem normalde kontrol en alt basamakta yapılır. Yani bulunduğum node null mı? eğer null ise çık şeklinde. Fakat bu şekilde yapınca biraz daha anlaşılır oluyor o yüzden byle yaptım. There are 10 types of people in the world. Those who knows binary and those who dont...

php diyosun sanırım bizim node dediğimiz database satırı olacak aslında. çok güzel bi makale vardı yntemler hakkında aradım ama bulamadım şimdi. ne yaparsan yap dngü içinde sql çalıştırma ncelikle. bu yazılım işinde çok muhterem ulaştırma bakanımızın da dediği gibi fazla kurcalamayacaksın işini grüyorsa birşey. yeni kullanacağın algoritma büyük ihtimal ncekinden karışık olacak ama pek artı sağlamayacak, ncekiyle alıp veremediğin neydi? :) . . .. . ... .

ben şu şekil kullanıyorum. kategoriid kategori parentid1 Anakategori 0-2 altkategori 1--3 altaltkategori 22 2. Anakategori 0gibi gibi Hocam tek katmanlı oluyor o zaman bende yle yapıyordum ama şyle bir durum var misal 2. alt kategorinin 2. kategorisinin alt kategorisinin 2. alt kategorisi gibi dıdısının dıdısı kategoriler oluşturunca onu grdüremiyorum çünkü script bütün alt kategorilere inip çıkamıyor. inip çıksa bile doğru raporlayamıyor aslında ben bu istediğim şeyin rneğinide buldum ama hem ingilizce hem çok karışık kodlanmış açıkçası bişey anlamadım o yüzden bir yardımsever anlatır diye umuyorum :D çok işime yarar bir şey değil yapmasamda olur ama tamamen merak hocam. Günlerdir bunu düşünüyorum ğrenmem lazım kafayı yerim taktım :D.

Dostlar herkese teşekkürler problemi şu şekilde çzdüm bir çok arkadaş yardımcı oldu <?php error_reporting(0); $connect = mysql_connect("127.0.0.1", "root", ""); mysql_select_db ; node_gez(0); function node_gez { $sql=mysql_query ; while($satir=mysql_fetch_array } ?> sokoban tarafından 04/May/13 10:51 tarihinde düzenlenmiştir.