2011-06-29 10 views
2

私は配列に複数の行が含まれますSQLの結果を取得するにはどうすればよい:SQL結果

例SQL表:

ID  Cat  LineID  Qty DealID Cost 
1  Phone  1   2  8941  25.00 
2  Phone  2   43  8941  85.00 
3  Net  1   2  8941  1.00 
4  App  1   1  8941  87.00 
5  Phone  1   20  8942  98.00 

は以下のように結果を返すことができるようにしたいと思いますが。

ところで
$product[Phone][LineID][Qty] 
$product[Phone][1][Qty] -- this would return 2 

:猫の中でLineIDが重複することはないだろうが、それはなかれないかもしれません同じLineIDの - DealID 8941下の例のために猫>電話機1,2,3,4のためにそこにLineIDされる可能性がありますが、別の取引の下でIDが存在する可能性がありますCat> Phones 4,5

完全に間違ったツリーを作成しているかどうかわかりませんが、基本的にDealIDですべての結果をループし、すべての情報を取得するためにLineIDを参照する必要があります名前、画像などを保持している別のテーブルからそのLineIDについて...その後の線に沿ってHTMLテーブルに置か:

Product Name  Qty  Cost  Line Total 
Phone 1   1  85.00 85.00 

私はあまりにもしていないではない場合、私は、これは明らかにされている願っています酷い!!

おかげで、あなたはPHPの関数は、mysql_fetch_arrayを(使用する必要が B.

答えて

0

これが答えです:あなたの助けの@Dereleasesため

$sql="SELECT * FROM Blar"; 
$result = mysql_query($sql); 
$combinedResults = array(); 
while ($row = mysql_fetch_array($result)) { 
    $combinedResults[$row['cat']][] = array( 
    'LineID' => $row['lineID'], 
    'Qty' => $row['qty'], 
    'SetCost' => $row['Setcost'], 
    'MonCost' => $row['Moncost'], 
    'Postcode' => $row['postcode'] 
    ); 
}; 
//print_r($combinedResults); 
print_r($combinedResults['Apps'][0]['Qty']); 

おかげ

+0

あなたが@Dereleases(そしてupvoted)の答えをあなたの手助けをしてくれたらそれを受け入れる方がいいでしょう。それはちょっと受諾回答のポイントです。 – Kev

0

は)

3
$array = array(); 
while ($row = mysql_fetch_assoc($query_result)) { 
    $array[$row['Cat']][$row['LineID']] = array(
     'Qty' => $row['Qty'], 
     'DealID' => $row['DealID'], 
     'Cost' => $row['Cost'] 
    ); 
} 

これはあなたの配列に目を通すと、あなたが説明した構造の配列を作成します。ちょうどQtyではなく、上記の2つのインデックスの下で残りのフィールドをすべて利用できると思うことに注意してください。別の解決策、より速いが、メモリの方が大きいが、されているでしょう:

$array[$row['Cat']][$row['LineID']] = $row; 

これはちょうど使用されたCatLineID値を含め、そこにすべての値を入れているだろう。

+0

@Dereleased - あなたは返信用のおかげで - あなたが与えると値をreurnする方法の例でしたが - LineIDの費用を言います1 - 私はprint_rなどを試しましたが、うまくいかない!!!! Taの – Bifterss

+0

私はちょうどあなたのテーブルに応じて、キーとして使用する特定の値の組み合わせは、非ユニークで、これはすべての値が含まれているが、代わりにそれぞれのユニークな組み合わせのための最後の値がないことを実感しました。例えば、あなたが提供したテーブルでは、ID 5はID 1を上書きします。あなたのデータをあまり知らないので、おそらく$ array [$ row ['Cat']] [$行[「LineID」]] [$行[「ID」]] =配列( ' – Dereleased

+0

@Dereleases - おかげで再び - 唯一のショッピングカートのスタイルのソリューションが動作するだろうと考えることができる - が異なるcompletyが、これを行うには良い方法です - どんな考え? – Bifterss