如何使用PHP和MySQL按字母顺序和数字方式获取数据?

时间:2013-06-24 12:35:57

标签: php mysql

如何使用PHP和MySQL按字母顺序和数字方式获取数据?

我想像这样显示我的数据:

**0-9      A             B              C           D               E        **
   1       Apple         Beautiful      Cat         DAD             Ear 
   2       Ant           Ball           Cart        Doll            Eat

请帮我用PHP和MySQL来解决这个问题。

<ul>
    <?php include "config.php";
        $sql4 = mysql_query("select * from categories");
        $count = mysql_num_rows($sql4);
        while($rows = mysql_fetch_array($sql4)){
     ?>

<li><?php echo $rows['category_name'] ?></li>
<?php } ?>

</ul>

2 个答案:

答案 0 :(得分:0)

您可以创建一个2D数组:让$result成为查询的mysql_result:

$data = array();
while($row = mysql_fetch_assoc($result)) {
  $letter = strtolower(substr($row["category_name"],0,1));
  if(is_numeric($letter)) $letter = "0-9";
  if(!isset($data[$letter])) $data[$letter] = array();
  $data[$letter][] = $row["category_name"];
}

然后迭代它以生成所需的表:

foreach($data as $column=>$values) {
  // $column contains the first letter (or 0-9)
  foreach($values as $value) {
    // $value contains category_name
  }
}

我希望你能从这一点完成它,因为这个网站不应该为你解决所有问题。

答案 1 :(得分:0)

将技能更新为PDO,因为mysql不会很快发挥作用。

    <?php include "config.php";
        $sql4 = mysql_query("select * from categories order by category_name ASC");
        $count = mysql_num_rows($sql4);
        while($rows = mysql_fetch_array($sql4)){

    $l = $row['category_name'][0]; // first letter/number
    $category_list[$l][]= $row['category_name'];
}

你必须按照自己的意愿设计这一点。

<ul>
<?php
if(is_array($category_list)){
foreach($category_list as $k=>$v) {
    echo "<li>$k</li>"; // letter/number

    foreach($v as $cat) {
      echo "<li>$cat</li>"; // category name
  }

  }
}
?>
</ul>