2

ここで問題が発生しました。データベースからすべてのタイトルを取得し、アルファベット順にリストして、最初の文字が現在の位置を示すようにしようとしています。

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

私は現時点で本当に無知なので、どんな助けも本当に感謝しています!

どうもありがとう

4

2 に答える 2

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>";
?>
于 2010-03-02T16:00:10.820 に答える
1

HTML はレンダリングされたテキストの高さを伝える方法を提供しないため、いつ 2 列目にジャンプする必要があるかを伝える方法はありません。

私が過去にこれを行った方法は、たとえば、「A」と「B」が最初の列にあり、「C」と「D」が2番目の列にあるという任意の決定を行っただけです。

CSS3 が本格的に動き出すと、複数列のレイアウトを指定できるようになります: http://www.quirksmode.org/css/multicolumn.html

于 2010-03-02T15:59:15.447 に答える