列在2列中

时间:2011-07-22 18:14:01

标签: php mysql

我有一个名单列表,我希望它们像这样在2列中。 如果第一列继续在第二列,我想显示第一个字母和此(继续......)。

#                               C (continued...)
1                               Congo
2                               Cook Islands
3                               Costa Rica
5                               Cote D'Ivoire
6                               Croatia

A                               D
Afghanistan                     Denmark
Africa                          Djibouti
Albania                         Dominica
Algeria
American Samoa

B
Bahamas, The
Bahrain
Bangladesh
Barbados
Bouvet Island
Brazil
Bulgaria

C
Cambodia
Cameroon
Canada
Cape Verde
Caribbean
Chad
Chile
China
Christmas Island
Colombia
Comoros

这是代码现在但第二列没有显示 C (续...)

$alphabet = null;
while($row1 = mysql_fetch_array($locals)) {
if($alphabet != substs($row1['RSTOWN'],0,1)) {
echo strtoupper(substr($row1['RSTOWN'],0,1));
$alphabet = substr($row1['RSTOWN'],0,1);
}
echo '<li class="forward">
<a href="townpubs.php?RSTOWN='.$row1['RSTOWN'].'" rel="external">'
.$row1['RSTOWN'].
'<small class="listcounter">'.$row1['PubCount'].'</small>
</a>
</li>';

2 个答案:

答案 0 :(得分:0)

选择名称,比如名称数量= n,计算halfn = n / 2

存储在数组中,如果存储了索引为halfn + 1的名称,

检查上一个条目是否具有相同的字母,如果是,则在列表中存储“继续...”。

从1打印列表以截断(列表中的编号数+ 1)/ 2以记录奇数个条目。

在每行print [i]和[i + halfn]

答案 1 :(得分:0)

我不打算在你自己的代码上做一个例子。但我会解释这些方法。你只需要向他们实现你的SQL。

实例:http://kopli.pri.ee/stackoverflow/6794308.php

完整版代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>List in 2 columns - Kalle H. Väravas</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style>
        html, body {margin: 0px; padding: 0px;}
        .container {width: 200px; float: left;}
    </style>
</head>
<body>
<?php

$countries = array(
    'Afghanistan',
    'Africa',
    'Albania',
    'Algeria',
    'American Samoa',
    'Bahamas, The',
    'Bahrain',
    'Bangladesh',
    'Barbados',
    'Bouvet Island',
    'Brazil',
    'Bulgaria',
    'Cambodia',
    'Cameroon',
    'Canada',
    'Cape Verde',
    'Caribbean',
    'Chad',
    'Chile',
    'China',
    'Christmas Island',
    'Colombia',
    'Comoros',
    'Congo',
    'Cook Islands',
    'Costa Rica',
    'Cote D\'Ivoire',
    'Croatia',
    'Denmark',
    'Djibouti',
    'Dominica'
);

$countries_count = count($countries);
$breaking_point = round($countries_count / 2);
$foreach_counter = 0;
$current_letter = '';

echo '<div class="container">';
foreach ($countries as $country) {
    $foreach_counter++;
    if ($country[0] != $current_letter) {
        echo '<b>' . ($current_letter = $country[0]) . '</b><br />';
    }
    echo $country . '<br />';
    if ($foreach_counter == $breaking_point) {
        echo '</div><div class="container">';
    }
}
echo '</div>';

?>
</body>
</html>