Mysql ve ajax kullanarak FLOT ile çiziliyor

2 Cevap php

Ben MySQL db çektiği bazı verileri çizmek için FLOT kullanmaya çalışıyorum. Kullanıcıların Ziyaret giriş oturum ve ben, belirli bir ay için getStats ($ günlük) günde ziyaretlerin sayısını retreive bir SQL işlevi var. Ben doğru bu nasıl çevrimiçi bazı örnekler okudum ama ben denemek ve benim javascript dosyasında grafik dizi veri nedense 'o kadar boş geliyor ->' veri '. Aşağıda benim kodudur. Çünkü benim kod büyük olasılıkla hakkında bazı sorular varsa ben CI framework kullanıyorum. Ben veri kodlanmış ve iyi çalışıyor. Bu konuda herhangi bir yardım şu anda orada veritabanları ile FLOT kullanma hakkında pek bir şey yok duyacağız.

Model ---> metrics.php

function showUsers() {

    //get the number of days in the current month and the first day
    $num_days = cal_days_in_month(CAL_GREGORIAN, date(m), date(Y));
    $first_day = strtotime(date('Y').'-'.date('m').'-01');

    //iterate through all of the days
    while( $i < $num_days ) {

         //get the user visits for each day of the month
         $log = $this->db->getStats($first_day);

         //add +1 day to the current day
         $first_day += 86400;
         $flot_visits[] = '['.($first_day*1000).','.$log->fields['total'].']';
         $i++;
    }

    //format in acceptable format for flot
    $content['visits'] = '['.implode(',',$flot_visits).']';

    //load the view and pass the array
    $this->load->vars($content);
    $this->load->view('metrics/user_metrics', $content);
}

Gör ---> user_metrics.php

 <div id ="visits_graph" style="width:600px; height:300px"></div>

Javascript ---> user_metrics.js

function metrics() {

   $.ajax({
            type: "POST",
            url: pathurl + "metrics/showUsers",
            data: "",
            success: function(data) {
                   graph_visits();
            }
         });
}

function graph_visits() {

     $.plot($('#visits_graph'), [
         { label: 'Visits', data: <?php echo $visits ?> }
         ], {
               xaxis: {
                         mode: "time",
                         timeformat: "%m/%d/%y"
                      },
               lines: { show: true },
               points: { show: true },
               grid: { backgroundColor: #fffaff' }
         });
}

2 Cevap

Ben senin sorunun ölçümler işlevi içinde olduğunu düşünüyorum. (Ayrıca ben size JQuery kullanarak tahmin ediyorum)

Şu anda Metriklerinizin fonksiyonu uç bir sayfa istediğinde ama onunla hiçbir şey yok.

  1. backend yöntemi showUsers () gibi bir şey değiştirmek:

    function showUsers() {
        //get the number of days in the current month and the first day
        $num_days = cal_days_in_month(CAL_GREGORIAN, date(m), date(Y));
        $first_day = strtotime(date('Y').'-'.date('m').'-01');

        //iterate through all of the days
        while( $i db->getStats($first_day);

         //add +1 day to the current day
         $first_day += 86400;

         //change this to be a nested array
         $flot_visits[] = array( ($first_day*1000) , $log->fields['total'] );
         $i++;
    }

        //output javascript array
        echo json_encode( $flot_visits );
    }

  1. gibi bir şey olmak için user_metrics.js değiştirin:

    function metrics() {    
       $.getJSON({
                pathurl + "metrics/showUsers",
            function(data) {
                       //use the returned data
                       graph_visits(data);
                }
             });
    }


    function graph_visits( graphData ) {
         $.plot($('#visits_graph'), [
             { label: 'Visits', data: graphData }
             ], {
                   xaxis: {
                             mode: "time",
                             timeformat: "%m/%d/%y"
                          },
                   lines: { show: true },
                   points: { show: true },
                   grid: { backgroundColor: #fffaff' }
             });
    }

Ben bunu istiyorum şekilde çalışmak değil, var. Ben herkesten bu konuda çalışıyorsa en azından işe alabilirsiniz yüzden cevap sonrası düşündüm.

Javascript dosyası ve gerçek görünüm (html) dosya nedeniyle dizi javacscript dosyasında görünmez çerçeve ayrılır çünkü Yani nedense ve ben varsayarak yaşıyorum. Sorun işlev içinde yatıyor

function graph_visits() {

 $.plot($('#visits_graph'), [
     { label: 'Visits', data: <?php echo $visits ?> }
     ], {
           xaxis: {
                     mode: "time",
                     timeformat: "%m/%d/%y"
                  },
           lines: { show: true },
           points: { show: true },
           grid: { backgroundColor: #fffaff' }
     });
}

bunlar ayrı olduğu için

          <?php echo $visits ?>

hiçbir şey döndürür. Bunu sabit yolu sadece görünümüne gidin ve sadece kopyalayıp html dosyasının üstündeki iki etiketleri arasında fonksiyonunun içeriği geçmiş oldu. Bu gibi görünmelidir,

<script language="javascript">


   $.plot($('#visits_graph'), [
     { label: 'Visits', data: <?php echo $visits ?> }
     ], {
           xaxis: {
                     mode: "time",
                     timeformat: "%m/%d/%y"
                  },
           lines: { show: true },
           points: { show: true },
           grid: { backgroundColor: #fffaff' }
     });

</script>

Uzak çerçeveden ama şimdiye kadar tek çözüm ben gelmek mümkün olmuştur kırma, çünkü ben gerçekten bu çözüm sevmiyorum.