<?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.