2017-02-06 10 views
-1

私のデータベースからデータを並べ替えたいですか?私は連想配列を使いたいので、それを最もよくソートすることができます。データベースからのデータを連想配列に保存する - PHP

上記のように、データベースからすべてのデータを取得します。 $行[「メーカー」]を行うことで、私は次のようないくつかのデータを取得します:

motorola 
sony 
motorola 
google 
samsung 
lg 
samsung 

私はそれが配列で、このように保存することがしたいと思います:(アルファベット順好ましいが順序は、重要ではありません)

"motorola" => 2 
"sony" => 1 
"google" => 1 
"samsung" => 2 
"lg" => 1 

それは、ログファイルのほぼ2ライブを引き起こしたとして、私はこれを行うことによって、それを試してみましたが、それだけでは動作しませんでしたし、ログをきれいにする私のWebホストを引き起こしました。

私が書いたコードは、私はそれを動作させることができる方法は考えていること

$manufacturers = array(); 

//$row are the rows from my database. I will not add them, but by doing $row['manufacturer'] you'll get some brands like google, motorola, etc. 
while($row = $resultSelect->fetch_assoc()) { 

    for ($i = 0; $i < $manufacturers; $i++) { 
    $alreadyEntered = 0; 
    if ($manufacturers[$i] == $row['manufacturer']) $alreadyEntered = 1; 
    if ($alreadyEntered == 0) { 
     $manufacturers[$row['manufacturer']] = 1; 
    } else { 
     $manufacturers[$row['manufacturer']] += 1; 
    } 

    //It caused huge logs, so I decided to break on 50. 
    if ($i > 50) { 
     break; 
    } 
    } 
} 

//Dump it :) to see if it worked 
var_dump($manufacturers); 

を保存します。 GoogleやSOで連想配列の値を設定しようとしましたが、何も効果がありませんでした。

EDIT:

マイ行:

enter image description here

+0

あなたのテーブルには同じ "製​​造元"の行が複数あり、今はそれを数えてソートしたいのですか? –

+0

@AfifZafriはい私は複数の行を持っています。はい、数えてソートしたいと思います。私がSQLを使ってそれを行うことができたら、どうすればいいのですか?私はあなたが行を見ることができるように投稿を編集しました – Jason

答えて

2

あなたはSQLクエリを通じてそれを行うことができます。 countおよびgroup byクエリを使用しています。

SELECT name, COUNT(*) as total 
FROM manufactures 
GROUP BY name 
ORDER BY name ASC 

nameは、製造元の名前の列です。テーブル名はmanufacturesです。

例PHPコード:

$sql="SELECT name, COUNT(*) as total 
FROM manufactures 
GROUP BY name 
ORDER BY name ASC"; 
$result=mysqli_query($con,$sql); 

while($row = mysqli_fetch_assoc($result)) 
{ 
    echo "Name: ". $row['name'] . " Total: ". $row['total'] . "<br>"; 
} 

簡単な説明:クエリが何をするか

は、それがselect all名、およびcountそれらを製造しているということです。同時に、それは一緒に複数の同じ名前がグループ化され、一緒に数えられることを意味する、一緒にgroupの名前を意味します。最後にorder by name ascを使用して、結果をアルファベット順にソートします(A→Z)。

+0

それは働いた!それが存在することを知らなかった..ありがとう – Jason

+0

素晴らしい。私は結果をアルファベット順にソートする答えを編集しました –

+0

私にさらに効率的な方法を与えてくれてありがとう! – Jason

関連する問題