Alfabetik sıralama yardım

2 Cevap php

Ben çok daha net olmak gerekirse, benim veritabanındaki tüm başlıkları olsun ve biz de bulunduğunu belirten ilk harfi ile alphabetial sırayla bunları listelemek çalışıyorum, burada bir sorun yaşıyorum:

A:
 Animal
 Alex
B:
 Boo
C:
 Crap

Aslında bu ben kullanmak ne olduğunu ve mükemmel çalışıyor:

<?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
?>

Ama ben bu yüzden, benim div sonuna ulaştığında, sanki yeni bir sütun üzerinde başlar, en 400px yükseklik diyelim bunu istiyorum

A:                             C: 

Alien                         Crap

B:                             D:

Boo                           Dododododo

Ben şu anda gerçekten clueless değilim, bu yüzden herhangi bir yardım gerçekten aprreciated olurdu!

Çok teşekkürler

2 Cevap

Sütunlar henüz geniş HTML desteklenmez olarak basılmış satırları saymak ve belirlenen satır yüksekliği onları çarpmak gerekir.

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

HTML metin işlenmiş yüksekliğini anlatmak için herhangi bir yol sağlamaz, bu nedenle ikinci sütuna atlamak gerektiğinde anlatmak için hiçbir yolu yoktur.

Nasıl geçmişte yaptık sadece, örneğin, 'A' ve 'B' ilk sütunda olacak keyfi bir karar, ve 'C ve' D ', ikinci sütunda olmasıdır.

CSS3 gerçekten haddeleme aldığında, bir multi-sütun düzeni belirtmek için yeteneği vardır: http://www.quirksmode.org/css/multicolumn.html