Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z wykresem, ZLe pokazuje date
gabcio
post
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 31.08.2006

Ostrzeżenie: (10%)
X----


Cześć,

Mam taki problem jak na zdjęciu zakreślony czerwoną otoczką pokazuje mi jakąś lipę..
Chciałbym, żeby mi pokazywał np: dniami (1,2,3,4,5,6,7) albo (pon, wto itd)
Poniżej pokazuje wam kod..
Gdzie tkwi błąd?

  1. <?php
  2. if(!$_GET['popup']==1)
  3. {
  4. header("Content-type: image/png");
  5. TrafficGraph($_GET['nodeid'],$_GET['bar']);
  6. }
  7.  
  8. ?>
  9. <HTML>
  10. <HEAD>
  11. <script TYPE="text/javascript" LANGUAGE="JavaScript" SRC="img/autoiframe.js"></SCRIPT>
  12. </HEAD>
  13. <BODY>
  14. <TABLE HEIGHT=150 WIDTH=510 VALIGN=TOP HALIGN=RIGHT BORDER=0 id="table">
  15. <TR HEIGHT=150 WIDTH=510 >
  16. <TD HEIGHT=150 WIDTH=510 >
  17. <?
  18. print("<img src=?m=trafficgraph&nodeid=".$_GET['nodeid']."&bar=".$_GET['bar'].">");
  19. ?>
  20. </TD></TR>
  21. </TABLE>
  22. <script TYPE="text/javascript" LANGUAGE="JavaScript">
  23. <!--
  24. parent.document.getElementById('autoiframe').width = document.getElementById('table').offsetWidth;
  25. //-->
  26. </SCRIPT>
  27.  
  28. </BODY>
  29. </HTML>
  30. <?
  31. function TrafficGraph ($nodeid,$quantum)
  32. {
  33.    global    $DB, $LMS;
  34. //brak obsługi przedzialu, std. co przedzial
  35.    $godzina=60*60;
  36.    $dzien=$godzina*24;
  37.    $miesiac=$dzien*30;
  38.    $rok=$miesiac*12;
  39.    $movx=80;
  40.    $movy=25;
  41.    
  42.    $quantum=$godzina*34;
  43.    $currenttime=time();
  44.    $ymax=150;
  45.    $xmax=500;
  46.  
  47.    if($stats = $DB->GetRow('SELECT SUM(download) AS download, SUM(upload) AS upload
  48.                FROM stats WHERE nodeid=? AND dt>?',
  49.                array($nodeid, $currenttime-$quantum)))
  50.    {
  51.        $result['downavg'] = $stats['download']/$quantum;
  52.        $result['upavg'] = $stats['upload']/$quantum;
  53.    }
  54.  
  55.  
  56.    $sql_query="SELECT customers.lastname,customers.name FROM customers LEFT JOIN nodes ON (customers.id = nodes.ownerid) WHERE nodes.id=?";
  57.  
  58.    $user=$DB->GetRow($sql_query,array($nodeid));
  59.    $node=$DB->GetRow('SELECT nodes.name,inet_ntoa(nodes.ipaddr) AS adres FROM nodes WHERE id=?',array($nodeid));
  60.  
  61.    $traffimage=imagecreate($xmax,$ymax);
  62.    imagesetthickness($traffimage,2);
  63.    $background=imagecolorallocate($traffimage,240,240,240);
  64.    $textcolor=imagecolorallocate($traffimage,0,0,0);
  65.    $downloadcolor=imagecolorallocate($traffimage,0,180,0);
  66.    $uploadcolor=imagecolorallocate($traffimage,0,0,255);
  67.    $redcolor=imagecolorallocatealpha($traffimage,255,0,0,70);
  68.    imageline($traffimage,0,0,$xmax,0,$textcolor);
  69.    imageline($traffimage,0,$ymax-1,$xmax,$ymax-1,$textcolor);
  70.    imageline($traffimage,0,0,0,$ymax,$textcolor);
  71.    imageline($traffimage,$xmax-1,0,$xmax-1,$ymax,$textcolor);
  72.    
  73.  
  74.        $trans_maks = $DB->GetRow('SELECT MAX(upload) AS upload,MAX(download) AS download, MAX(dt) as lastdt FROM stats WHERE nodeid=? AND dt>?', array($nodeid, $currenttime-$quantum));        
  75.        $lastcount = $DB->GetRow('SELECT upload, download FROM stats where nodeid=? AND dt=?',array($nodeid,$trans_maks['lastdt']));
  76.        $upl_maks = (int)($trans_maks['upload']/300);
  77.        $dwl_maks = (int)($trans_maks['download']/300);
  78.        if($upl_maks>$dwl_maks)
  79.        $stats_maks=$upl_maks;
  80.        else
  81.        $stats_maks=$dwl_maks;
  82.        $stats_maks=$stats_maks*8;
  83.        $podst=$stats_maks;
  84.            $dana=$stats_maks;
  85.        $nkrotnosc=0;
  86.  
  87.        while ($dana>1)
  88.        {
  89.        $dana=$dana/2;
  90.        $nkrotnosc++;
  91.        }
  92.  
  93.        $stats_maks=pow(2,$nkrotnosc);
  94.        $dziel=$stats_maks/4;
  95.  
  96.        do
  97.        {
  98.        while ($stats_maks-$dziel>$podst)
  99.        {
  100.            $stats_maks=$stats_maks-$dziel;
  101.        }
  102.            $dziel=$dziel/2;
  103.        }
  104.        while ($dziel>1024*1024);
  105.        $stats_maks=$stats_maks/8;
  106.        $posx=0;
  107.        
  108.        $lastfirst=1;
  109.        $sredniadwl=0;
  110.        $sredniaupl=0;
  111.        $sredniadzielnik=0;
  112.        $styleline=array($textcolor,IMG_COLOR_TRANSPARENT,IMG_COLOR_TRANSPARENT);    
  113.        imagesetstyle($traffimage,$styleline);
  114.  
  115.        $sql_query="SELECT AVG(upload) AS upload, AVG(download) AS download, CEIL(dt/?)*? AS dts, COUNT(*) as wierszy FROM stats WHERE nodeid=? AND dt>? GROUP BY CEIL(dt/?) ORDER BY dts ASC";
  116.        
  117.        $stats1=$DB->GetAll($sql_query,array($quantum/400,$quantum/400,$nodeid, $currenttime-$quantum,$quantum/400));
  118.  
  119.        $posx=1;
  120.        reset($stats1);
  121.        if (!($fp = fopen('/tmp/danetest.txt', 'w'))) {
  122.            return;
  123.            }
  124.        fprintf($fp,"%f:%f\n",$podst,$stats_maks);    
  125.        $lastdts=0;
  126.        foreach($stats1 as $statsline)
  127.        {
  128.        $download=$statsline['download']/300;
  129.        $upload=$statsline['upload']/300;
  130.        fprintf($fp,"%f:%f:%d\n",$download,$upload,$dts);        
  131.        $download=($download/$stats_maks);
  132.        $upload=($upload/$stats_maks);
  133.        $download=$download*99;
  134.        $upload=$upload*99;
  135.        $dts=$statsline['dts'];
  136.        if($lastdts==0)
  137.        {
  138.        $lastdts=$dts;
  139.        }
  140.        $zerowanie=1;        
  141.        $n=1;
  142.  
  143.        $currentdts=$lastdts;
  144.        while(($dts-$lastdts)>(($quantum/400)*$n))
  145.        {
  146.        $currentdts=(int)($currentdts+$quantum/400);
  147.        fprintf($fp,"dts %d: last %d: quantum %f: curr %d\n",$dts,$lastdts,($quantum/400)*$n,$currentdts);        
  148.  
  149.        $zerowanie=0;
  150.        $upload=0;
  151.        $download=0;
  152.            imagesetthickness($traffimage,0);
  153.            imageline($traffimage,$movx+$posx,135-25,$movx+$posx,135-25-floor($download),$downloadcolor);
  154.            imageline($traffimage,$movx+$posx-1,135-24-$lastupload,$movx+$posx,135-24-$upload,$uploadcolor);
  155.  
  156.        $timehnow=date("H",$currentdts);
  157.        $timemnow=date("i",$currentdts);
  158.        if($timemnow<="4")
  159.        {
  160.            imageline($traffimage,$movx+$posx,135-25,$movx+$posx,10,IMG_COLOR_STYLED);
  161.            imageline($traffimage,$movx+$posx,135-22,$movx+$posx,135-25,$textcolor);
  162.            if($timehnow=="0")
  163.            imageline($traffimage,$movx+$posx,135-25,$movx+$posx,10,$redcolor);
  164.            if(!(fmod($timehnow,2)))
  165.            imagestring($traffimage,1,$movx+$posx-4,135-20,$timehnow,$textcolor);
  166.        }
  167.        $posx++;        
  168.        $n++;
  169.        }
  170.  
  171.        
  172.  
  173.        if($zerowanie==0)
  174.        {
  175.        $lastupload=0;
  176.        }
  177.            imagesetthickness($traffimage,0);
  178.        imageline($traffimage,$movx+$posx,135-25,$movx+$posx,135-25-floor($download),$downloadcolor);
  179.  
  180.        if ($lastfirst==1)
  181.        {
  182.            $lastfirst=0;
  183.            imagesetpixel($traffimage,$movx+$posx,135-25-$upload,$uploadcolor);
  184.        }
  185.        else
  186.        {
  187.        imageline($traffimage,$movx+$posx-1,135-24-$lastupload,$movx+$posx,135-24-$upload,$uploadcolor);
  188.        }
  189.        $lastupload=$upload;
  190.        $timehnow=date("H",$dts);
  191.        $timemnow=date("i",$dts);
  192.        if($timemnow<="4")
  193.        {
  194.            imageline($traffimage,$movx+$posx,135-25,$movx+$posx,10,IMG_COLOR_STYLED);
  195.            imageline($traffimage,$movx+$posx,135-22,$movx+$posx,135-25,$textcolor);
  196.            if($timehnow=="0")
  197.            imageline($traffimage,$movx+$posx,135-25,$movx+$posx,10,$redcolor);
  198.            if(!(fmod($timehnow,2)))
  199.            imagestring($traffimage,1,$movx+$posx-4,135-20,$timehnow,$textcolor);
  200.        }
  201.  
  202.        $lastdts=$dts;
  203.        $posx++;
  204.        $zerowanie=0;
  205.        
  206.        }
  207.        
  208.  
  209.    imageline($traffimage,$movx,135-24,$movx,10,$textcolor);
  210.    imageline($traffimage,$movx+400,135-24,$movx+400,10,$textcolor);
  211.    imageline($traffimage,$movx-2,135-24,$movx+402,135-24,$textcolor);
  212.    imageline($traffimage,$movx-2,10,$movx+402,10,$textcolor);
  213.    $stats_maks=$stats_maks*8;
  214.    if ($stats_maks/1024>1)
  215.        {
  216.        $przedrostek="kb";
  217.        $stats_maks1=$stats_maks/1024;
  218.        }
  219.    if ($stats_maks/(1024*1024)>1)
  220.        {
  221.        $przedrostek="Mb";
  222.        $stats_maks1=$stats_maks/(1024*1024);
  223.        }
  224.    $n=0;
  225.    for($i=0;$i<=105;$i=$i+(101/4))
  226.    {
  227.    imageline($traffimage,$movx-2,10+$i,$movx+2,10+$i,$textcolor);
  228.    imageline($traffimage,$movx-2+400,10+$i,$movx+2+400,10+$i,$textcolor);
  229.    imageline($traffimage,$movx+4,10+$i,$movx-4+400,10+$i,IMG_COLOR_STYLED);
  230.    imagestring($traffimage,1,$movx-40,6+$i,str_pad(round($stats_maks1-($stats_maks1/4*$n),1)." ".$przedrostek,7," ",STR_PAD_LEFT),$textcolor);
  231.    $n++;
  232.    }
  233.    $red1=imagecolorallocate($traffimage,255,0,0);
  234.    $values=array($movx+401,135-27,$movx+401,135-21,$movx+406,135-24);
  235.    imagefilledpolygon($traffimage, $values, 3, $red1);
  236.    imagestringup($traffimage, 2, 1, $ymax-5, iconv("UTF-8","ISO-8859-2",$user['lastname']." ".$user['name']), $textcolor);
  237.    imagestringup($traffimage, 1, 15, $ymax-5, $node['name']." - ".$node['adres'], $textcolor);
  238.    imagestring($traffimage, 2, 45, $ymax-27, "MAX: ".str_pad(round($dwl_maks/1024,2),7," ",STR_PAD_LEFT)." kB/s",$downloadcolor);
  239.    imagestring($traffimage, 2, 45, $ymax-15, "MAX: ".str_pad(round($upl_maks/1024,2),7," ",STR_PAD_LEFT)." kB/s",$uploadcolor);
  240.    imagestring($traffimage, 2, 165, $ymax-27, iconv("UTF-8","ISO-8859-2","ĹšREDNIA: ").str_pad(round(($result['downavg'])/1024,2),7," ",STR_PAD_LEFT)." kB/s",$downloadcolor);
  241.    imagestring($traffimage, 2, 165, $ymax-15, iconv("UTF-8","ISO-8859-2","ĹšREDNIA: ").str_pad(round(($result['upavg'])/1024,2),7," ",STR_PAD_LEFT)." kB/s",$uploadcolor);
  242.    imagestring($traffimage, 2, 310, $ymax-27, "TERAZ: ".str_pad(round(($lastcount['download'])/(1024*300),2),7," ",STR_PAD_LEFT)." kB/s",$downloadcolor);
  243.    imagestring($traffimage, 2, 310, $ymax-15, "TERAZ: ".str_pad(round(($lastcount['upload'])/(1024*300),2),7," ",STR_PAD_LEFT)." kB/s",$uploadcolor);
  244.    imagestring($traffimage, 2, 440, $ymax-27, "DOWNLOAD",$downloadcolor);
  245.    imagestring($traffimage, 2, 440, $ymax-15, "UPLOAD",$uploadcolor);
  246.  
  247.    imagepng($traffimage);
  248.    imagedestroy($traffimage);  
  249.    fclose($fp);
  250. }


Go to the top of the page
+Quote Post
Foxx
post
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Myślę, że szybciej otrzymasz pomoc jeżeli wykażesz się inicjatywą i wskażesz kod, który jest odpowiedzialny za generowanie opisu osi X. Teraz wymagasz od nas analizy 300 linii kodu dostal.gif
Go to the top of the page
+Quote Post
gabcio
post
Post #3





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 31.08.2006

Ostrzeżenie: (10%)
X----


od 60 lini w duł smile.gif
Go to the top of the page
+Quote Post
Foxx
post
Post #4





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Ok, jesteśmy coraz bliżej. Określ jaka zmienna jest wyświetlana jako opis osi X.
Go to the top of the page
+Quote Post
gabcio
post
Post #5





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 31.08.2006

Ostrzeżenie: (10%)
X----


$przedrostek = Góra

$timehnow=date("H",$currentdts);
$timemnow=date("i",$currentdts);
if($timemnow<="4")

Prawo
Go to the top of the page
+Quote Post
Foxx
post
Post #6





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Zauważ, że zmienna rysowana za pomocą imagestring()" title="Zobacz w manualu PHP" target="_manual to $timehnow:
  1. <?php
  2. imagestring($traffimage,1,$movx+$posx-4,135-20,$timehnow,$textcolor)
  3. ?>

Co się zgadza z wartościami na obrazku (nie przekraczają 24).
I teraz się pojawia pytanie: chcesz żeby tam się wyświetlały nazwy dni, ale może ten skrypt jest dostosowany do wyświetlania godzin? Jeżeli tak, to obawiam się, że Twój kod potrzebuje większej obróbki niż tylko zmiana opisu osi X.
Z jakich danych jest generowany wykres?

Ten post edytował Foxx 23.02.2009, 12:59:32
Go to the top of the page
+Quote Post
gabcio
post
Post #7





Grupa: Zarejestrowani
Postów: 109
Pomógł: 1
Dołączył: 31.08.2006

Ostrzeżenie: (10%)
X----


Z iptables do bazy danych
Go to the top of the page
+Quote Post
Foxx
post
Post #8





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Raczej sam sobie miałeś na to odpowiedzieć. Chodzi mi o to, że jeżeli ten skrypt generuje wykres dla dnia to żeby generował dane dla dni tygodnia nie wystarczy zmienić opis osi X. Jeżeli chcesz go przerobić to lepszym działem byłby dział "oferty". Oczywiście jeżeli jesteś w stanie zmodyfikować go sam to zrób to a jak będziesz miał problemy to pytaj.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:05