• 21-03-2021, 19:42:10
    #1
    Merhaba,

    Konu başlığı çok açık olmayabilir.
    E-ticaret sitemde 2 türlü fiyat var. Biri standart, diğeri kampanyalı fiyat.

    <span style="font-size:16px"><strong><span style="color:#8e0000">EFT/Havale İndirimli Tutar:</span> <?php
    
    $a=(int)$price;
    $b=10;
    
    $c=(int)$a*$b/100;
    $d=(int)$price-$c;
    
    
    echo number_format($d, 2, ',', '.')
    
    ?> TL</strong></span>
    Bu şekilde fiyatın %5'ini ürün sayfasında gösteriyordum.
    Fakat ürüne kampanyalı fiyat girdiğim de, standart fiyat üzerinden hesaplama yapıyor.

    Yukarıdaki kodu EĞER KAMPANYALI FİYAT GİRİLDİYSE, KAMPANYALI FİYAT üzerinden hesapla işlemini nasıl yapabilirim?
    Not: Kampanyalı fiyat değişkeni; $special

    Ayrıca binlik rakamlı fiyatlarda aşağıdaki gibi sorun oluyor. Nasıl düzeltebilirim?

  • 21-03-2021, 20:43:17
    #2
    hesaplamaya soktuğun price değeri number_format'siz vertitabanından gelem ham hali olmalı. diğer kısım ise:

    <?php
     
    $a = $price; // number_format uygulanmamis standart fiyat
    $b = 10; // indirim yuzdesi, 0 girersen indirim olmaz
     
    $c = $a*$b/100;
    $d = $price-$c;
    
    if ($c>0) { // idinrim tutari sifirdan buyukse
        ?>
        <span style="font-size:16px">
        <strong>
        <span style="color:#8e0000">EFT/Havale İndirimli Tutar:</span>
        <?php echo number_format($d, 2, ',', '.');?>
        </strong> TL</span>
        <?php 
        }
    ?>
  • 21-03-2021, 20:57:24
    #3
    per adlı üyeden alıntı: mesajı görüntüle
    hesaplamaya soktuğun price değeri number_format'siz vertitabanından gelem ham hali olmalı. diğer kısım ise:

    <?php
     
    $a = $price; // number_format uygulanmamis standart fiyat
    $b = 10; // indirim yuzdesi, 0 girersen indirim olmaz
     
    $c = $a*$b/100;
    $d = $price-$c;
    
    if ($c>0) { // idinrim tutari sifirdan buyukse
        ?>
        <span style="font-size:16px">
        <strong>
        <span style="color:#8e0000">EFT/Havale İndirimli Tutar:</span>
        <?php echo number_format($d, 2, ',', '.');?>
        </strong> TL</span>
        <?php
        }
    ?>
    Cevabınız için teşekkürler.
    Fakat şöyle izah etmem gerekirse; $price değişkeninde her zaman veri var. $special değişkeninde veri varsa; $special verisinin indirimli halini hesaplamalı.


    Şuanki sizin kod parçacığında bu şekilde yansıdı.
  • 21-03-2021, 21:00:53
    #4
    değişkenlerini bilmiyorum, ama mantık olarak aynı. if ($special>0) diye şart koşabilirsin. örnekte demek istediğim aritmetik işlemlere sokuğun değer number_formatsiz ham değer olmalı.
  • 21-03-2021, 22:34:36
    #5
    per adlı üyeden alıntı: mesajı görüntüle
    değişkenlerini bilmiyorum, ama mantık olarak aynı. if ($special>0) diye şart koşabilirsin. örnekte demek istediğim aritmetik işlemlere sokuğun değer number_formatsiz ham değer olmalı.
    Önerinizi denedim fakat olmadı maalesef.

    Şöyle bir kod parçasıyla, kampanyalı fiyatı dahil edebildim. Şuan tek sorun; 1000 TL üzeri olan ürünlerde Havale indirimini


    Bu şekilde gösteriyor.

    number_format kullanmamda ki amaç; opencart şöyle bir hata veriyor.
    Notice: A non well formed numeric value encountered in
  • 21-03-2021, 23:01:44
    #6
    sorununuzu doğru ifade edemediğiniz için net çözüm bulamıyoruz. paylaştığınız küçük bir kodu referans alarak benim size önerdiğim ise aritmetik işlemlerde kullanacağın değer formatsız değer olmalı. yoksa ilk mesajda yaşadığınız binlik ve ondalık sorunu olur. sadece ekranda göstermeden önce number_formata koymalısın. örnek olarak if şeklini de yazdım. birebir kopyalamanız gerekmiyor. size yöntemi tarif ediyorum. eğer ki değişken ise $special ise if ($special>0) { ... } dediğinize küme parantezi içindekiler special değeri 0dan büyük olduğunda çalışır. daha geniş kod aralığı ya da sayfayı özelden paylaşabilirseniz size nokta atışı çözümü söyleyebilirim.