我使用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应该更短。
答案 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);