-1

我有一些使用 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 应该更短。

4

1 回答 1

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); 
于 2012-08-20T17:43:57.087 回答