Srylius adlı üyeden alıntı: mesajı görüntüle
<?php
if ($_POST) {
    $name     = post('name');
    $phone    = post('phone');
    $note     = post('note');
    $address  = post('address');
    $payment  = post('payment');
    $code     = uniqid();

    if (!$name || !$phone || !$address || !$payment) {
        echo 'empty';
    } else {
        try {
            $db->beginTransaction();

            $carttotal = $db->prepare("SELECT SUM(toplamfiyat) as toplam FROM sepet WHERE sepetbayi=:b");
            $carttotal->execute([':b' => $bcode]);
            $carttotalrow = $carttotal->fetch(PDO::FETCH_OBJ);

            $kargolim = $db->prepare("SELECT sitekargo FROM ayarlar");
            $kargolim->execute();
            $kargorow = $kargolim->fetch(PDO::FETCH_OBJ);
            $kargolimit = $kargorow->sitekargo;

            $carttotalkg = $db->prepare("SELECT SUM(toplamkg) as toplamkg FROM sepet WHERE sepetbayi=:b");
            $carttotalkg->execute([':b' => $bcode]);
            $carttotalkgrow = $carttotalkg->fetch(PDO::FETCH_OBJ);
            $carttopkg = $carttotalkgrow->toplamkg;

            $kargo1 = $db->query("SELECT MAX(kargokg) as max_kargokg FROM kargo WHERE kargokg<='{$carttopkg}'")->fetch(PDO::FETCH_OBJ);
            $kargo2 = $kargo1->max_kargokg;

            $kargoTL = $db->prepare("SELECT kargofiyat FROM kargo WHERE kargokg=:kargo2");
            $kargoTL->execute([':kargo2' => $kargo2]);
            $kargorow = $kargoTL->fetch(PDO::FETCH_OBJ);
            $kargotopTL = isset($kargorow->kargofiyat) ? $kargorow->kargofiyat : 0;

            $kargoP = ($carttotalrow->toplam >= $kargolimit) ? 0 : $kargotopTL;

            $result = $db->prepare("INSERT INTO siparisler SET
                siparisbayi     =:b,
                siparisisim     =:i,
                siparistel      =:t,
                siparistarih    =:ta,
                siparissaat     =:sa,
                siparisnot      =:note,
                siparistutar    =:sip,
                sipariskg       =:skg,
                sipariskgtl     =:stl,
                siparisodeme    =:od,
                sipariskodu     =:code,
                siparisadres    =:ad
            ");

            $result->execute([
                ':b'    => $bcode,
                ':i'    => $name,
                ':t'    => $phone,
                ':ta'   => date('Y-m-d'),
                ':sa'   => date('H:i'),
                ':note' => $note,
                ':sip'  => $carttotalrow->toplam + $kargoP,
                ':skg'  => $carttopkg,
                ':stl'  => $kargoP,
                ':od'   => $payment,
                ':code' => $code,
                ':ad'   => $address
            ]);

            if ($result->rowCount()) {
                $cart = $db->prepare("SELECT * FROM sepet INNER JOIN urunler ON urunler.urunkodu = sepet.sepeturun WHERE sepetbayi=:b");
                $cart->execute([':b' => $bcode]);

                if ($cart->rowCount()) {
                    foreach ($cart as $ca) {
                        $orderproducts = $db->prepare("INSERT INTO siparis_urunler SET
                            sipkodu    =:s,
                            sipurun    =:u,
                            sipbirim   =:b,
                            sipadet    =:a,
                            siptoplam  =:t,
                            sipkg      =:k,
                            siptoplamkg=:tk,
                            sipurunadi =:ua
                        ");

                        $orderproducts->execute([
                            ':s'   => $code,
                            ':u'   => $ca['sepeturun'],
                            ':b'   => $ca['birimfiyat'],
                            ':a'   => $ca['sepetadet'],
                            ':t'   => $ca['toplamfiyat'],
                            ':k'   => $ca['birimkg'],
                            ':tk'  => $ca['toplamkg'],
                            ':ua'  => $ca['urunbaslik']
                        ]);
                    }
                }

                $deletecart = $db->prepare("DELETE FROM sepet WHERE sepetbayi=:b");
                $deletecart->execute([':b' => $bcode]);

                echo 'ok';
            } else {
                throw new Exception('Order insertion failed');
            }

            $db->commit();
        } catch (Exception $e) {
            $db->rollBack();
            error_log("Transaction failed: " . $e->getMessage());
            echo 'error';
        }
    }
}
?>
Şu hali ile bazı mantıksal ve operatör hataları, hesaplama sorunları düzeltilmiş ve istediğiniz sonucu verir hale gelmiş olması gerekiyor.
Sayın Srylius yardımınız için çok teşekkür ederim, php de yeniyim öğrenmeye çalışıyorum, düzgün olarak çalışıyor saygılarımla.