Ben "nth" alt kategorileri bir ağaç menü oluşturmanız gerekir. Ben çok bu tabloyu güncelleme olmayacak, çünkü benim bir tablo yapısı için komşuluk listesi modelini kullanarak yerleşmiş ve bu benim kullanım için uygulamak kolay görünüyordu.
Ben "ul" ve "li" etiketlerini kullanarak çıktıyı stil istiyorum ... Zaten styling yapmak için bir css ve jquery çözüm var. Benim sorunum veritabanından veri çekerek ve bir liste oluşturmak için PHP ile bir özyinelemeli işlevi kullanarak gelen ... liste ağaç oluşturmak için derlenecek bir Zincirleme dizedir. Ben gerçekten zor bir zaman gerekir sadece burada kapanış "ul" ve "li" etiketleri sıraya alıyorum yaşıyorum.
Bu yapmak için en iyi yolu nedir? Bunu yapmak için dizileri ya da bunun gibi bir şey kullanarak başka daha iyi yolları var mı? Eğer böyle bir liste oluşturmak için "en iyi uygulamalar" beni işaret edebilir Herhangi örnekler takdir edilecektir. Teşekkürler.
İşte benim tablo yapısı var:
portfolio_id (int), p_name (varchar), parent_portfolio_id (int) Here's what I want the data to look like when presented:
<ul>
<li>Portfolio Name
<ul>
<li>Sub portfolio A
<ul>
<li>Sub portfolio A - 1</li>
<li>Sub portfolio A - 2</li>
<li>Sub portfolio A - 3</li>
</ul>
</li>
<li>Sub portfolio B</li>
<li>Sub portfolio C</li>
</ul>
</li>
</ul>
Burada geçerli recursive fonksiyon bulunuyor:
function portf($ndb, $portfolio_id, $space=1, $x="", $level=1) // cat id, space to add "_" degree of categoreis times, list of categories
{
$sql = "SELECT portfolio_id, p_name, parent_portfolio_id FROM portfolio WHERE parent_portfolio_id = $portfolio_id ORDER BY p_name ASC;";
$select = $ndb->get_results($sql, 0, ARRAY_A);
if( !is_null($select) )
{
foreach($select as $data)
{
$x = $x . $data->portfolio_id . '_' . $data->parent_portfolio_id . '_' . $level . str_repeat('_', $space) . $data->p_name . '-';
$x = $this->portf($ndb, $data->portfolio_id, ($space+1), $x, ($level+1) );
}
return $x;
}
else
{
return $x;
}
}