使用php在列中显示mysql结果并按列进行排序

时间:2012-11-07 14:56:33

标签: php html mysql

我有以下代码来显示每个类别的一些品牌。

<?
$con = mysql_connect("localhost","baba","passsss");//database connection
mysql_select_db("gr_brands_igi") or die(mysql_error());
mysql_set_charset('utf8',$con);     
$query = "SELECT * FROM brands ORDER BY category_anchor ASC, brand_anchor ASC";

$result = mysql_query($query);

$lasteventname = "";

echo "<table border='0' width='100%' cellspacing='0' cellpadding='0'>";
$cell_ctr = 0;
while($row=mysql_fetch_array($result))
{
    if($row[0] != $lasteventname){
        $title = $row[0];
        $lasteventname = $row[0];
        echo "<tr><td colspan=5><h2>$title</h2></td></tr>";
    }
    if(($cell_ctr % 5) == 4) // 2 is the number of columns
    {
        echo"</tr>";
        echo "<tr>";
        $cell_ctr = 0;
    }
  echo "<td align='justify' cellspacing='2' cellpadding='2'>";
  echo "<h3><a href='http://www.example.com/search/search.asp?txtsearch=$row[2]&catg=$row[3]&intitleanddesc=1&isnavbarsearch=1&gallery=1'>" . $row[2] . "</a></h3>";
  echo "</td>";
  $cell_ctr++;
}

if($cell_ctr == 1)
{
  echo "</tr>";
}
else if($cell_ctr == 2)
{
  echo "</tr>";
}
echo"</table>";
?>

现在显示此

宝石

  • 1 2
  • 3 4
  • 5 6
  • 7 8

但是我想按照这样的列顺序订购:

宝石

  • 1 5
  • 2 6
  • 3 7
  • 4 8

数据库中的字段为:

category_anchor
keyword
brand_anchor
category_id

我只有一个while循环,而$ lasteventname只打印一次

任何想法?

1 个答案:

答案 0 :(得分:2)

是否需要成为一张桌子?对于我的想法,我将使用列表项

<?php
    $result = mysql_query($query);
    $rows = mysql_num_rows($result);
    $i = 0;

    echo '<ul>';

    while($row=mysql_fetch_array($result))
    {
      if (($i % 4) == 0 && $i > 0) {
        echo '</ul><ul>';
      }
      echo '<li><h3>your code</h3></li>';
      $i++;
    }

    echo '</ul>';

    ?>

结果将是这样的,然后您可以根据需要将其设置为表格

<div class="banner">
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
</ul>
<ul>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
</ul>
</div>