|
| Udskrive en graf ud fra en tekstfil Fra : Stampe |
Dato : 25-05-09 10:10 |
|
Jeg har en temperatur logger som skriver til en tekstfil se:
http://harlvig.dk/test/2006150.log
2006,150,23,40,00,23.00,,, = Året, dag i
året,timen,minuttet,sekundet,temperaturen
altså er målingen fra:
År 2006
Dag 150
Kl. 23:40:00
Temperaturen er 23.00
Findes der en simpel php rutine så jeg kan få 24 timers graf ud af sådan en
tekstfil?
Mvh
Allan
| |
Johan Holst Nielsen (25-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 25-05-09 10:46 |
|
Stampe wrote:
> Jeg har en temperatur logger som skriver til en tekstfil se:
> http://harlvig.dk/test/2006150.log
>
> 2006,150,23,40,00,23.00,,, = Året, dag i
> året,timen,minuttet,sekundet,temperaturen
>
> altså er målingen fra:
> År 2006
> Dag 150
> Kl. 23:40:00
>
> Temperaturen er 23.00
>
> Findes der en simpel php rutine så jeg kan få 24 timers graf ud af sådan
> en tekstfil?
Det nemmeste ville nok være at lave en simpelt parser af filformatet -
og så smide det ind via Google Chart API:
http://code.google.com/apis/chart/
/Johan
| |
Stampe (25-05-2009)
| Kommentar Fra : Stampe |
Dato : 25-05-09 10:59 |
|
"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i meddelelsen
news:4a1a68c0$0$90267$14726298@news.sunsite.dk...
>
> Det nemmeste ville nok være at lave en simpelt parser af filformatet -
> og så smide det ind via Google Chart API:
>
> http://code.google.com/apis/chart/
>
> /Johan
Jeg ved ikke lige hvordan man "parser" min logfil - det skulle også gerne
kunne vises på min hjemmeside
Mvh
Allan
| |
Johan Holst Nielsen (25-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 25-05-09 12:00 |
|
Stampe wrote:
>
> "Johan Holst Nielsen" <spam@phpgeek.dk> skrev i meddelelsen
> news:4a1a68c0$0$90267$14726298@news.sunsite.dk...
>>
>> Det nemmeste ville nok være at lave en simpelt parser af filformatet -
>> og så smide det ind via Google Chart API:
>>
>> http://code.google.com/apis/chart/
>>
>> /Johan
>
> Jeg ved ikke lige hvordan man "parser" min logfil - det skulle også
> gerne kunne vises på min hjemmeside
Har ikke lige tid til at lave et helt script...
Omkring visning på hjemmesiden kan du sagnes gøre det med Google Chart
API - det er blot et <img> hvor src er til google med en masse data i
GET parametre.
Parsing af logfilen kig på
www.php.net/fopen
www.php.net/fgetcsv
Mvh
Johan
| |
Stig Johansen (25-05-2009)
| Kommentar Fra : Stig Johansen |
Dato : 25-05-09 14:52 |
|
Johan Holst Nielsen wrote:
> Omkring visning på hjemmesiden kan du sagnes gøre det med Google Chart
> API - det er blot et <img> hvor src er til google med en masse data i
> GET parametre.
Der er typisk begrænsning på størrelsen af en GET request, varierende fra
512B til 2048B (aht sikkerhed), så det er ikke sikkert det kan lade sig
gøre.
Hvis det var mig, ville jeg nok kigge på noget SVG.
En sådan graf burde ikke kræve voldsomt mange kodelinier.
--
Med venlig hilsen
Stig Johansen
| |
Johan Holst Nielsen (25-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 25-05-09 15:26 |
|
Stig Johansen wrote:
> Johan Holst Nielsen wrote:
>
>> Omkring visning på hjemmesiden kan du sagnes gøre det med Google Chart
>> API - det er blot et <img> hvor src er til google med en masse data i
>> GET parametre.
>
> Der er typisk begrænsning på størrelsen af en GET request, varierende fra
> 512B til 2048B (aht sikkerhed), så det er ikke sikkert det kan lade sig
> gøre.
Tjah Google har noget dataencoding - så det bør ikke være et større
problem.... Det er begrænset hvor mange punkter man skal have på en
chart - hvis der skal være et vis overblik. Det giver ikke mening at
sætte 1000 punkter på et chart der er 1000px bred f.eks.
Se mere:
http://code.google.com/apis/chart/formats.html#encoding_data
>
> Hvis det var mig, ville jeg nok kigge på noget SVG.
> En sådan graf burde ikke kræve voldsomt mange kodelinier.
Svjv skal man stadig bruge browserplugins til SVG - som alle ikke har
(skulle man i hvert fald sidst jeg tjekkede? Er det ændret nu?).
/Johan
| |
Stig Johansen (25-05-2009)
| Kommentar Fra : Stig Johansen |
Dato : 25-05-09 15:50 |
|
Johan Holst Nielsen wrote:
> Tjah Google har noget dataencoding - så det bør ikke være et større
> problem.... Det er begrænset hvor mange punkter man skal have på en
> chart - hvis der skal være et vis overblik. Det giver ikke mening at
> sætte 1000 punkter på et chart der er 1000px bred f.eks.
>
> Se mere:
> http://code.google.com/apis/chart/formats.html#encoding_data
Enig, men hvis man skal til selv at lave encoding går det 'nemme' lidt
fløjten.
Jeg vil mene det er nemmere at fabrikere SVG end at 'base64' encode data.
> Svjv skal man stadig bruge browserplugins til SVG - som alle ikke har
> (skulle man i hvert fald sidst jeg tjekkede? Er det ændret nu?).
Ja, 'en vis herre' sværger åbenbart til VML, hvor andre understøtter SVG.
Det er lidt ærgreligt, for det forhindrer udbredelsen af vektor grafik, som
ellers er ideelt til grafer og den slags.
Men bortset fra det, så skal man have pluging til flash, PDF osv, så hvorfor
ikke også en plugin til SVG (til dem der kun bruger IE).
--
Med venlig hilsen
Stig Johansen
| |
Johan Holst Nielsen (25-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 25-05-09 18:26 |
|
Stig Johansen wrote:
> Johan Holst Nielsen wrote:
>
>> Tjah Google har noget dataencoding - så det bør ikke være et større
>> problem.... Det er begrænset hvor mange punkter man skal have på en
>> chart - hvis der skal være et vis overblik. Det giver ikke mening at
>> sætte 1000 punkter på et chart der er 1000px bred f.eks.
>>
>> Se mere:
>> http://code.google.com/apis/chart/formats.html#encoding_data
>
> Enig, men hvis man skal til selv at lave encoding går det 'nemme' lidt
> fløjten.
> Jeg vil mene det er nemmere at fabrikere SVG end at 'base64' encode data.
Tjah - der er et fiks og færdig JS på siden jeg linkede til. Så synes nu
ikke det er så bøvlet ;)
>> Svjv skal man stadig bruge browserplugins til SVG - som alle ikke har
>> (skulle man i hvert fald sidst jeg tjekkede? Er det ændret nu?).
>
> Ja, 'en vis herre' sværger åbenbart til VML, hvor andre understøtter SVG.
> Det er lidt ærgreligt, for det forhindrer udbredelsen af vektor grafik, som
> ellers er ideelt til grafer og den slags.
Ja - men 'en vis herre' har stadig en meget stor del af browsermarkedet.
Kører selv Linux - så jeg klager ikke over manglende plugin. Men det er
synd for resten.
> Men bortset fra det, så skal man have pluging til flash, PDF osv, så hvorfor
> ikke også en plugin til SVG (til dem der kun bruger IE).
Forskellen mellem Flash / PDF og SVG er at Flash og PDF er "standarder"
for Hr. og Fru Danmark. De kan jo ikke læse en netavis uden at se flash
annoncer (og nej - Hr og Fru Danmark har ikke adblockers ;)). Ligesom de
ikke kan benytte f.eks. eboks, se selvangivelsen via SKAT osv via PDF.
Samme udbredelse nyder SVG ikke. Så bryder mig ikke om sammenligningen -
selvom jeg selvfølgelig også ville forestrække SVG var en udbredt
standard. Man bliver bare nødt til at se sandheden i øjenene - og det er
at SVG ikke er udbredt nok *endnu*.
På den anden side - hvis Allan skal bygge et system som primært bruges
af venner, bekendte, familie - så er SVG sikkert fint nok. Da man i de
fleste tilfælde kan vejlede brugeren til at installere det. Det kan man
blot sjældent med udefrakommende, med mindre man er et respekteret
medie, organ eller lign.
/Johan
| |
Stampe (26-05-2009)
| Kommentar Fra : Stampe |
Dato : 26-05-09 06:08 |
|
"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i meddelelsen
news:4a1ad49a$0$90265$14726298@news.sunsite.dk...
>
> Tjah - der er et fiks og færdig JS på siden jeg linkede til. Så synes nu
> ikke det er så bøvlet ;)
>
Ja jo ok - må lige se om jeg kan få det til at virke, kan ikke rigtig se
hvordan jeg får pillet de ønskede data ud af min tekstfil, men vil arbejde
på det
Mht. SVG - så aner jeg ikke hvad hvad det er -men vil prøve at google mig
lidt frem
Mvh
Allan
| |
Johan Holst Nielsen (26-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 26-05-09 07:54 |
|
Stampe wrote:
> "Johan Holst Nielsen" <spam@phpgeek.dk> skrev i meddelelsen
> news:4a1ad49a$0$90265$14726298@news.sunsite.dk...
>>
>> Tjah - der er et fiks og færdig JS på siden jeg linkede til. Så synes nu
>> ikke det er så bøvlet ;)
>>
> Ja jo ok - må lige se om jeg kan få det til at virke, kan ikke rigtig se
> hvordan jeg får pillet de ønskede data ud af min tekstfil, men vil
> arbejde på det
Stig og jeg kom lige ud i en mere "teoretisk" diskussion - der nok blev
en smule off-topic.
> Mht. SVG - så aner jeg ikke hvad hvad det er -men vil prøve at google
> mig lidt frem
Der er en fin guide her:
http://www.w3schools.com/svg/default.asp
Mvh
Johan
| |
Stig Johansen (26-05-2009)
| Kommentar Fra : Stig Johansen |
Dato : 26-05-09 13:18 |
|
"Johan Holst Nielsen" <spam@phpgeek.dk> wrote in message
news:4a1b91f5$0$90265$14726298@news.sunsite.dk...
> Stig og jeg kom lige ud i en mere "teoretisk" diskussion - der nok blev
> en smule off-topic.
Okææh, så meget offtopic var det vel heller ikke, taget i betragtning af at
man ønsker at lave en graf ud fra en tekstfil.
Men nu tog jeg 'stampe's tekstfil, og lavede en primitiv (SVG) graf:
http://w-o-p-r.dk/test/stampe/svgdemo.asp
Det er uden akser og tics, osv, blot for at illustrere hvordan man man kan
generere SVG ud fra 'ikke så voldsomt mange' linier kode.
Jo, OT er det, for det er lavet i ASP, og vi befinder os i en PHP gruppen,
men kildeteksten til ASP'et er:
......
<%@ LANGUAGE = VBScript %><% Option Explicit %><%
Response.ContentType = "image/svg+xml"
%><?xml version="1.0" standalone="yes"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
" http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
<svg xmlns=" http://www.w3.org/2000/svg"
xmlns:xlink=" http://www.w3.org/1999/xlink"
id="svg-root" width="100%" height="100%" viewBox="0 0 3000 3000"
version="1.1" baseProfile="basic">
<%
Dim Filename
Dim lFile
Dim ThisLine
Dim CoordinatesArray
Dim X,Y
Dim first
Filename = Server.MapPath("2006150.log")
set lFile =
Server.CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName,1)
response.write "<path style=""fill:none;stroke:#00FF00;stroke-width:2"""
first = true
do while not lFile.AtEndOfLine
ThisLine = lFile.readline
CoordinatesArray = split (ThisLine,",")
X = cInt(CoordinatesArray(2)) * 120 + cInt(CoordinatesArray(3)) * 2 +
cInt(CoordinatesArray(4))
Y = 3000 - cInt(CoordinatesArray(5))
if first then
Response.Write " d=""M " + cStr(X) + "," + cStr(Y)
first = false
else
Response.Write "L" + cStr(X) + "," + cStr(Y) + " "
end if
loop
response.write """/></svg>"
set lFile = nothing
%>
......
Det burde være nogenlunde ligetil at 'PHP-ificere'.
--
Med venlig hilsen/Best regards
Stig Johansen
| |
Stig Johansen (26-05-2009)
| Kommentar Fra : Stig Johansen |
Dato : 26-05-09 15:23 |
|
"Stig Johansen" <wopr.dk@gmail.com> wrote in message
news:4a1bddbd$0$90264$14726298@news.sunsite.dk...
He - så lidt underlig ud, så denne linie:
> X = cInt(CoordinatesArray(2)) * 120 + cInt(CoordinatesArray(3)) * 2
+
> cInt(CoordinatesArray(4))
er rettet til
X = cInt(CoordinatesArray(2)) * 120 + cInt(CoordinatesArray(3)) * 2 +
cInt(CoordinatesArray(4))/30
Og så kom jeg i tanke om den spastisk lammede browser (IE6), som mener at
URL'en skal ende på .svg, uagtet MIME typen.
Men ellers kan man blot benytte:
http://w-o-p-r.dk/test/stampe/svgdemo.asp?f=e.svg
Jeg har ikke IE7 eller senere, så jeg ved ikke om 'han' har fået gjort noget
ved det.
--
Med venlig hilsen/Best regards
Stig Johansen
| |
Stig Johansen (26-05-2009)
| Kommentar Fra : Stig Johansen |
Dato : 26-05-09 09:11 |
|
Johan Holst Nielsen wrote:
> Tjah ....
At folk bruger Tjah som indledning gør, at jeg ikke gider at bruge tid på
dem.
> Det er begrænset hvor mange punkter man skal have på en
> chart - hvis der skal være et vis overblik. Det giver ikke mening at
> sætte 1000 punkter på et chart der er 1000px bred f.eks.
Når (hvis) vi snakker SVG, så kan intet være mindre rigtigt end det du
skriver.
Jeg har dig mistænkt for at 'fanget' i rastergrafik, og ikke vektorgrafik.
Bemærk af S'et står for SCALABLE, så man kan sagtens definere et
koordinatsystem, der kun fylder 1000X1000, men indeholder reelle værdier af
XY koordinater, så 998.12345x500.54321 er validt, og scalerer ved zoom.
Prøv at kigge på Adobes SVG plugin til IE - 'and you will see'.
--
Med venlig hilsen
Stig Johansen
| |
Johan Holst Nielsen (26-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 26-05-09 10:39 |
|
Stig Johansen wrote:
> Johan Holst Nielsen wrote:
>
>> Tjah ....
>
> At folk bruger Tjah som indledning gør, at jeg ikke gider at bruge tid på
> dem.
Så mister du meget brugbar viden. Det er som at sætte en spamfilter op
der automatisk sletter alle mails hvor ordet viagra indgår... ikke
specielt intelligent imo.
>> Det er begrænset hvor mange punkter man skal have på en
>> chart - hvis der skal være et vis overblik. Det giver ikke mening at
>> sætte 1000 punkter på et chart der er 1000px bred f.eks.
>
> Når (hvis) vi snakker SVG, så kan intet være mindre rigtigt end det du
> skriver.
Hvis du lader være med at gribe det ud af sammenhængen ville du måske
forstå.... mit svar omkring 1000 punkter var vedrørende Google maps,
hvor du mente det vil være problematisk, at man havde en begrænset
størrelse af GET requested. Det havde overhoved ingen relation til SVG
formatet....
Så lad være med at ligge ord i munden på mig...
> Jeg har dig mistænkt for at 'fanget' i rastergrafik, og ikke vektorgrafik.
Nej - det er indlejret i en sætning omkring Google Maps der som laver
bitmap filer. Jeg er fuldstændig klar over forskellen mellem
raster/bitmap og vektorgrafik.
> Bemærk af S'et står for SCALABLE, så man kan sagtens definere et
> koordinatsystem, der kun fylder 1000X1000, men indeholder reelle værdier af
> XY koordinater, så 998.12345x500.54321 er validt, og scalerer ved zoom.
Ja det er jeg klar over. Har skam arbejdet med SVG mere end én gang...
> Prøv at kigge på Adobes SVG plugin til IE - 'and you will see'.
Jeg kører Linux... så det hjælper ikke meget. Jeg har fuld
understøttelse af SVG.
Jeg kender udemærket SVG plugin'et til IE. Men det hjælper bare ikke
noget hvis man laver en hjemmeside til Hr. og Fru Jensen og fortæller de
skal downloade et plugin. Det mister man besøgende af... Som jeg har
nævnt i et andet indlæg er mit syn positivt på SVG. Jeg mener klar det
vil være super brugbart *hvis* flere IE brugere var med på vognen. Men
det er bare ikke tilfældet.
Derfor ville jeg *aldrig* bruge SVG med mindre der er tale om et
intranet eller en hjemmeside der var beregnet til en meget specifik
målgruppe (f.eks. familie, venner, interessefælter indenfor et snævert
område) - da man i disse tilfælde typisk nemmere kan påvirke brugeren.
Men hvis man henvender sig til en bredere målgruppe, vil jeg stadig mene
det vil være idiotisk at bygge et site op med krav om SVG plugins.
/Johan
| |
Stig Johansen (27-05-2009)
| Kommentar Fra : Stig Johansen |
Dato : 27-05-09 10:18 |
|
Johan Holst Nielsen wrote:
> Stig Johansen wrote:
>> At folk bruger Tjah som indledning gør, at jeg ikke gider at bruge tid på
>> dem.
>
> Så mister du meget brugbar viden. Det er som at sætte en spamfilter op
> der automatisk sletter alle mails hvor ordet viagra indgår... ikke
> specielt intelligent imo.
Som jeg plejer at sige: "The perception is in the eyes of the beholder".
Eller med andre ord: "Hvilken viden mener du jeg mister?"
> Hvis du lader være med at gribe det ud af sammenhængen ville du måske
> forstå.... mit svar omkring 1000 punkter var vedrørende Google maps,
> hvor du mente det vil være problematisk, at man havde en begrænset
> størrelse af GET requested. Det havde overhoved ingen relation til SVG
> formatet....
Nej, men 'stampe' præsenterer en logfil, hvor samples er pr. ½ minut, så
antallet af samples er 24*60*2 - hvordan mener du den passer ned på eks.
1000 px?
> Så lad være med at ligge ord i munden på mig...
Det gør jeg heller ikke, men det skrevne ord er lidt besværligt, så det er
min *opfattelse* af dine skrevne ord.
> Jeg kender udemærket SVG plugin'et til IE. Men det hjælper bare ikke
> noget hvis man laver en hjemmeside til Hr. og Fru Jensen og fortæller de
> skal downloade et plugin.
Hvis det er (dit) kardinalpunktet?
Hvis target audience er Hr. og Fru Jensen, så lav det i VML, som IE har
native understøttelse for.
Ellers lav det med:
IF IE then
VML
else
SVG
END-IF.
> Men hvis man henvender sig til en bredere målgruppe, vil jeg stadig mene
> det vil være idiotisk at bygge et site op med krav om SVG plugins.
Den holdning fatter jeg - rent ud sagt - ikke en skid af.
Du accepterer (tilsyneladende) plugins fra Adobe:
- PDF
- FLASH (ja ja tidligere makromedia)
men ikke SVG som er fra samme virksomhed ..?
--
Med venlig hilsen
Stig Johansen
| |
Johan Holst Nielsen (27-05-2009)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 27-05-09 13:43 |
|
Stig Johansen wrote:
> Johan Holst Nielsen wrote:
>
>> Stig Johansen wrote:
>>> At folk bruger Tjah som indledning gør, at jeg ikke gider at bruge tid på
>>> dem.
>> Så mister du meget brugbar viden. Det er som at sætte en spamfilter op
>> der automatisk sletter alle mails hvor ordet viagra indgår... ikke
>> specielt intelligent imo.
>
> Som jeg plejer at sige: "The perception is in the eyes of the beholder".
> Eller med andre ord: "Hvilken viden mener du jeg mister?"
Det ser ud til du ikke forstår meningen med ordet "tjah" (eller tja som
det staves helt korrekt).
Citat Dansk Sprog Nævn:
"Resultatet af et ja er altid et udsagn med positivt fortegn, men ja
bruges kun som respons på udsagn med positivt fortegn, og altså ikke til
at vende fortegn. Det gælder også jah og tja, som dog bruges til at
udtrykke forbehold over for udsagnets sandhedsværdi, fx fordi den ikke
gælder ubetinget. Jah efterfølges ofte af men."
Eftersom det omhandlede GET requested størrelse, som jeg er enig i har
den begrænsning (hvem er ikke det ;)) - men jeg "udtrykte" forbehold for
det var et problem i forbindelse med Allans opgave.
>> Hvis du lader være med at gribe det ud af sammenhængen ville du måske
>> forstå.... mit svar omkring 1000 punkter var vedrørende Google maps,
>> hvor du mente det vil være problematisk, at man havde en begrænset
>> størrelse af GET requested. Det havde overhoved ingen relation til SVG
>> formatet....
>
> Nej, men 'stampe' præsenterer en logfil, hvor samples er pr. ½ minut, så
> antallet af samples er 24*60*2 - hvordan mener du den passer ned på eks.
> 1000 px?
Hvorfor begrænset det? Så vidt jeg kunne se var det en eksempel logfil?
Kunne sagnes forestille mig man lavede grafer over længere perioder end
24 timer i fremtiden.
Det er altid dumt at begrænse sig på baggrund af "sådan er det nu".
>> Så lad være med at ligge ord i munden på mig...
>
> Det gør jeg heller ikke, men det skrevne ord er lidt besværligt, så det er
> min *opfattelse* af dine skrevne ord.
Så tjek hvad jeg svarer på. Jeg citerer trods alt. Jeg kunne forstå hvis
jeg toppostede.
>> Jeg kender udemærket SVG plugin'et til IE. Men det hjælper bare ikke
>> noget hvis man laver en hjemmeside til Hr. og Fru Jensen og fortæller de
>> skal downloade et plugin.
>
> Hvis det er (dit) kardinalpunktet?
> Hvis target audience er Hr. og Fru Jensen, så lav det i VML, som IE har
> native understøttelse for.
>
> Ellers lav det med:
> IF IE then
> VML
> else
> SVG
> END-IF.
Ja - det vil jeg helt klar mene var bedre - omend mere besværligt end så
meget andet. I så fald ville jeg nok vælge en Flash version - indtil man
kunne skrotte IE brugerne uden SVG :) Men det er såmændt en spørgsmål om
smag og behag.
Dog ville jeg nok finde et SVG-to-SWF tool - og så bruge det - i stedet
for at bruge tid på VML. (Ved dog ikke om der findes SVG-to-VML scripts?)
>> Men hvis man henvender sig til en bredere målgruppe, vil jeg stadig mene
>> det vil være idiotisk at bygge et site op med krav om SVG plugins.
>
> Den holdning fatter jeg - rent ud sagt - ikke en skid af.
> Du accepterer (tilsyneladende) plugins fra Adobe:
> - PDF
> - FLASH (ja ja tidligere makromedia)
> men ikke SVG som er fra samme virksomhed ..?
Det handler intet om virksomheden. Det handler om udbredelsen. Jeg mener
stadig det er tåbeligt at opbygge et website - med krav om brugerne
installerer komponenter.
Jeg har på intet tidspunkt udtrykt mit had overfor SVG. Faktisk har jeg
rost det - hvis du har læst mine indlæg igennem.
Men det hjælper bare ikke at man skal bede brugeren om at installere et
plugin - det kommer man ikke langt med...
/Johan
| |
Bertel Lund Hansen (26-05-2009)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 26-05-09 20:03 |
|
"Stampe" <ask@ SLET ask-service.dk> skrev:
> Jeg har en temperatur logger som skriver til en tekstfil se:
> http://harlvig.dk/test/2006150.log
> 2006,150,23,40,00,23.00,,, = Året, dag i
> året,timen,minuttet,sekundet,temperaturen
Data kan trækkes ud sådan:
$loglines=file('2006150.log');
foreach ($loglines as $line) {
list($year,$day,$hour,$minute,$second,$temperature)=explode(',',$line);
do_something_smart_with_data();
}
Med et PHP-system som sikkert er installeret på din server, kan
du lave grafik. Systemet hedder GD, og der står om det her i manualen:
http://dk2.php.net/manual/en/function.gd-info.php
Princippet er at man opretter en separat PHP-fil der genererer et billede,
og dette billede lægges så i HTML-filen med et img-tag. Her er en linje
echo "<div><img src='takstkurver.php?minutter=$minute' width='200' height='300' alt='Takstkurver'></div>\n";
som jeg bruger på denne her side:
http://bertel.lundhansen.dk/?page=telefoni
Her er koden til takstkurver.php. Det er måske lidt indviklet, og jeg orker
ikke at forenkle det, men du kan se hvordan man kan tegne diverse grafiske elementer.
================ Kode ================
<?
function grafer ($grafenhed) {
GLOBAL $im, $udbydere;
$offset=20;
$maxy=GRAFY-$offset;
$ypix=180/$grafenhed*ZOOM;
$xpix=$ypix*2;
$step=1/ZOOM;
// Første kald sætter baggrunden (uanset hvad den kaldes):
$white = ImageColorAllocate ($im,255,255,255);
$black = ImageColorAllocate ($im,0,0,0);
$farve = Array();
foreach ($udbydere as $nr => $udbyder) {
$temp=explode('.',substr($udbyder->farve,1));
$farve[]=ImageColorAllocate ($im,hexdec($temp[0]),hexdec($temp[1]),hexdec($temp[2]));
}
imageline($im,0,$maxy,GRAFX,$maxy,$black);
for ($min=0; $min<$grafenhed/TAKSTPERIODE; ++$min) {
$x=$min*60*$xpix+$offset;
imageline($im,$x,$maxy,$x,$maxy+10,$black);
imagestring($im,2,$x+10,$maxy+2,$min,$black);
}
--$min;
imagestring($im,2,$x+10,$maxy+2,$min.' min.',$black);
imageline($im,$offset,GRAFY,$offset,0,$black);
for ($ore=50; $ore<$maxy/$ypix; $ore+=50) {
$y=$maxy-$ore*$ypix;
if ($ore%100) imageline($im,15,$y,$offset,$y,$black);
else {
imageline($im,5,$y,$offset,$y,$black);
imagestring($im,2,0,$y,$ore/100,$black);
}
}
imagestring($im,2,0,0,'kr.',$black);
imageline($im,0,11,4,4,$black);
foreach ($udbydere as $f => $udbyder) {
$farv=$farve[$f];
for ($sek=0; $sek<$grafenhed; $sek+=$step)
for ($nr=0; $nr<AFTALETYPER; ++$nr) {
list($enhed,$takst,$opkald,$takstfaktor)=$udbyder->aftale[$nr];
if ($enhed) {
$takstfaktor=$takst/TAKSTPERIODE*$enhed;
$p=floor($sek/$enhed);
if ($sek%$enhed) ++$p;
$pris=$p*$takstfaktor+$opkald;
$y=$maxy-$pris*$ypix;
imagesetpixel($im,$sek*$xpix+$offset,$y,$farv);
}
}
}
}
require 'telefonini.inc';
header ("Content-type: image/png");
$im = @ImageCreate (GRAFX, GRAFY) or die ("Cannot Initialize new GD image stream");
grafer($_GET['minutter']*60);
ImagePng ($im);
ImageDestroy($im);
?>
================ Kode slut ================
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Stampe (27-05-2009)
| Kommentar Fra : Stampe |
Dato : 27-05-09 06:10 |
|
"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev i meddelelsen
news:sheo15pivt4480cta4u187rvhpivh6v9mk@news.stofanet.dk...
> "Stampe" <ask@ SLET ask-service.dk> skrev:
>
>> Jeg har en temperatur logger som skriver til en tekstfil se:
>> http://harlvig.dk/test/2006150.log
>
>> 2006,150,23,40,00,23.00,,, = Året, dag i
>> året,timen,minuttet,sekundet,temperaturen
>
> Data kan trækkes ud sådan:
>
> $loglines=file('2006150.log');
> foreach ($loglines as $line) {
> list($year,$day,$hour,$minute,$second,$temperature)=explode(',',$line);
> do_something_smart_with_data();
> }
>
> Med et PHP-system som sikkert er installeret på din server, kan
> du lave grafik. Systemet hedder GD, og der står om det her i manualen:
>
> http://dk2.php.net/manual/en/function.gd-info.php
>
> Princippet er at man opretter en separat PHP-fil der genererer et billede,
> og dette billede lægges så i HTML-filen med et img-tag. Her er en linje
>
> echo "<div><img src='takstkurver.php?minutter=$minute' width='200'
> height='300' alt='Takstkurver'></div>\n";
>
> som jeg bruger på denne her side:
>
> http://bertel.lundhansen.dk/?page=telefoni
>
> Her er koden til takstkurver.php. Det er måske lidt indviklet, og jeg
> orker
> ikke at forenkle det, men du kan se hvordan man kan tegne diverse grafiske
> elementer.
>
> ================ Kode ================
> <?
> function grafer ($grafenhed) {
> GLOBAL $im, $udbydere;
> $offset=20;
> $maxy=GRAFY-$offset;
> $ypix=180/$grafenhed*ZOOM;
> $xpix=$ypix*2;
> $step=1/ZOOM;
> // Første kald sætter baggrunden (uanset hvad den kaldes):
> $white = ImageColorAllocate ($im,255,255,255);
> $black = ImageColorAllocate ($im,0,0,0);
> $farve = Array();
> foreach ($udbydere as $nr => $udbyder) {
> $temp=explode('.',substr($udbyder->farve,1));
> $farve[]=ImageColorAllocate
> ($im,hexdec($temp[0]),hexdec($temp[1]),hexdec($temp[2]));
> }
> imageline($im,0,$maxy,GRAFX,$maxy,$black);
> for ($min=0; $min<$grafenhed/TAKSTPERIODE; ++$min) {
> $x=$min*60*$xpix+$offset;
> imageline($im,$x,$maxy,$x,$maxy+10,$black);
> imagestring($im,2,$x+10,$maxy+2,$min,$black);
> }
> --$min;
> imagestring($im,2,$x+10,$maxy+2,$min.' min.',$black);
> imageline($im,$offset,GRAFY,$offset,0,$black);
> for ($ore=50; $ore<$maxy/$ypix; $ore+=50) {
> $y=$maxy-$ore*$ypix;
> if ($ore%100) imageline($im,15,$y,$offset,$y,$black);
> else {
> imageline($im,5,$y,$offset,$y,$black);
> imagestring($im,2,0,$y,$ore/100,$black);
> }
> }
> imagestring($im,2,0,0,'kr.',$black);
> imageline($im,0,11,4,4,$black);
> foreach ($udbydere as $f => $udbyder) {
> $farv=$farve[$f];
> for ($sek=0; $sek<$grafenhed; $sek+=$step)
> for ($nr=0; $nr<AFTALETYPER; ++$nr) {
> list($enhed,$takst,$opkald,$takstfaktor)=$udbyder->aftale[$nr];
> if ($enhed) {
> $takstfaktor=$takst/TAKSTPERIODE*$enhed;
> $p=floor($sek/$enhed);
> if ($sek%$enhed) ++$p;
> $pris=$p*$takstfaktor+$opkald;
> $y=$maxy-$pris*$ypix;
> imagesetpixel($im,$sek*$xpix+$offset,$y,$farv);
> }
> }
> }
> }
>
> require 'telefonini.inc';
> header ("Content-type: image/png");
> $im = @ImageCreate (GRAFX, GRAFY) or die ("Cannot Initialize new GD image
> stream");
> grafer($_GET['minutter']*60);
> ImagePng ($im);
> ImageDestroy($im);
> ?>
> ================ Kode slut ================
>
> --
> Bertel
> http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Jeg siger tak for jeres hjælp - der er noget og kikke på - jeg vender
tilbage nå jeg har fumlet lidt med tingene
Mvh
Allan
| |
|
|