【问题标题】:Alphabetical order help字母顺序帮助
【发布时间】:2010-03-02 15:49:52
【问题描述】:

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

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

我现在真的一无所知,所以任何帮助都会非常感激!

非常感谢

【问题讨论】:

    标签: php css alphabetical


    【解决方案1】:

    由于 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>";
    ?>
    

    【讨论】:

    • 非常感谢,我不得不将 12px 更改为 '12px' 但除此之外,它运行良好,非常感谢您的帮助!
    • 当然,它是一个字符串,所以必须用引号括起来。我会马上改正的。
    【解决方案2】:

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

    我过去的做法只是做出了一个随意的决定,例如,“A”和“B”将在第一列,“C”和“D”在第二列.

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

    【讨论】:

    • 你可以用行数来估计。
    • 谢谢你的回复,虽然上面的答案正是我需要的!
    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多