2010-08-26 94 views
1

我試圖讓我的功能顯示在連續3個環節,然後開始一個新行並顯示其他3點環節等,但我的代碼是不工作的權利 顯示我的鏈接都錯了。PHP函數顯示問題

電流輸出。

<div> 
    <p> 
     <a href="">A</a> 
    </p> 

    <p> 
     <a href="">>A1</a> 
    </p> 
<div> 
    <p> 
     <a href="">Glass &amp; Mosaics</a> 
    </p> 
</div> 

<div> 
    <p> 
     <a href="">>Handcrafted &amp; Finished Pieces</a> 
    </p> 
</div> 
</div> 
    <p> 
     <a href="">>Entrepreneurislism</a> 
    </p> 

    <p> 
     <a href="">>Photography</a> 
    </p> 
</div> 
</div> 

<div> 
    <p> 
     <a href="">>Antiques</a> 
    </p> 

    <p> 
     <a href="">>Antiquities</a> 
    </p> 

    <p> 
     <a href="">>Architectural &amp; Garden</a> 
    </p> 
</div> 
</div> 

<div></div> 

<div> 
    <p> 
     <a href="">>Cameras &amp; Photo1</a> 
    </p> 
</div> 
</div> 
</div> 
<div></div> 
</div> 

輸出應該是。

Link1  Link2  Link3 
Link4  Link5  Link6 
Link7 

這是我的代碼。

function make_list ($parent = 0, $parent_url = '', $ctr = 0) { 
    global $cat_link; 
    global $cat_id;   
    foreach ($parent as $id => $cat) { 
     if(!empty($cat['id'])) { 
      if($ctr%3 == 0) { 
       echo '<div>'; 
      } 

      if(in_array($cat['id'], $cat_id)){ 
       $url = $parent_url . $cat['url']; 
       echo '<p><a href="' . $url . '" title="' . $cat['category'] . ' Category Link" rel="Articles Category">' . $cat['category'] . '</a></p>';   
      } 

      $url = $parent_url . $cat['url'];      
      if(isset($cat_link[$id])) { 
       make_list($cat_link[$id], $url, $ctr+1); 
      } 

      if($ctr%3 == 0) { 
       echo '</div>'; 
      }    
     } 
    } 

    if($ctr%3 != 0) { 
     echo '</div>'; 
    } 

} 

$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC"); 

if(!$dbc) { 
    print mysqli_error($mysqli); 
} 

$cat_link = array(); 
while(list($id, $parent_id, $category, $url) = mysqli_fetch_array($dbc)) { 
    $cat_link[$parent_id][$id] = array('category' => $category, 'url' => $url, 'id' => $id); 
} 

make_list($cat_link[0], $url, $ctr); 
+0

的表可能會更好地工作,爲了這個目的比的div和段落。 – cbednarski 2010-08-26 06:13:11

回答

0

默認<p>...</p><div>...</div>總會塊(開始新行總是)讓你的代碼產生7行。

解決的方法很簡單使用span代替<p>或不使用任何東西。

希望這會有所幫助。

更新:

function make_list ($parent = 0, $parent_url = '', $ctr = 0) { 
    global $cat_link; 
    global $cat_id;   
    $IDs = array_keys($parent); 
    $Count = count($IDs); 
    for ($i = 0; $i < $Count; $i++) { 
     echo '<div>'; 
     for($c = 0; ($c < 3) && ($i < $Count);) { 
      $ID = $IDs[$i++]; 
      $CAT = $parent[$ID]; 

      if(in_array($CAT['id'], $cat_id)) { 
       $URL  = $parent_url . $CAT['url']; 
       $Category = $CAT['category']; 
       echo "<a href='$URL' title='$Category Category Link' rel='Articles Category'>$Category</a>"; 
       $c++ 
      } 

      $URL = $parent_url . $CAT['url'];      
      if(isset($cat_link[$id])) { 
       make_list($cat_link[$id], $URL, $ctr+1); 
      } 
     } 
     echo '</div>'; 
    } 
} 

$dbc = mysqli_query($mysqli,"SELECT * FROM categories ORDER BY parent_id, category ASC"); 

if(!$dbc) { 
    print mysqli_error($mysqli); 
} 

$cat_link = array(); 
while(list($id, $parent_id, $category, $url) = mysqli_fetch_array($dbc)) { 
    $cat_link[$parent_id][$id] = array('category' => $category, 'url' => $url, 'id' => $id); 
} 

make_list($cat_link[0], $url, $ctr); 

我只是添加兩個嵌套的循環:內循環三次,和外面的只是循環中的所有元素。關鍵是,每次內一個環,該元件循環索引(i)改變太多。

讓我們試試吧,讓我知道。

+0

儘管如此,仍然dosn't解決問題。 – bold 2010-08-26 04:44:49

+0

我的代碼不會產生7個不同的行。 – bold 2010-08-26 04:51:07

+0

@bold:查看我的更新。 – NawaMan 2010-08-26 06:02:52

1

你拍攝什麼,我想,是沿着這些路線的東西:

function make_list($parent) 
{ 
    $link_count = 0; 
    foreach($parent as $id => $category) 
    { 
     if($link_count % 3 == 0) echo '<div>'; 

     // display the link here 
     // call make_list here to display sub-categories in an inner <div> 

     if($link_count % 3 == 2) echo '</div>'; 

     $link_count++; 
    } 
}