Azonos szűrés foreach-al?

Sziasztok!

Cat_ID = kategóriába tartozik

Adatbázis:
TermékID---NÉV-------Cat_ID--------ÁR(Ft)
---1------Termék1------11-----------44
---2------Termék2------23-----------33
---3------Termék3------11-----------55
---4------Termék4------77-----------75
---5------Termék5------11-----------80
stb...

Adott egy foreach ami ezt eredményezi:
1.termék Cat_ID-je: 11
2.termék Cat_ID-je: 23
3.termék Cat_ID-je: 11
4.termék Cat_ID-je: 77
5.termék Cat_ID-je: 11
és így tovább amíg van az adatbázisban sor.

Hogyan tudom szűrni azt hogy azonosok vannak-e? Tehát azt akarom hogy az összes azonos Cat_ID-s termék árát tegye egy változóba. vagy adja össze az azonosokat ha van.

Hozzászólások

A lekérdezést tudod módosítani? Mert akkor GROUP BY, DISTINCT, SUM.

Az hozzá tartozik hogy nem lekérdezésről van szó...tehát sajnos nem

egy egy webshop kosara, de abban az azonos kategóriákból a kosárba tett tételek árát össze akarom adni és ellenőrizni.

tehát eleve egy tömbből dolgozik a foreach

SELECT Cat_ID, SUM(ár) FROM tábla GROUP BY Cat_ID

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

Az is jó ha egy új foreach-el újra lekérem az adatokat és ott hasonlítom össze..

Egy tömb, kezdetben üres. Pakolod bele a termékeket, index az id. Ha már létezik az id, akkor összeadod azárukat, vagy amit akarsz. Akár egy altömbben eltárolhatod egyenként is, és utána könnyen kiíratod catid szerint.

Valahogy így:

$cat = array();
while ($row = mysql_fetch_assoc($res)) {
$cat[$row['cat_id']] += $row['ar'];

}
print_r($cat);

ez miért nem jó?

ha kell a darabszám/mennyiség is, azt az ár hozzáadásával párhuzamosan tudod növelni.

csak akkor nem while lekérdezés, hanem foreach($cat as &$value)

és utána a $value-kat tudod nézegetni (explode?)

(és igen, tényleg nincs jobb dolgom, mint itt lenni :) )

Ez a kiindulás:

Shop Object (
[type_cart] => cart
[products] => Array (
[0] => Array (
[quantity] => 1
[product_id] => 31
[category_id] => 3
[price] => 600
[description] => Leiras1
[product_name] => termeknev1
[ean] => [attributes] => a:1:{i:1;i:3;}
[attributes_value] => Array (
[0] => stdClass Object (
[attr] => mennyiseg
[value] => 200g
) )
)
[1] => Array (
[quantity] => 1
[product_id] => 33
[category_id] => 3
[price] => 600

[description] => Leiras2
[product_name] => termeknev2
[ean] => [attributes] => a:1:{i:1;i:3;}
[attributes_value] => Array (
[0] => stdClass Object (
[attr] => mennyiseg
[value] => 200g
) )
)
[2] => Array (
[quantity] => 1
[product_id] => 35
[category_id] => 4
[price] => 1500

[description] =>
[product_name] => termeknev3
[ean] => [attributes] => a:1:{i:1;i:1;}
[attributes_value] => Array (
[0] => stdClass Object (
[attr] => mennyiseg
[value] => 0,5 kg
) )
) )
[count_product] => 3
[price_product] => 2700
[summ] => 0
[rabatt_id] => 0
[rabatt_value] => 0
[rabatt_type] => 0
[rabatt_summ] => 0
[price_product_brutto] => 2700
[allj] => 1
)