2013-02-28 137 views
2

我有這個說法可以正常工作,但按字母順序從左到右按3列排列。我希望它按字母順序排列在列的下方,然後繼續到下一列。任何人都知道我可以做到這一點。列出3列按字母順序排列的mysql數據

$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>"; 

回答

0

迴響在一個UL列表中的數據,並使用你的櫃檯設置在UL列表的行數,當計數器達到最大值,創建一個新的列表,並繼續顯示。我個人會使用:

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

這種方式你不需要每次重置計數器。

+0

謝謝v-x我試過並在按字母順序排列之前得到了相同的結果。 – Breezy 2013-02-28 09:04:19

+0

Johny感謝您的回覆,並且您會更詳細地解釋。謝謝 – Breezy 2013-02-28 09:04:50

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播放。