gelen idlere eşdeğerleri Toplama
sepet tablosunda
id | uyeID | hizmetID |
---|---|---|
1 | 200 | 1,2 |
2 | 200 | 3,4 |
3 | 201 | 1,2,3,4 |
paket tablosu
id | adi | fiyat |
---|---|---|
1 | paket 1 | 200 |
2 | paket 1 | 100 |
3 | paket 1 | 500 |
4 | paket 1 | 450 |
$data = "";
$kdv = "";
$Guncel = db->prepare("SELECT * FROM sepet WHERE userID=?");
$Guncel->execute([$Ses->session("ID"))]); // 200 diye farz edelim.
foreach($Guncel->fetchAll(2) as $row):
$cc = 0;
$dd = $db->query("SELECT SUM(fiyat) as totalsa FROM ekhizmet WHERE id IN (".$row["hizmetID"].")")->fetchALL(2);
$data .= $cc += $dd[0]["totalsa"]; // 300 950
$kdv .= ($cc * ORAN) /100;
endforeach;
$sayfa = array(
"data" => $data,
"kdv" => $kdv
);
json_encode($sayfa);
sepetteki hizmetID ile eşleşen kayıtların toplamını bir türlü malamıyorum
1 tane içerik varken 1 tane topluyor sorun yok
fakat 2. içeriği eklediğimde ayrı ayrı toplama yapıyor
sonuc 300 950 değil 1250 olarak almak istiyorum yapamadım bir türlü.
Valla hiç hoşuma gitmese de bu sonuca ulaştırıyor. Daha kısasının olabileceğini düşündüğüm kodları uzun yazınca rahatsız oluyorum biraz :)
$query = $db->query("SELECT hizmetID FROM sepet WHERE uyeID = 200")->fetchAll(7);
$extraString = '';
if (count($query) > 1) {
for ($i = 1; $i < count($query); $i++)
$extraString .= " UNION SELECT SUM(fiyat) FROM ekhizmet WHERE id IN ({$query[$i]})";
}
$getTotal = $db->query("SELECT SUM(fiyat) FROM ekhizmet WHERE id IN ({$query[0]}) $extraString")->fetchAll(7);
$total = array_sum($getTotal); // 1200