列出3列字母垂直的mysql数据

时间:2013-02-28 08:09:52

标签: php mysql

我有这个声明工作正常,但是从3个列的左侧到右侧按字母顺序排列。我希望它在列中垂直列出字母顺序,然后继续到下一列。任何人都知道如何做到这一点。

$models = mysql_query("SELECT model, id FROM model where make='$phonemake' order by model asc") or die(mysql_error());      
$count = 0;    
$max = 3;    
while($model = mysql_fetch_array( $models ))
{    
    $count++;    
    echo "<div style='float:left; width:31%; padding-right:5px;'>".$model['model']."&nbsp;<a href='include/delete-model.php?id=".$model['id']."' onclick='return makesure".$model['id']."();'>Delete</a></div>";
    if($count >= $max){
        //reset counter
        $count = 0;
        //end and restart
        echo"<div style='clear:both;'></div>";

2 个答案:

答案 0 :(得分:0)

回显UL LIST中的数据,并使用您的计数器设置UL LIST中的行数,当计数器达到最大值时,创建一个新列表并继续显示。我会个人使用:

if($counter%3==0) {
   create new list
}

这样你每次都不需要重置计数器。

答案 1 :(得分:0)

您有两种选择:

您可以将结果缓冲到数组中并更改添加div的顺序

代码可能如下所示:

$allmodels = array();
while($model = mysql_fetch_array( $models ))
{    
  $allmodels[] = $model;
}
for($i = 0; 3 * $i < count($allmodels); $i++)
{
    for($j = 0; $j < 3; $j++)
    {
        if(isset($allmodels[($i * 3) + $j]))
        {
          $model = $allmodels[($i * 3) + $j];
          // print your stuff here...
        }
    }
}

或者您可以以某种方式重新排序sql查询中的项目,可能将其转储到临时表或使用mysql_data_seek。