动态加载<ul>然后按5行一列排序


Dynamically load a <ul> and sort into columns of 5 rows

好的,我想我应该把这个放在那里。我有25个条目在我的数据库列表,我想在我的页面上显示,以列表形式,在5列5行。

我准备了一个解决方案,尽管不是那么优雅。

<?php
                            $query = "SELECT * FROM city ORDER BY name ASC";
                            $result = mysql_query($query, $connection);
                            confirm_query($result);
                            echo "<ul class='"floatleft'">";
                            $counter = 1;
                            while ($row = mysql_fetch_array($result)) {
                            if ($counter <= 5) {
                                    echo "<li>{$row["name"]}</li>";
                                    $counter = $counter + 1;
                                        if ($counter == 6) {
                                            echo "</ul>";
                                        }
                                } elseif($counter > 5 && $counter <= 10) {
                                        if ($counter == 6){
                                            echo "<ul class='"floatleft'">";
                                        }
                                    echo "<li>{$row["name"]}</li>";
                                    $counter += 1;
                                        if ($counter == 11) {
                                            echo "</ul>";
                                        }
                                } elseif($counter > 10 && $counter <= 15) {
                                        if ($counter == 11){
                                            echo "<ul class='"floatleft'">";
                                        }
                                    echo "<li>{$row["name"]}</li>";
                                    $counter += 1;
                                        if ($counter == 16) {
                                            echo "</ul>";
                                        }
                                } elseif($counter > 15 && $counter <= 20) {
                                        if($counter == 16){
                                            echo "<ul class='"floatleft'">";
                                        }
                                    echo "<li>{$row["name"]}</li>";
                                    $counter += 1;
                                        if ($counter == 21) {
                                            echo "</ul>";
                                        }
                                } elseif($counter > 20 && $counter <= 25) {
                                    if($counter == 21){
                                        echo "<ul class='"floatleft'">";
                                    }
                                echo "<li>{$row["name"]}</li>";
                                    $counter += 1;
                                        if ($counter == 26) {
                                            echo "</ul>";
                                        }
                                }
                            }
                        ?>

这将输出如下

<ul class="floatleft">
<li>Belfast</li>
<li>Birmingham</li>
<li>Brighton</li>
<li>Bristol</li>
<li>Cambridge</li>
</ul>
<ul class="floatleft">
<li>Cardiff</li>
<li>Carlisle</li>
<li>Edinburgh</li>
<li>Glasgow</li>
<li>Hull</li>
</ul>
<ul class="floatleft">
<li>Lancaster</li>
<li>Leeds</li>
<li>Leicester</li>
<li>Liverpool</li>
<li>London</li>
</ul>
<ul class="floatleft">
<li>Manchester</li>
<li>Newcastle</li>
<li>Norwich</li>
<li>Nottingham</li>
<li>Oxford</li>
</ul>
<ul class="floatleft">
<li>Plymouth</li>
<li>Portsmouth</li>
<li>Southampton</li>
<li>Swansea</li>
<li>York</li>
</ul>

有人知道更好的方法吗?我对php还是个新手,我知道一定有更好、更简洁的方法。

像这样将记录添加到1 ul:

http://jsfiddle.net/RC2jN/

这样,如果你添加一个li,它仍然会工作

echo '<ul class="floatleft">';
for($i=0;$i<mysql_num_rows($result);$i++){
  $row = mysql_fetch_array($result)
  if($i%5==0)
    echo '</ul><ul class="floatleft">';
  echo "<li>{$row['name']}</li>";
}
echo '</ul>';

有很多人会告诉您不要使用表,但我认为如果您要将数据放入类似表的格式中,那么这就是首先创建Table元素的原因。你使用列表有什么特殊的原因吗?

$cols = 5;
$count = 0;
echo("<table><tr>");
while($row = mysql_fetch_array($result)) {
    if($count % $cols == 0)
        echo("</tr><tr>");
    echo("<td>" . $row['name'] . "</td>");
    $count++;
}
echo("</tr></table>");

您可以使用mod操作符来正确执行。

<?php
  $query = "SELECT * FROM city ORDER BY name ASC";
  $result = mysql_query($query, $connection);
  confirm_query($result);
  $counter = 0;
  while ($row = mysql_fetch_array($result)) {
  if (($counter % 5) == 0)
    echo "<ul class='"floatleft'">";
  echo "<li>{$row["name"]}</li>";
  }
?>

我试过了,但是其他人都比我快哈哈!

$query = "SELECT * FROM city ORDER BY name ASC";
$result = mysql_query($query, $connection);
confirm_query($result);
$qty = 4;
$count = 0;
while ($row = mysql_fetch_array($result)) {
    if ($count == 0)
        echo "<ul class='"floatleft'">";
    echo "<li>{$row["name"]}</li>";
    $count++;
    if($count == $qty){
        echo "<'ul>";
        $count = 0;
    }
}