Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据项目的第一个字母列出项目_Php_Html_Mysql - Fatal编程技术网

Php 根据项目的第一个字母列出项目

Php 根据项目的第一个字母列出项目,php,html,mysql,Php,Html,Mysql,在我的网站上,我需要在一个页面上显示所有的产品。 让我进一步解释一下。 项目的详细信息将保存在mysql表中。我需要使用这些项目创建一个品牌目录页面。 如果有以字母A开头的项目 A 阿玛尼 阿南 昂古多 和从B开始的项目 B 百加得 巴罗尼 就像我需要显示的A-Z一样,但我对PHP还不熟悉,尝试创建一个逻辑,但什么都没有。 那么有人能帮我吗 提前谢谢 一个快速的回复会很好 谢谢在mysql查询中尝试order by SELECT id,name from TABLE order by n

在我的网站上,我需要在一个页面上显示所有的产品。 让我进一步解释一下。 项目的详细信息将保存在mysql表中。我需要使用这些项目创建一个品牌目录页面。 如果有以字母A开头的项目

A

  • 阿玛尼
  • 阿南
  • 昂古多
和从B开始的项目

B

  • 百加得
  • 巴罗尼
就像我需要显示的A-Z一样,但我对PHP还不熟悉,尝试创建一个逻辑,但什么都没有。 那么有人能帮我吗

提前谢谢

一个快速的回复会很好


谢谢

在mysql查询中尝试order by

SELECT id,name from TABLE order by name asc;

现在,从您从查询中收到的内容开始搜索char'A',并相应地创建块。

您说您正在使用MySQL,但出于某种原因,希望使用PHP进行排序。您知道(我的)SQL中的构造吗

这使得在记录进入PHP之前按字母顺序对其进行排序变得非常容易。设想一个如下所示的查询:

SELECT name 
FROM table
然后你可以想象得到这样的结果:

John
Abe
Pete
Frank
但当您使用ORDER BY构造并将查询转换为:

SELECT name 
FROM table
ORDER BY name
您可以按字母顺序获得结果(文本数据类型的默认值)

如果您决定按降序排序,只需使用
按名称排序DESC
(或
ASC
明确按升序排序)

尝试以下操作:

$sql       = mysql_query("SELECT * FROM ......");

$res       = array();
while($row = mysql_fetch_assoc($sql)){
   $title  = $row['title'];
   $letter = substr($title, 0, 1);
   $res[$letter][] = $title;
}

ksort($res);
echo "<pre>";
print_r($res);
$sql=mysql\u查询(“选择*FROM…”);
$res=array();
while($row=mysql\u fetch\u assoc($sql)){
$title=$row['title'];
$letter=substr($title,0,1);
$res[$letter][]=$title;
}
k港口(卢比);
回声“;
印刷品(港币);;

建议采用这种方法:

  • 按照@SudipPal的建议,首先在mysql中对结果列表进行排序
  • 使用
    for
    循环遍历已排序的项
  • 收集所有的“A”,并将它们推入一个新的关联数组,使用
    键作为“A”
  • 对其余的字母重复
  • 您应该得到如下结构的关联数组:

    $letter = 'a'; // or 'b' ... 'z'
    $q = mysql_query(" select * from `my_table` where `my_coloumn` like '".$letter."%'  ");
    while($r = mysql_fetch_object($q))
    {
        echo $r->my_cloumn.'<br />';
    }
    

    您可以使用Mysql查询解决此问题,如下所示:

    $letter='a';//或者“b”…'z'
    $q=mysql_查询(“从'my_table'中选择*,其中'my_column'like'。$letter.%'”;
    而($r=mysql\u fetch\u object($q))
    {
    echo$r->my_cloumn.
    ; }
    能否显示您的mysql查询?你在使用ORDERBY吗?是的,我在我的SQL查询中使用ORDERBY子句…这是我的查询选择不同的名称,id从其他ORDERBY名称中选择尼斯方法,其他答案只是显示SQL请求,我认为这不是最复杂的部分!哎呀,我想我没能理解你的问题是“如何按字母顺序排序”,而不是“如何在PHP中打印分组记录”。是的,Joost,这是如何分组记录。这不是我想要的。但非常感谢你的支持
    array(
        "A" => array("Armani", "Anan", "Aungundo"),
        "B" => array("Bacardi", "Barloni"),
        "C" => ... ,
        ...
    )
    
    $letter = 'a'; // or 'b' ... 'z'
    $q = mysql_query(" select * from `my_table` where `my_coloumn` like '".$letter."%'  ");
    while($r = mysql_fetch_object($q))
    {
        echo $r->my_cloumn.'<br />';
    }