-2

如何在 php 上进行查询和编码?

我的 sql 查询是名称,但我希望将其列在 php 中,并按以 A、B、C 等开头的名称进行分组,如下所示。

我的代码是这样运行的

$sqlquery = <squery string>  
$d=sql(sqlquery)  
while(fetch(d))  
{  
echo data   
}  

我希望它是如下的回声列表

A
Aron
Accel
Aman
B
Balter
Balbon
Basty
C。
_
.
.
Z

如何在每次以每个新字母开头时运行检查,它会在查询运行时首先回显第一个起始字母以进行分组?我想在一个查询中执行此操作,因此我不必运行查询来匹配每个起始字母来对它们进行分组。

4

2 回答 2

2

你可以做的是运行这个查询

请注意,有些人会认为这是错误的,因为您使用 SQL 来格式化 HTML 代码,但您会得到非常干净的客户端代码

select 
   UPPER(LEFT(name.name, 1)) "capital"
 , GROUP_CONCAT( name.name SEPARATOR '<br />') "name_formatted"
from
 name

group by 
 capital asc

看到这个演示http://sqlfiddle.com/#!2/6ec58/8 一件坏事是“使用文件排序”所以最好在你的数据库中有一个单独的起始大写列

如果您运行该查询并获取它,您将得到一个像这样的数组..

$names = array(
    'A' => 'Aron<br />Accel<br />Aman'
  , 'B' => 'Balter<br />Balbon<br />Basty'
);

什么会很容易循环(注意示例循环)

foreach ($names as $capital => $name_formatted) {
  echo '<b>' . $capital . '</b>' . '<br />';
  echo $name_formatted . '<br />';
}

会输出什么

A
Aron
Accel
Aman
B
Balter
Balbon
Basty
于 2013-10-19T16:01:54.803 回答
1

它没有什么太复杂的,只需使用类似的东西:

$sqlquery = <squery string>  
$d=sql(sqlquery) 
$firstletter = ''; 
while(fetch(d))  
{
 if (substr(d, 0, 1) !== $firstletter) {
  if (!empty($firstletter)) {echo '</div><hr />';}
  $firstletter = substr(d, 0, 1);
  echo '<div>'.$firstletter;
 }
 echo d;
}  
于 2013-10-19T14:24:22.037 回答