0

電話でいっぱいのリストがあるとしましょう。次のように、すべての電話を順不同のリストに出力するのは簡単です。

$get_phones = $mysqli->query("
SELECT
    a.id,
    b.phone_id,
    a.phonename AS pname,
    b.modelname AS mname,
FROM phone_brands 
a LEFT OUTER JOIN phone_models b
ON a.id = b.phone_id");

while($phones = $get_phones->fetch_assoc()){
echo $phones['pname'] . $phones['mname'];}

しかし、次のようにすべてのモデルと電話を並べ替えて、リストを読みやすくするにはどうすればよいですか。

iPhone
3G
3GS
4G

ノキア
Lumia 1020
Lumia 925
Lumia 520

私の推測では、次のようなことをする必要があります。

if($phones['pname'] == $phones['pname']{}

でも遠くにいると分からない?どんな助けでも大歓迎です:)

4

3 に答える 3

0

もちろん、クエリを mname で並べ替えることができます。

$get_phones = $mysqli->query("
SELECT
    a.id,
    b.phone_id,
    a.phonename AS pname,
    b.modelname AS mname,
FROM phone_brands 
a LEFT OUTER JOIN phone_models b
ON a.id = b.phone_id
ORDER BY mname");

そして、phpで次のようにします:

$currentModel = "";

while($phones = $get_phones->fetch_assoc()){
    if($currentModel != $phones['mname']){
        echo $phones['mname'].'<br/>';
        $currentModel = $phones['mname'];
    }
    echo $phones['pname'];
}
于 2013-07-17T11:52:14.493 に答える
0

データベース レベルでの並べ替えははるかに高速で、最終的には同じ結果になります。PHP配列でそれを読み取って、ソートすることができます。

$get_phones = $mysqli->query("
SELECT
    a.id,
    b.phone_id,
    a.phonename AS pname,
    b.modelname AS mname,
FROM phone_brands 
a LEFT OUTER JOIN phone_models b
ON a.id = b.phone_id
order by pname, mname");
于 2013-07-17T11:56:35.450 に答える