-1

私のサイトでは、すべての製品を 1 つのページに表示する必要があります。さらに説明させてください。アイテムの詳細は mysql テーブルに保存されます。そのアイテムを使用してブランド ディレクトリ ページを作成する必要があります。Aから始まる項目があれば、

  • アルマーニ
  • 阿南
  • アングド

Bから始まるアイテムと、

B

  • バカルディ
  • バローニ

そのAZのように表示する必要があります。しかし、私はPHPが初めてで、ロジックを作成しようとしましたが、何も付属していませんでした。誰か助けてくれませんか??>

前もって感謝します。

迅速な返信はとてもいいでしょう。

ありがとう

4

5 に答える 5

3

これを試して :

$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);
于 2013-03-08T09:03:39.540 に答える
1

MySQLを使用していると言いますが、何らかの理由でPHPで並べ替えを実行したいとします。(My)SQLのORDER BY構造を知っていますか?

これにより、レコードがPHPに入る前でも、レコードをアルファベット順に並べ替えることが非常に簡単になります。次のようなクエリを想像してみてください。

SELECT name 
FROM table

次に、次のような結果が得られることを想像できます。

John
Abe
Pete
Frank

ただし、ORDER BY構文を使用して、クエリを次のように変換する場合。

SELECT name 
FROM table
ORDER BY name

結果はアルファベット順に表示されます(テキストデータ型のデフォルト)

Abe
Frank
John
Pete

降順で並べ替える場合は、単にORDER BY name DESC(またはASC明示的に昇順で)を使用します。

于 2013-03-08T09:03:22.777 に答える
0

次のようなMysqlクエリを使用して解決できます。

$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 />';
}
于 2013-03-08T09:09:35.657 に答える
0

このアプローチ方法を提案します。

  1. @SudipPalが提案したように、mysqlで最初に結果のリストをソートします。
  2. forループを使用して並べ替えられたアイテムを反復処理する
  3. すべての「A」を収集し、それらをkey「A」として新しい連想配列にプッシュします
  4. 残りの文字について繰り返します

この構造のような連想配列になるはずです。

array(
    "A" => array("Armani", "Anan", "Aungundo"),
    "B" => array("Bacardi", "Barloni"),
    "C" => ... ,
    ...
)
于 2013-03-08T09:05:18.613 に答える
0

mysqlクエリで注文してみてください

SELECT id,name from TABLE order by name asc;

クエリから受け取ったものから始まる文字「A」を検索し、それに応じてブロックを作成します。

于 2013-03-08T09:01:56.903 に答える