I am trying to do file browser in a tree form and have a problem to sort it somehow. I use PHP and MySQL for that. I've created mixed (nested set + adjacency) table 'element' with the following fields:
element_id, left_key, right_key, level, parent_id, element_name, element_type (enum: 'folder','file'), element_size.
Kullanıcının diğer tabloya eleman (adı, tipi, büyüklüğü) hakkında bilgi taşımak için daha iyi olduğunu şu anda tartışmak vermeyelim.
Belirtilen dizini tarama ve doğru tablo çalışmalarını doldurmak için çalışır. Birinci ve daha sonra dosyaları klasörler: Kayda Değer, ben belirli bir sırayla ağaca unsurlar ekleyerek duyuyorum.
Bundan sonra ben kolayca getirebilir ve basit bir sorgu kullanarak sayfadaki tüm tablosunu görüntülemek:
SELECT * FROM element WHERE 1=1 ORDER BY left_key
O sorgu ve başka bir işlevin sonucu ile i doğru html kodunu (<ul><li>... and so on).
ağacı görüntülemek için üretebilir.
Now back to the question (finally, huh?). I am struggling to add sorting functionality. For example i want to order my result by size. Here i need to keep in my mind whole hierarchy of tree and rule: folders first, files later.
Ben PHP özyinelemeli sorguda üreterek bunu inanıyorum:
SELECT * FROM element WHERE parent_id = {$parentId} ORDER BY element_type (so folders would be first), size (or name for example) asc/desc
Bundan sonra = 'klasörü' türünde her sonuç için ben onun içeriği almak için başka bir sorgu gönderir.
Ayrıca left_key tarafından ve dizi olarak PHP bu tür ondan sonra bütün ağaç almak mümkün ama o daha kötü olurdu sanırım :)
Ben böyle bir şey yapmak daha iyi ve daha verimli bir yolu olup olmadığını merak ediyorum?