Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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

Posty w temacie


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: 20.08.2025 - 04:28