-2

如何使用 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>
4

2 回答 2

0

您可以创建一个二维数组:让$resultmysql_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
  }
}

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

于 2013-06-24T12:43:22.613 回答
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>
于 2013-06-24T13:43:50.930 回答