将MySQL数组拆分为等份

时间:2012-08-20 17:39:31

标签: php mysql html-lists

我使用PHP从mySQL获得了一些输出,如下所示:

    $sqlCommand = "SELECT id, linklabel FROM pages WHERE showing='1' ORDER BY id ASC"; 
    $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error()); 

    $menuDisplay = '';
    while ($row = mysqli_fetch_array($query)) { 
        $pid = $row["id"];
        $linklabel = $row["linklabel"];

        $menuDisplay .= '<li><a href="index.php?pid=' . $pid . '">' . $linklabel . '</a></li>';

    } 
    mysqli_free_result($query); 

但我希望将输出分配到三个UL之间,而不是将其全部包含在一个UL中。任何想法如何做到这一点?

澄清: 我有这个输出与上面的代码:

<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

我想要这个输出:

<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>

如果项目数量不均匀,则最后一个UL应该更短。

1 个答案:

答案 0 :(得分:0)

你的问题很模糊,据你所知,解决问题的一种方法是每次将消息拆分为三个“子消息”。我认为最好的选择是创建一个数组,当它的每个单元格包含一个子消息。您可能会发现此代码很有用:

    $sqlCommand = "SELECT id, linklabel FROM pages WHERE showing='1' ORDER BY id ASC"; 
    $query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error()); 

    $menuDisplay = '';
    $output_count = 0 ; // count output
    $output_array = array () ; //every 3 loops we'll insert the output to this array
    while ($row = mysqli_fetch_array($query)) { 
        $output_count++ ; //update count value
        $pid = $row["id"];
        $linklabel = $row["linklabel"];
        $menuDisplay .= '<li><a href="index.php?pid=' . $pid . '">' . $linklabel .'</a></li>';
        array_push($output_array, $menuDisplay) ; // insert current message to array
    } 


$arrry_size = sizeof($output_array);
$count = 0 ;
$currentMessage = '' ;
for($i = 0 ; $i < $array_size ; $i++){
    $count ++ ;
    if($count >= $array_size / 3){
        echo $currentMessage ; //you could save it in an array or do whatever you want
        $currentMessage = '' ;
        $count = 0;
       }


   if($count == $array_size-1 ) // in case we've achieved the last index of the array
      echo currentMessage ;
   $currentMessage.= $output_array[$i];
}

    mysqli_free_result($query);