• 15-03-2023, 18:50:06
    #1
    Merhabalar
    bir proje yazmaktayım
    ve son aşamasındayım
    ilk defa chart kullanıyorum
    sakin sakin anlatırsanız bende anlayabilirim arkadaşlar anlayışınız için şimdiden teşekkür ederim
    Gelelim sorunuma

    Gördügünüz üzere Normalde sorunsuz görünen bu Grafik aslında sorunlu
    nedeni aşagıdaki resimde

    görüldügü üzere
    verilerimin tarih leri bu şekilde
    benim Controller kodum
    $data['labels'] = [
        __('Ocak'),
        __('Şubat'),
        __('Mart'),
        __('Nisan'),
        __('Mayıs'),
        __('Haziran'),
        __('Temmuz'),
        __('Ağustos'),
        __('Eylül'),
        __('Ekim'),
        __('Kasım'),
        __('Aralık')
    ];
    $year = date('Y');
    $tarih_baslangic = '01/01/'. $year;
    $tarih_bitis = '12/31/'. $year;
    $t1 = date('mm/d/Y', strtotime($tarih_baslangic));
    $t2 = date('mm/d/Y', strtotime($tarih_bitis));
    
    
    $data['urunSatis'] = Urun::select('name',
        DB::raw('YEAR(tank_cikis_hareket.tarih) as yil'),
        DB::raw('MONTH(tank_cikis_hareket.tarih) as ay'),
        DB::raw('SUM(tank_cikis_hareket.miktar) as miktar'),
        DB::raw('MAX(urun.birim) as birim'),
        DB::raw('SUM(tank_cikis_hareket.urun_toplam_tutar) as toplam_tutar'))
        ->join('tank_cikis_hareket', 'urun.id', '=', 'tank_cikis_hareket.urun_id')
        ->whereBetween('tank_cikis_hareket.tarih', [$t1,$t2])
        ->groupBy('name', 'birim', DB::raw('YEAR(tank_cikis_hareket.tarih)'), DB::raw('MONTH(tank_cikis_hareket.tarih)'))
    ->get();
    Aşagıdaki kod ise blade dosyamın kodu
    <div class="col-md-12">
        @php
            $data = [];
            $labels = array_values($labels);
    
            $data = [];
            foreach($urunSatis as $result) {
                if ($result->birim == 0) {
                    $result->birim = 'Litre';
                } else if ($result->birim == 1) {
                    $result->birim = 'Adet';
                } else {
                    $result->birim = '-';
                }
                $name = $result->name . ' (' . $result->birim . ') ';
                $month = $result->ay;
                $amount = $result->miktar;
    
                if ($month > 0 )
                if(!isset($data[$name])) {
                    $data[$name] = array_fill(1, 12, null);
                    $data[$name] = $labels;
                }
                $data[$name][$month] = $amount;
            }
    
            $datasets = [];
            foreach($data as $name => $values) {
                $datasets[] = [
                    'label' => $name,
                    'data' => array_values($data[$name]),
                    'backgroundColor' => '#' . substr(md5(rand()), 0, 6) // Rastgele bir renk ata
                ];
            }
    
            $chartData = [
                'labels' => array_values($labels),
                'datasets' => $datasets
            ];
        @endphp
        <p class="text-center font-weight-bold">
            {{ __(':start_month-:end_month', ['start_month' => __('Ocak'), 'end_month' => __('Aralık')]) }}
            {{ __('Ürün Satış Miktar Tablosu') }}
            {{ date('Y') }}
        </p>
        <div class="chart">
            <canvas id="myChart" width="600" height="auto"></canvas>
            <script>
                var ctx = document.getElementById('myChart').getContext('2d');
                var myChart = new Chart(ctx, {
    type: 'bar',
                    data: @json($chartData),
                    options: {
    scales: {
    xAxes: [{
    ticks: {
    callback: function(value, index, values) {
    return labels[value - 1];
                                    }
    }
    }]
    }
    }
    });
            </script>
        </div>
    </div>
    arkadaşlar ne yaptıysam bu mereti ocak ayından çıkaramadım
    daha önce varsa böyle bir sorun ile karşılaşan ve çözen lütfen yardımcı olursa çok sevinirim.
  • 15-03-2023, 18:57:14
    #2
    Hocam göz ucuyla baktım. Aşağıda ki tarih formatı yanlış olabilir mi?

    $tarih_bitis = '12/31/'. $year;
    yerine

    $tarih_bitis = '31/12/'. $year;
  • 15-03-2023, 18:59:19
    #3
    uzmanforum adlı üyeden alıntı: mesajı görüntüle
    Hocam göz ucuyla baktım. Aşağıda ki tarih formatı yanlış olabilir mi?

    $tarih_bitis = '12/31/'. $year;
    yerine

    $tarih_bitis = '31/12/'. $year;
    Hocam aslında ben tarihi
    m/d/Y olarak tutuyorum db de
    Ay/Gün/Yıl Şeklinde yani
    Gün/Ay/Yıl şeklinde degil
  • 15-03-2023, 19:27:01
    #4
    Hocam whereBetween() metoduna verdiğiniz parametrelerin doğru çalışıp çalışmadığını araştırdınız mı?

    Örnek kullanım:
    https://stackoverflow.com/questions/...l-and-eloquent

    Aşağıda ki kodu $data['urunSatis'] bu değişkenin tanımlandığı satırın altına yazıp çıktı atabilir misiniz?
    dd($data['urunSatis'])
    Ayrıca chart için initialization ayarlarının düzgün yapıldığından emin misiniz?
  • 15-03-2023, 19:35:14
    #5
    hocam komple kontrol ettim sadece ay gün yerleri degişik
    bazıların da aynı ben bir çözüm bulamadım açıkçası
  • 15-03-2023, 19:40:16
    #6
    Hocam şunu yeni gördüm

    $data[$name][$month] = $amount;
    bunu düzeltirseniz sorunu çözmüş olacaksınız sanırsam
  • 15-03-2023, 19:40:16
    #7
    return $data['urunSatis'];
    [{"name": "İnek Sütü","yil": null,"ay": null,"miktar": "14.00","birim": 0,"toplam_tutar": "60.00"},{"name": "Koyun Sütü","yil": null,"ay": null,"miktar": "10.00","birim": 0,"toplam_tutar": "50.00"},{"name": "Yumurta","yil": null,"ay": null,"miktar": "10.00","birim": 1,"toplam_tutar": "50.00"}]
    çıktı örnegi

    egerki blade dosyamda
    canvas altındaki scriptin altına
    yani grafigin altına aşagıdaki kodu atarsam
    <strong>
    {{json_encode($chartData)}}
    </strong>
    aldıgım çıktı
    [B]{"labels":["Ocak","\u015eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011fustos","Eyl\u00fcl","Ekim","Kas\u0131m","Aral\u0131k"],"datasets":[{"label":"\u0130nek S\u00fct\u00fc (Litre) ","data":["14.00"],"backgroundColor":"#1cea38"},{"label":"Koyun S\u00fct\u00fc (Litre) ","data":["10.00"],"backgroundColor":"#c37ad8"},{"label":"Yumurta (Adet) ","data":["10.00"],"backgroundColor":"#1dbdc4"}]}[/B]
  • 15-03-2023, 19:43:45
    #8
    uzmanforum adlı üyeden alıntı: mesajı görüntüle
    Hocam şunu yeni gördüm

    $data[$name][$month] = $amount;
    bunu düzeltirseniz sorunu çözmüş olacaksınız sanırsam
    onu nasıl düzeltecegim hocam ?
  • 15-03-2023, 19:46:25
    #9
    turkmvc adlı üyeden alıntı: mesajı görüntüle
    onu nasıl düzeltecegim hocam ?
    Onu yanlış gördüm hocam Doğru yazmışsınız.