ChatGBT cevabı
Öncelikle, kodunuzda bazı hataları düzeltmeli ve toplama işlemindeki mantık hatasını gidermelisiniz. İşte düzenlenmiş kod:
function sepeteEkle($urun_item, $siparis_adet) {
// Ürün ID'sini POST verisinden al
$product_id = $_POST["product_id"];
// Alışveriş sepeti SESSION içinde var mı kontrol et
if (isset($_SESSION["shoppingCart"])) {
$shoppingCart = $_SESSION["shoppingCart"];
$urunler = $shoppingCart["urunler"];
} else {
$urunler = array();
}
// Ürün adedi kontrolü
// Ürünün zaten eklenip eklenmediğini kontrol et
// Burada ürünleri ürün ID'lerine göre saklamak daha mantıklı olur
$urun_id_key = $urun_item['id']; // Ürün ID'sini anahtar olarak kullan
if (array_key_exists($urun_id_key, $urunler)) {
// Ürün zaten varsa, adedini artır
$urunler[$urun_id_key]['siparis_adet'] += $siparis_adet;
} else {
// Ürün yoksa, yeni olarak ekle
$urunler[$urun_id_key] = $urun_item;
$urunler[$urun_id_key]['siparis_adet'] = $siparis_adet;
}
// Sepetin Hesaplanması
$toplamTutar = 0.0;
$toplamAdet = 0;
foreach ($urunler as $key => $urun) {
$urunler[$key]['toplamTutar'] = $urun['siparis_adet'] * $urun["price"];
$toplamTutar += $urunler[$key]['toplamTutar'];
$toplamAdet += $urun['siparis_adet'];
}
$summary["toplamTutar"] = $toplamTutar;
$summary["toplamAdet"] = $toplamAdet;
// Güncellenmiş ürün listesini SESSION'a kaydet
$_SESSION["shoppingCart"]["urunler"] = $urunler;
$_SESSION["shoppingCart"]["summary"] = $summary;
// Test amaçlı ürün bilgilerini yazdır
print_r($_SESSION);
}
Değişiklikler:
- $toplamTutar hesaplamasını düzelttim. Toplam tutarı toplamak yerine her ürün için ayrı ayrı hesapladım.
- $toplamTutar ve $toplamAdet hesaplamalarını düzelttim.
- print_r($_SESSION); satırını kodun sonunda bıraktım, ancak bu sadece test amaçlıdır ve prodüksiyona geçerken kaldırmanız önerilir.
ChatGBT ye doğru prombtu girerseniz yardımcı olacaktır.
Tavsiyem anydesk adresinizi kaldırmanız yönünde. Saldırı yiyebilirsiniz