按字母排序的帮助

时间:2010-03-02 15:49:53

标签: php css alphabetical

我在这里遇到问题,我正在尝试从我的数据库中获取所有标题并按字母顺序列出它们,第一个字母表示我们所处的位置,所以更清楚:

A:
 Animal
 Alex
B:
 Boo
C:
 Crap

实际上这就是我使用的,它完美无缺:

<?php

$conn = mysql_connect('localhost','user','pw') or die(mysql_error());
$db = mysql_select_db('dbname') or die(mysql_error());

$sql = "select * from games order by title";
$result = mysql_query($sql, $conn) or die(mysql_error());

while ($list = mysql_fetch_array($result)) {

$letter = strtoupper(substr($list['title'],0,1));

if ($letter != $prev_row) {
echo "<br><b><u>$letter</u></b><br>";
} 
echo '<li><a href="/play/id/' . $list['id'] . '/">'.$list['title'].'</a></li>';

$prev_row = $letter;
} // end while
?>

但我希望如此,当它到达我的div的末尾时,让我们说400px的高度,它开始于一个新的列,如:

A:                             C: 

Alien                         Crap

B:                             D:

Boo                           Dododododo

此刻我真的很无能为力,所以任何帮助都会得到很大的帮助!

非常感谢

2 个答案:

答案 0 :(得分:3)

由于HTML尚未广泛支持列,因此您必须计算打印的行数并将其乘以您定义的行高。

<?php

$conn = mysql_connect('localhost','user','pw') or die(mysql_error());
$db = mysql_select_db('dbname') or die(mysql_error());

$sql = "select * from games order by title";
$result = mysql_query($sql, $conn) or die(mysql_error());
echo "<div style='float:left;height:400px;width:150px;'>";
$current_height = 0;
$line_height = '12px'; // replace by your value

while ($list = mysql_fetch_array($result)) {

$letter = strtoupper(substr($list['title'],0,1));

if ( $current_height >= (400 - 2 * (int) $line_height) ) {
echo "</div><div style='float:left;height:400px;width:150px;'>";
$current_height = 0;
}
if ($letter != $prev_row) {
echo "<br><b><u>$letter</u></b><br>";
$current_height += (int) $line_height;
} 
echo '<li><a href="/play/id/' . $list['id'] . '/">'.$list['title'].'</a></li>';
$current_height += (int) $line_height;

$prev_row = $letter;
} // end while
echo "</div>";
?>

答案 1 :(得分:1)

HTML没有提供任何方法来判断文本的渲染高度,因此无法确定何时需要跳转到第二列。

我过去如何做到这一点只是一个随意的决定,例如,'A'和'B'将在第一列,'C'和'D'在第二列

当CSS3真正滚动时,它可以指定多列布局:http://www.quirksmode.org/css/multicolumn.html