v2.5.2
Giriş yap

gelen idlere eşdeğerleri Toplama

acemi
298 defa görüntülendi

sepet tablosunda

iduyeIDhizmetID
12001,2
22003,4
32011,2,3,4

paket tablosu

idadifiyat
1paket 1200
2paket 1100
3paket 1500
4paket 1450
    $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ü.

abdullahx
721 gün önce

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