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