• 28-04-2023, 09:52:03
    #1
    Veritabanım da virgüllü rakamlar olduğundan sağlıklı bir toplama yapmıyor 74,00 , 1.445,00 gibi rakamlar mevcut

    $totalHarcama = $db->query("SELECT SUM(Harcama_Tutar) AS total FROM Harcamalar")->fetch()["total"] ?? 0;
    $totalDGHarcama = $db->query("SELECT SUM(DG_Tutar) AS total FROM DG_Harcamasi")->fetch()["total"] ?? 0;
    $totalHarcama = str_replace(",", "", $totalHarcama);
    $totalDGHarcama = str_replace(",", "", $totalDGHarcama);
    $total = number_format($totalHarcama + $totalDGHarcama, 2);
    echo ($total) . "₺";
    Veritabanım şu şekilde ;

    Harcamalar ;
    1.445,00
  • 28-04-2023, 09:55:17
    #2
    str_replace() işleminin gereksiz olduğunu, number_format() işlevi toplamı biçimlendirmek için kullanılabildiğini ancak "₺" sembolü eklemek için ayrı bir işlem yapmamızın gerektiğini söylüyor chat gpt3.

    Verdiği komut ise şu şekilde;

    $totalHarcama = $db->query("SELECT SUM(Harcama_Tutar) AS total FROM Harcamalar")->fetch()["total"] ?? 0;
    $totalDGHarcama = $db->query("SELECT SUM(DG_Tutar) AS total FROM DG_Harcamasi")->fetch()["total"] ?? 0;
    $total = number_format($totalHarcama + $totalDGHarcama, 2);
    echo $total . " ₺";
  • 28-04-2023, 09:57:35
    #3
    sedatekin adlı üyeden alıntı: mesajı görüntüle
    str_replace() işleminin gereksiz olduğunu, number_format() işlevi toplamı biçimlendirmek için kullanılabildiğini ancak "₺" sembolü eklemek için ayrı bir işlem yapmamızın gerektiğini söylüyor chat gpt3.

    Verdiği komut ise şu şekilde;

    $totalHarcama = $db->query("SELECT SUM(Harcama_Tutar) AS total FROM Harcamalar")->fetch()["total"] ?? 0;
    $totalDGHarcama = $db->query("SELECT SUM(DG_Tutar) AS total FROM DG_Harcamasi")->fetch()["total"] ?? 0;
    $total = number_format($totalHarcama + $totalDGHarcama, 2);
    echo $total . " ₺";
    zaten kodum ilk başta öyleydi aynı sonucu veriyor "," silmesi için eklemeler yaptım ama düzelmedi
  • 28-04-2023, 10:29:30
    #4
    $totalHarcama = $db->query("SELECT SUM(Harcama_Tutar) AS total FROM Harcamalar")->fetch()["total"] ?? 0;
    $totalDGHarcama = $db->query("SELECT SUM(DG_Tutar) AS total FROM DG_Harcamasi")->fetch()["total"] ?? 0;
    $totalHarcama = str_replace(".", "", $totalHarcama);
    $totalHarcama = str_replace(",", ".", $totalHarcama);
    $totalHarcama  =floatval($totalHarcama);
    $totalDGHarcama = str_replace(".", "", $totalDGHarcama);
    $totalDGHarcama = str_replace(",", ".", $totalDGHarcama);
    $totalDGHarcama =floatval($totalDGHarcama);
    $total = number_format($totalHarcama + $totalDGHarcama, 2);
    echo ($total) . " ₺";
  • 28-04-2023, 10:37:11
    #5
    lancelot adlı üyeden alıntı: mesajı görüntüle
    $totalHarcama = $db->query("SELECT SUM(Harcama_Tutar) AS total FROM Harcamalar")->fetch()["total"] ?? 0;
    $totalDGHarcama = $db->query("SELECT SUM(DG_Tutar) AS total FROM DG_Harcamasi")->fetch()["total"] ?? 0;
    $totalHarcama = str_replace(".", "", $totalHarcama);
    $totalHarcama = str_replace(",", ".", $totalHarcama);
    $totalHarcama  =floatval($totalHarcama);
    $totalDGHarcama = str_replace(".", "", $totalDGHarcama);
    $totalDGHarcama = str_replace(",", ".", $totalDGHarcama);
    $totalDGHarcama =floatval($totalDGHarcama);
    $total = number_format($totalHarcama + $totalDGHarcama, 2);
    echo ($total) . " ₺";
    malesef çok farklı sonuçlar veriyor
  • 28-04-2023, 13:13:03
    #6
    $totalHarcama =  (float) str_replace(',', '.', str_replace('.', '', $totalHarcama));
    $totalDGHarcama = (float) str_replace(',', '.', str_replace('.', '', $totalDGHarcama));
    
    
    $total = $totalHarcama + $totalDGHarcama;
    echo number_format($total, 2, ',', '.'). ' ₺';
    Bu işini görür sanırım.
  • 28-04-2023, 13:19:02
    #7
    salihbey24 adlı üyeden alıntı: mesajı görüntüle
    $totalHarcama =  (float) str_replace(',', '.', str_replace('.', '', $totalHarcama));
    $totalDGHarcama = (float) str_replace(',', '.', str_replace('.', '', $totalDGHarcama));
    
    
    $total = $totalHarcama + $totalDGHarcama;
    echo number_format($total, 2, ',', '.'). ' ₺';
    Bu işini görür sanırım.
    hiç göstermiyor
  • 28-04-2023, 14:47:53
    #8
    mysql query den sonraki str_replace ile bu iş olmaz çünkü toplamayı mysql de yaptırıp çıkan sonuça replace yapıyorsunuz.
    toplamadan önce replace yapılması gerekir.

    SUM(DG_Tutar) için
    SUM( CAST( REPLACE( REPLACE(DG_Tutar, '.', ''), ',', '.' ) AS DECIMAL(10,2) ) )
    ve
    SUM(Harcama_Tutar) için
    SUM( CAST( REPLACE( REPLACE(Harcama_Tutar , '.', ''), ',', '.' ) AS DECIMAL(10,2) ) )
    olarak değiştirince doğru toplamı mühtemelen verecektir.

    bunun dışında en doğru çözüm: o değerleri içeren sutunları olması gerektiği format ile yeni bir sutuna taşıyıp daha sonra bu matematiksel işlemleri yaptırmak,
    sutun data type olarak double 10,2 veya decimal 10,2 yapabilirsiniz. buradaki 10 . (nokta) dan önceki rakam sayısı, 2 ise . (nokta) dan sonraki rakam sayısıdır.

    + ek olarak da yine önce yüzde rakamları 74.152,25 gibi göstermek istiyorsanız da number_format fonksiyonuna göz atabilirsiniz.
  • 19-05-2023, 17:47:44
    #9
    $totalHarcama = $db->query("SELECT SUM(Harcama_Tutar) AS total FROM Harcamalar")->fetchColumn() ?? 0;
    $totalDGHarcama = $db->query("SELECT SUM(DG_Tutar) AS total FROM DG_Harcamasi")->fetchColumn() ?? 0;
    
    $total = number_format(($totalHarcama + $totalDGHarcama), 2, ",", ".");
    
    
    echo $total . "₺";
    Bu değişiklikler şunları içerir:
    1. fetchColumn() fonksiyonu kullanılarak tek bir sütun değeri alınır. Bu, kodun daha hızlı çalışmasına ve daha az bellek kullanımına yol açar.
    2. $totalHarcama ve $totalDGHarcama değişkenleri virgülden arındırılır (str_replace() yerine number_format() kullanarak).
    3. $total değişkeni number_format() kullanılarak biçimlendirilir ve son olarak ekrana yazdırılır.