"Menu"の下の図は設計したいメニューを示し、 "table:menu"の図はメニューを作成するために使用されるレコードを含む表を示しています。一番下はHTML
とPHP
を一緒に使用するコードです。これまでは、メニューに表示されているように2レベルのサブメニューを持っていましたが、テーブルレコードに依存するサブメニューのレベルを上げたいのですが?ハードコードするのではなく、動的な再帰的なforeachとif文が必要です。再帰的な回数はテーブルレコードに依存するでしょうか?どうすればいい?現在私はコードイグナイタを使用しています。おかげ動的再帰foreachおよびif文からサブメニュー出力
メニュー
テーブル:メニュー
<ul class="sidebar-menu">
<?php
$main = $this->db->query("SELECT * FROM menu WHERE link_id = '' ");
foreach($main->result() as $row)
{
$check_main = $this->db->query("SELECT * FROM menu WHERE link_id IN (SELECT id FROM menu WHERE id = '$row->id') ");
if($check_main->num_rows() > 0)
{ ?>
<li class="treeview">
<a href="#">
<i class="fa fa-share"></i> <span><?php echo $row->description; ?></span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<?php
$main2 = $this->db->query("SELECT * FROM menu WHERE link_id = '$row->id' ");
foreach($main2->result() as $row2)
{
$check_main2 = $this->db->query("SELECT * FROM menu WHERE link_id = '$row2->id' ");
if($check_main2->num_rows() > 0)
{ ?>
<li>
<a href="#"><i class="fa fa-circle-o"></i><?php echo $row2->description; ?>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<?php
$main3 = $this->db->query("SELECT * FROM menu WHERE link_id = '$row2->id' ");
foreach($main3->result() as $row3)
{
$check_main3 = $this->db->query("SELECT * FROM menu WHERE link_id = '$row3->id' ");
if($check_main3->num_rows() > 0)
{ ?>
<li>
<a href="#"><i class="fa fa-circle-o"></i><?php echo $row3->description; ?>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
</li>
<?php }
else
{ ?>
<li><a href="<?php echo site_url('Report_controller'); ?>?guid=<?php echo $row3->id; ?>"><i class="fa fa-circle-o"></i><?php echo $row3->description; ?></a></li>
<?php }
} ?>
</ul>
</li>
<?php }
else
{ ?>
<li><a href="<?php echo site_url('Report_controller'); ?>?guid=<?php echo $row2->id; ?>"><i class="fa fa-circle-o"></i><?php echo $row2->description; ?></a></li>
<?php }
} ?>
</ul>
</li>
<?php }
else
{ ?>
<li><a href="<?php echo site_url('Report_controller'); ?>?guid=<?php echo $row->id; ?>"><i class="fa fa-share"></i><?php echo $row->description; ?></a></li>
<?php }
} ?>
</ul>
メニューを関数に生成するコード(主な 'foreach'ループ)を除外し、その関数の間にサブメニューの関数を再度呼び出す必要があるかどうかを判断できますしたがって、再帰) –
私はそれを行う例を教えてください。ありがとう。 – Tee