2013-07-19 38 views
0

首先,我是mysqli的新手,并准备了语句,所以请让我知道,如果你看到任何错误。我有这样的静态下拉菜单: enter image description here动态下拉菜单 - PHP

HTML代码:

<ul class="menu sgray fade" id="menu"> 

<li><a href="#">Bike</a> 
    <!-- start mega menu --> 
    <div class="cols3"> 
     <div class="col1"> 
      <ol> 
       <li><a href="#">bikes</a></li> 
       <li><a href="#">wheels</a></li> 
       <li><a href="#">helmets</a></li> 
       <li><a href="#">components</a></li> 
      </ol> 
     </div> 
     <div class="col1"> 
      <ol> 
       <li><a href="#">pedals</a></li> 
       <li><a href="#">GPS</a></li> 
       <li><a href="#">pumps</a></li> 
       <li><a href="#">bike storage</a></li> 
      </ol> 
     </div> 
       <div class="col1"> 
      <ol> 
       <li><a href="#">power meters</a></li> 
       <li><a href="#">hydratation system</a></li> 
       <li><a href="#">shoes</a></li> 
       <li><a href="#">saddles</a></li> 
      </ol> 
     </div> 
    </div> 
    <!-- end mega menu --> 
</li> 

我希望做一个动态下拉菜单。我设法显示$categoryName$SubCategoryName使用此项功能:

function showMenuCategory(){ 
$db = db_connect(); 
$query = "SELECT * FROM Category"; 
$stmt = $db->prepare($query); 
$stmt->execute(); 
$stmt->bind_result($id,$categoryName,$description,$pic,$active); 
while($stmt->fetch()) { 
echo'<li><a href="#">'.$categoryName.'</a> 
<!-- start mega menu --> 
<div class="cols3"> 
<div class="col1"> 
<ol>'; 
$dba = db_connect(); 
$Subquery = "SELECT * FROM Subcategory WHERE CategoryId = '".$id."'"; 
$Substmt = $dba->prepare($Subquery); 
$Substmt->execute(); 
$Substmt->bind_result($Subid,$CatId,$SubCategoryName,$SubDescription); 
while($Substmt->fetch()) { 
echo' 
<li><a href="#">'.$SubCategoryName.'</a></li>'; 
      } 
echo' 
    </ol> 
</div> 
    <!-- end mega menu --> 
     </li>'; 
       } 
        } 

唯一的问题是,它返回在同一<div class="col1">所有子类别:

enter image description here

什么,我想获取是计数子类别,如果结果大于4则返回第二和第三列中的其他项目。

UPDATE ***:感谢回答以下此时画面看起来是这样的:

enter image description here

的感谢!

+0

'hydratation'? '水合',也许? –

+0

@MarcB谢谢你,我没有检查正确的拼写。 ;-) – mat

回答

1

试试这个怎么样?

为了解释进一步

正在发生的事情是,每个子类别牵强,我递增计数器。如果该计数器命中4,则结束<UL><DIV>并创建一个新的代表新列的代码。

function showMenuCategory(){ 
$db = db_connect(); 
$query = "SELECT * FROM Category"; 
$stmt = $db->prepare($query); 
$stmt->execute(); 
$stmt->bind_result($id,$categoryName,$description,$pic,$active); 
while($stmt->fetch()) { 
echo'<li><a href="#">'.$categoryName.'</a> 
<!-- start mega menu --> 
<div class="cols3"> 
<div class="col1"> 
<ol>'; 
$dba = db_connect(); 
$Subquery = "SELECT * FROM Subcategory WHERE CategoryId = '".$id."'"; 
$Substmt = $dba->prepare($Subquery); 
$Substmt->execute(); 
$Substmt->bind_result($Subid,$CatId,$SubCategoryName,$SubDescription); 
$count = 0; 
while($Substmt->fetch()) { 
echo' 
<li><a href="#">'.$SubCategoryName.'</a></li>'; 
$count+=1; 
if ($count == 4) { 
    $count = 0; 
    echo '</ol></div><div class="col1"><ol>'; 
} 
      } 
echo' 
    </ol> 
</div> 
    <!-- end mega menu --> 
    </li>'; 
      } 
       } 

编辑:误解col1的目的。他们都应该col1,现在应该工作。如果没有,给我留言!

+0

对不起,我忘了重置计数 –

+1

谢谢,它完美的作品!我不明白为什么有人会低估这个答案,但这是这里的主要问题。人们在不解释原因的情况下点击-1。 – mat

0

试试这个:

function showMenuCategory(){ 
    $db = db_connect(); 
    $query = "SELECT * FROM Category"; 
    $stmt = $db->prepare($query); 
    $stmt->execute(); 
    $stmt->bind_result($id,$categoryName,$description,$pic,$active); 
    echo '<div class="cols3">'; 
    while($stmt->fetch()) { 
     echo'<li><a href="#">'.$categoryName.'</a> 
     <!-- start mega menu --> 
     <div class="col1"> 
     <ol>'; 
     $dba = db_connect(); 
     $Subquery = "SELECT * FROM Subcategory WHERE CategoryId = '".$id."'"; 
     $Substmt = $dba->prepare($Subquery); 
     $Substmt->execute(); 
     $Substmt->bind_result($Subid,$CatId,$SubCategoryName,$SubDescription); 
     while($Substmt->fetch()) { 
      echo'<li><a href="#">'.$SubCategoryName.'</a></li>'; 
     } 
     echo'</ol>'; 
    } 
    echo '</div><!-- end mega menu --></li>'; 
} 
+0

我试过了,但它甚至不再显示类别。不管怎么说,还是要谢谢你。 – mat