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. }


(IMG:http://furianin.pl/sc.JPG)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
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%)
-----


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

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 03:35