2016-01-04 56 views
1

我想用類來扭曲每兩行。所以我從這裏看到了一些指導,並使用Google搜索,並發現foreach array_chunk來做到這一點。我試着如下所示不能顯示任何結果。沒有任何foreach它的工作。請問我的錯在這裏?在查詢後扭曲兩行後的類

enter image description here

在我想要做上面的圖片;我的每兩個類別都有一個班級。並在每個頂級類別後添加一個分隔符。

這裏是我的嘗試:

echo '<ul class="dropdown-menu dropdown-menu-large row">'; 
    $sql = "SELECT id,name FROM main_cata ORDER BY id ASC"; 
    $execute = $dbh->query("$sql"); 
    $rowcount = $execute->num_rows ; 
    $row = $dbh->query($sql) ; 

    while ($row = $execute->fetch_assoc()) { 

     foreach (array_chunk($row, 2, true) as $array){ 
      echo'<li class="col-sm-3">'; 

      foreach($array as $rows){ 
        echo '<ul><li class="dropdown-header">'.$rows->name.'</li>'; 

        $sql2 = "SELECT id,name,page FROM catagory WHERE m_cata = '".$rows->id."' ORDER BY id ASC"; 
        $execute2 = $dbh->query("$sql2"); 
        $rowcount2 = $execute2->num_rows ; 
        $row = $dbh->query($sql) ; 
        while ($row = $execute2->fetch_assoc()) { 
        $cid = $row['id']; 
        $cname = $row['name'];  
        $page = $row['page']; 
        echo '<li><a href="#">'.$cname.'</a></li>'; 
        } 
        echo '<li class="divider"></li></ul>'; 
       } 
       echo '</li>'; 
     }  
    } 
echo '</ul>'; 

回答

0
while ($row = $execute->fetch_assoc()) { 

FETCH_ASSOC從查詢返回1行(ID,姓名),那麼您使用的是2的結果和劈裂(https://secure.php.net/manual/pt_BR/mysqli-result.fetch-assoc.php),什麼你能做的就是,使一個計數器,而不是每一個它reachs 2.

foreach (array_chunk($row, 2, true) as $array){ 

$行的內容時重置陣列塊是,例如,陣列(「ID」 => 1,「NA我'=>'類別1')。

foreach($array as $rows){ 

您無需再次迭代。


一個簡單的版本:

counter = 0; 
echo "<ul>"; 
while (row = execute->fetch_assoc()) { 
    if (counter == 0) { 
     echo "init li"; 
    } 

    echo "subinit li"; 
    get subcategories 
    while (row2 = execute2->fetch_assoc()) { 
     print content 
    } 
    echo "subend li";  

    if (counter == 2) { 
     counter == 0; 
     echo "end li"; 
    } else { 
     counter++; 
     echo "divider"; 
    } 
} 
echo "</ul>";